[I moved this to devel because now it's just technical]
> I myself have utterly no clue off the top of my head how an incoming
> MIDI event gets recorded and turned into a Rosegarden event. I've never
> worked on any of that at all. I can't, therefore, just go glance
> through the code to see if that stuff is there or not.
I was just looking at that, so I'll summarize what we do while it's fresh
in my mind.
Basically, we pass program changes all around but never write them into
segments as Events. That didn't change with floating channels.
First, AlsaDriver translates them from ALSA to MappedEvent. For output,
it translates them back to ALSA. Outside of those few functions, we only
pass around lists of MappedEvents. So a program change is just one thing
in a list of MappedEvents.
Then RosegardenSequencer gets the list. It sends it to various places,
copying it if needed.
For playthru, lists of MappedEvents are sent to ControlBlock, which
doesn't do anything special for program changes. ControlBlock sends them
back out just as if they were from a Segment.
For recording, lists of MappedEvents are sent to
RosegardenDocument::insertRecordedMidi, which does the rest. It figures
out which segment(s) to record to, translates MappedEvents to Events, and
inserts them.
Some of this is before my time so I may be missing some subtleties, but
that's it in a nutshell.
Tom Breton (Tehom)
------------------------------------------------------------------------------
Learn the latest--Visual Studio 2012, SharePoint 2013, SQL 2012, more!
Discover the easy way to master current and previous Microsoft technologies
and advance your career. Get an incredible 1,500+ hours of step-by-step
tutorial videos with LearnDevNow. Subscribe today and save!
http://pubads.g.doubleclick.net/gampad/clk?id=58041391&iu=/4140/ostg.clktrk
_______________________________________________
Rosegarden-devel mailing list
[email protected] - use the link below to unsubscribe
https://lists.sourceforge.net/lists/listinfo/rosegarden-devel