Auszug aus einer Off-List-Mail:
------------- Jackd ist ein Stück Software, das aus der professionellen Musikszene kommt, und (sehr kleine) Puffer per Callback verwaltet.
jacjd ist gewissermaßen Kontact _für Profis_ .
Beispiel: Buffergröße: 128 Byte Samplerate: 48 kHz d.h. ein "Soundatom" ist 3 ms lang.
Ich starte Jackd und muß sicherstellen, daß er _zuverlässig_ alle <3ms aufgerufen wird, da sonst der Puffer zu leer oder zu voll ist (X-run)
Applikationen melden ihren Puffer und ihre Weiterschaltfuntion bei Jackd an und Jackd holt sich ab, was er braucht.
Im Standardfall ist jackd per ALSA an _eine_ Soundkarte mit ihrem Quartz gekoppelt. Die Soundkarte stellt irgenwannn (per Interrupt) fest "jackd gib mir jetzt Sound ", worauf jackd im Prinzip sagt "OK, ich bin in der 2.ms nach Rescheduling, wir können 86 Byte austauschen (Senden und Empfangen!)." (Erste Ebene)
Etwas später (da das Scheduling von jackd nicht am Soundkartenquartz hängt), werden diese 86 Byte in die Puffer der angemeldeten und mit der Soundkarte verbundenen Applikationen "verrechnet". Gleichzeitig wird allen Applikationen mitgeteilt: "Nächstes Soundatom prozessieren". (Zweite Ebene)
D.h. zwischen Applikationen, die senden und empfangen, habe ich das Soundatom als Verzögerung. Durch "intelligent Design" kaskadieren sich diese Zeiten aber (normalerweise) nicht. Denke hier an eine aufwendige Filterbank.
Cool!
Netjack arbeite so, daß er sich per UDP in den Master-Jackd verbindet, der seinerseits wieder am Quartz der Soundkarte hängt. 1 Soundatom Verzögerung zwischen zwei beliebigen Rechnern, ausfallsicher! (Die Soundkarte des Slaves läßt sich nur mit ein paar Tricks und "ohne Garantie" da hinein integrieren. Die Quartze der Soundkarten sind ja i.a. nicht synchronisiert, d.h. es kann dadurch zu "Aussetzern" beim Slave kommen.)
Noch cooler!
Für gute Trommler sind (IMHO) 12 ms bemerkbar. Größere Zeiten werden störend empfunden.
Bernhard