Tom: Thank you very much for figuring this out, and fixing the problem. Good work!
Let me know when the fix is in, so I can generate my own version of Rosegarden that will preserve the settings. I think if I once re-save these pieces with the new version (with the pan/volume settings preserved), the un-fixed release version will read them okay, so my users will not get the demo-pieces with incorrect pan/volume settings (which sound bad). The testing I have done so far suggests that if I were to laboriously re-edit the pan/volume settings to the correct values (using the released Rosegarden 12.04), and re-save them, that version of Rosegarden will successfully read (and preserve) the settings. Do you think my observations/suppositions are correct? - Aere On Mon, 2012-10-22 at 13:14 -0400, Tom Breton (Tehom) wrote: > I have apparently found and fixed the problem. > > Short summary: > > When we reset connection, we were inappropriately propagating controller > settings to instruments. The fix reads Aere's demo file perfectly, with > nuanced pans and volumes. > > What was happening: > > Not too long ago, I made MidiDevice react to connection resets. That > fixed certain bugs like expression being reset to 0. But the code it > called sometimes also reset some Instruments settings. My fault for > assuming. > > * Connection resets call Device::refreshForConnection, to MidiDevice:: > refreshForConnection. > * Which calls generateDefaultControllers. That figures out new defaults > for the device and calls addControlParameter to add them. > * But addControlParameter does more than that: If > isVisibleControlParameter(con) is true, it also propagates the controller > value to Instruments (calls addControlToInstrument). > > The fix: > > * addControlParameter (both signatures) has a new parameter, bool > propagateToInstruments. > * generateDefaultControllers passes false. I believe that's always > correct, since it's only called in MidiDevice ctors which then call > deviceToInstrControllerPush and in refreshForConnection. > * Other calls to addControlParameter pass true to keep their original > semantics. > * I have doubts about RoseXmlHandler, since it's just reading a > Controllable device at that point so why would it change instruments > settings? But I conservatively left it with the original semantics. > > I will (first get up to speed with the new Sourceforge and then) push this > fix. > > Tom Breton (Tehom) > > -- Sincerely, AereSincerely, Aere Sincerely, Aere ------------------------------------------------------------------------------ Everyone hates slow websites. So do we. Make your web apps faster with AppDynamics Download AppDynamics Lite for free today: http://p.sf.net/sfu/appdyn_sfd2d_oct _______________________________________________ Rosegarden-devel mailing list [email protected] - use the link below to unsubscribe https://lists.sourceforge.net/lists/listinfo/rosegarden-devel
