> I actually suspect it won't be too hard to code.  (Famous last words)

Famous last words indeed.  I tracked it down, and I have to completely
take that back.  Well, it would be easy - remove a comment - but it would
re-introduce an old bug.

Here's the affected chain:
 * Starts at MIDIInstrumentParameterPanel
 * To Instrument::setProgram
 * To ControlBlock::instrumentChangedProgram
 * To ControlBlock::makeChannelReady
 * To StudioControl::sendChannelSetup
 * To StudioControl::sendMappedEventList
 * To RosegardenSequencer::processMappedEvent
   * Puts the relevant events into m_asyncOutQueue

That all works.  The problem is that m_asyncOutQueue is handled by
RosegardenSequencer::processAsynchronousEvents, which doesn't get called
while recording.  SequencerThread::run only calls it while playing.

And that's more serious than it looks.  We used to call
processAsynchronousEvents while recording, but removed it to fix Bug
#3542166.  "This line can occasionally steal MIDI events that are needed
by processRecordedMidi()" And let me take a moment to thank whoever
commented Bug #3542166 so nicely in SequencerThread::run.

So having made it all the way to the outgoing queue, the event is blocked
from the hardware.

Michael had it right, "Holy crap, Batman".  I do hate leaving regressions
unfixed, and if there's real demand for this, I could probably design
around the problem.

        Tom Breton (Tehom)





------------------------------------------------------------------------------
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-user mailing list
[email protected] - use the link below to unsubscribe
https://lists.sourceforge.net/lists/listinfo/rosegarden-user

Reply via email to