Re: Midi2 handling of SysEx data

"Matthijs Hollemans" <[email protected]> Sun, 1 Feb 2004 14:33:25 +0100
Newsgroups gmane.os.openbeos.midi
Organization All Your Software
Message-ID <02c601c3e8c7$f8950ec0$2101a8c0@sputnik>
Martijn wrote:
> One thing I never quite understood is the 'atomic' flag. IIRC the MIDI
> message callbacks are only called for data with atomic =3D=3D true, as =
you
> are doing here also. For large SysEx messages it would make sense to
> send them non-atomically, but this causes them to be ignored by most
> (probably all) applications...

Yes, BMidiLocalConsumer::Data() only calls the hook functions if atomic i=
s
true. If you want to send a non-atomic message, you have to override Data=
()
to process it yourself. There is no protocol for doing that, so it would
only work within your own application, I suppose.

If I had to guess for the reason there is an atomic flag, it would be thi=
s:
the Midi Kit doesn't allow SysEx messages to be interleaved by real-time
messages. That is inherent to its design and very hard to fix. By sending
the SysEx non-atomically you can fake this, but you have to reconstruct t=
he
SysEx manually. Not very convenient, and as you say, most applications wi=
ll
probably ignore this.

-Matthijs