By "sequencer level", I'm not sure what you mean.

Sorry, force of habit - I still think of them as two applications...

As MappedEvents come into AlsaDriver, the channel is always the recorded
channel, accessed thru MappedEvent::getRecordedChannel().  That used to be
only for recorded notes, now outgoing notes set it too.

So to be clear if I want to find the MIDI channel of a Note On I use getRecordedChannel() too?  And if I record a Note On I want to set the same property in a new MappedEvent before passing that back?
Or do you mean before that, how the channel number is found for it?  The
dump() methods for MappedEventBuffer descendants do it in various ways.
For "normal" events (not time signatures etc), they use a ChannelManager
which figures it out.

Thanks, this will be useful too.  I've been so far studiously ignoring Devices/Instruments but I need to tie this up soon.
On more general lines, the page may be
of some help.  It walks you through the whole process of how a note
becomes a sound.

Great, that was the page I was looking for earlier.  Should be enough to help me make a bit of progress.