With the release of Jack 0.109 we now have a (hopefully) stable API for midi-over-jack. This set me to consider what would be required to modify Aeolus to use this system. And I did not like the conclusions.
Is it a good idea to insert a 30-year old data format that mixes real-time and general data on a single stream into a real-time audio processing API ? I don't think so. 1. Note on/off and controller events now can be 'sample accurate'. That's nice to have. But a) they are not and never will be 'sample accurate' if they come from a HW midi device, and b) if they are generated in software then you can have, and for some applications you actually want much more finer grained timestamps and controller values. So it's a solution that in one case is plain overkill, and in the other it's just not good enough. 2. *All* MIDI data now has to pass through the RT-audio audio thread, even if it's not related to any RT operations at all, and in many cases, not even meant for the receiving application. What is the poor process callback to do with sysex memory dumps, sample downloads, and in most cases, even program changes ? The only thing it can do is get rid of this ballast as fast as possible, dumping it in a buffer to be processed by some lower-priority process, and hoping it will not be blocked or forced to discard data. Forcing a critical RT-thread to waste its time in this way is IMHO not good program design, not even if the overhead can be tolerated. That sort of data should never go there. Some sort of solution could be to let the MIDI backend do at least part of the filtering - it could have several jack-midi ports corresponding to a single raw midi input and e.g. separate note on/off, controller events, and sysex messages. An app that wants to receive all can still do so without any significant overhead, it just needs a few more ports. And once e,g. note on/off and controller updates have dedicated ports, there is no more need to keep the MIDI format with all its limitations. This will be enough for some flames, so I'll stop here :-) -- FA Laboratorio di Acustica ed Elettroacustica Parma, Italia Lascia la spina, cogli la rosa. _______________________________________________ Linux-audio-dev mailing list [email protected] http://lists.linuxaudio.org/mailman/listinfo/linux-audio-dev
