[LAD] automation on Linux (modular approach)

Philipp hollunder at lavabit.com
Fri Mar 26 08:46:59 UTC 2010


Excerpts from fons's message of 2010-03-25 11:22:40 +0100:
> On Thu, Mar 25, 2010 at 10:19:50AM +0100, Philipp wrote:
> 
> > Very strange, -Xraw is said to perform better than -Xseq.
> > Maybe there's a difference between outboard and software?
> > 
> > In software land jack midi is the clear winner, -Xraw is said to perform
> > better than -Xseq, so if it's different for outboard gear, where does
> > the difference come from?
> 
> I haven't looked closely at the MIDI code in Jack's Alsa
> backend, so I can't tell. But AFAIK
> 
> 1. Alsa's Raw interface does not provide scheduling of
>    events to be transmitted at some particular time,
>    nor timestamps on received events.
> 
>    If timing is important to your use, you have to do
>    it yourself, by calling the write() function at the
>    right time, and by reading some timer for received
>    data. 
> 
>    Assuming that the backend is not doing this, event
>    timing would be quantised to audio period boundaries.
>    Note that doing your own timing in this case requires
>    a separate thread - the backend as seem from Jack's
>    engine must never wait, except for audio period 
>    boundaries.   
> 
>    Also to ensure immediate transmission when calling
>    the write() function, the caller has to either open
>    the device with the SYNC flag set, or use the drain()
>    function. Failure to do either could explain the very
>    large quantisation I observed with the raw interface
>    - it leaves it up to the Alsa code when to transfer
>    data from user space to kernel (driver) space, and
>    this decision will probably be based on the number
>    of bytes waiting etc.
> 
> 2. The Alsa Sequencer interface allows to put a timestamp
>    on transmitted data, and then Alsa will ensure it gets
>    transmitted at the right time. It will also provide   
>    timestamps on received data.
> 
>   
> Ciao,
> 
> -- 
> FA
> 
> O tu, che porte, correndo si ?
> E guerra e morte !

Thanks Fons.
It's a bit of technical detail overload for me, but in essence, if I got
it right:
Alsa sequencer does timestamping/scheduling.
Jack midi does it as well, probably more accurate.
Raw doesn't do it at all.

Consequences:
..there are so many possible combinations here, especially with
a2jmidid in the equation, and they'd need to be tested :)




More information about the Linux-audio-dev mailing list