On Wed, 2011-12-28 at 14:35 -0500, Paul Davis wrote:
[...]
None of the other APIs that you've mentioned have
this property, and
nor do any of the Windows MIDI APIs or CoreMIDI.
this means that you face opposing issues depending on which API you
choose to use:
* if you use JACK:
- MIDI data is trivially available to alter synthesis done
during process()
- MIDI data needs to be moved across thread boundaries to be
useful outside of process()
* if you use ALSA, portmidi, rtmidi, CoreMIDI or anything else
- MIDI data to be used for synthesis has to be moved across
thread boundaries
- MIDI data used for other purposes can often be used in the
same thread it was received in,
though not always.
Also, in both cases, there is a strong and precise correlation between
MIDI time stamps and audio time for Jack MIDI, and not for the other
APIs (which may be useful even if you do your processing in another
thread).
-dr