Stéphane Letz wrote:



Good question....

I would say that one the may problem is that jack MIDI does not has the concept of time-stamps in the "future" . The Jack MIDI "events" are received in real-time (similar to what MidiShare does with the Receive callback concepts) but have also to be delivered in real-time. In the absence of any scheduling mechanism, I don't think the MidiShare API could be re-built on top of the underlying Jack MIDI buffer transports system.

I did not look at the jack midi API yet but what do you mean with time-stamps in future ? timestamped MIDI events relative to the current audio fragment or in future in general, eg deliver this midi event
in 100000 samples starting from the current position ?

I think it's probably enough that jack provides the former.
eg my audio fragment is 128 frames
note on ch 1, note 60 velocity 100 at frame 20
note on ch 1, note  64 velocity 80 at frame 100

so the timestamp is always between 0 and 127 (fragmentsize).

AFAIK VST does it what way and sequencers are perfectly fine with that scheme.

I don't believe the future timestamping (with timestamp > fragmentsize) provides many advantages
since it leads to long queues and poor interactivity.
Eg if I want to modify the midi data in real time the first approach works better since the latency of the modifications to the midi data becoming audible will be only 1-2 audio fragments.

I think that the argument of needing a kernel based midi API that timestamps event is the future because the user space processes cannot provide decent timing is moot these days because of the excellent RT performance of Linux and that often sound generation is internal (eg virtual midi instruments/samplers) so having jack that handles midi+audio can provide better timing (sample accuracy) than the ALSA sequencer and simplifies the programming of virtual midi synths/samplers. (no RT midi sensing thread etc). Look at VST: 2 simple callbacks: processEvents() and process() to implement sample accurate virtual instruments.

Thought ?

cheers,
Benno




Reply via email to