[LAD] send midi message

Paul Davis paul at linuxaudiosystems.com
Sun Jan 8 15:28:23 UTC 2012

On Sun, Jan 8, 2012 at 6:14 AM, Pedro Lopez-Cabanillas
<pedro.lopez.cabanillas at gmail.com> wrote:

>> I've always thought that Jack MIDI is easier to program and provides
>> better jitter guarantees, but you may see things differently.
> It is designed to subordinate MIDI messages to digital audio in real time. For
> these use cases it may fit well. Pretending that it fulfills the needs of any
> other use case where MIDI may be involved is only hype and propaganda.

this is bullshit, pure and simple.

there is no MIDI API (on Linux or anywhere else, not considering
plugin APIs) that ensures the delivery of MIDI in the same thread as
audio processing. this means that if you are doing synthesis based on
MIDI data, which after all is the original purpose that MIDI was
intended for,  and you're not using JACK then you face issues of
either latency or jitter (or both). JACK MIDI aims to solve those
problems at the same time as offering developers (and users) the same
abstractions and application design and interface as they would use
for audio. Given that MIDI's primary purpose has been to drive and
control audio synthesis, that seems entirely appropriate.

Now, should you want to use MIDI for some entirely different purpose -
for example, the subsets/extensions of MIDI such as show control or
machine control, then its certainly true that JACK MIDI isn't really
the idea API for that. This would also apply if you wanted to use MIDI
to control automated equipment in your house.

Its also the case that if you are sending pre-existing MIDI data, then
JACK MIDI is somewhat more cumbersome than the type of API like
ALSA's, which allows you queue up a huge chunk of MIDI data and have
its delivery taken care of for you. Somebody could easily provide a
wrapper for this around JACK MIDI, but it hasn't happened, I suspect
because most things that send MIDI are not actually "MIDI file
players" and the "file player" type of application is already well
addressed with ALSA-based utilities. For sequencer applications like
Ardour, Muse, QTractor, Rosegarden and so on, the ALSA API actually
creates an entire additional layer ot complication if you want precise
synchronization with audio synthesis.

So, I'm not precisely sure what other use cases you see for MIDI
besides one that intimately links MIDI with audio data in real time,
but no matter what they are, this such an overwhelmingly common and
dominant use case that JACK MIDI's model of things appears to me
entirely appropriate and very far from hype and propaganda.

Yes, its true that it would have been better not to create a new API.
But if you talk to the people involved in the original design of the
ALSA sequencer, they acknowledge that for the last 6-7 years at least,
it could have been in user space and probably should have been. Nobody
is willing to put the time in to change that, and so ...

More information about the Linux-audio-dev mailing list