[openbeos-midi] Re: Midi2 handling of SysEx data

  • From: "Matthijs Hollemans" <matthijs@xxxxxxxxxxxxxxxxxxx>
  • To: <openbeos-midi@xxxxxxxxxxxxx>
  • Date: Sun, 1 Feb 2004 14:33:25 +0100

Martijn wrote:
> One thing I never quite understood is the 'atomic' flag. IIRC the MIDI
> message callbacks are only called for data with atomic == 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 is
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 this:
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 the
SysEx manually. Not very convenient, and as you say, most applications will
probably ignore this.

-Matthijs


Other related posts: