Ubuntu 12.04 „Precise Pangolin“
Ubuntu 10.04 „Lucid Lynx“
Jack ist ein Soundserver mit niedrigen Latenzen (Verzögerungszeiten) für POSIX-konforme Betriebssysteme wie GNU/Linux oder Apple Mac OS X. Es kann eine Anzahl von Programmen sowohl mit Audiogeräten als auch untereinander verbinden. Z.B. kann ein erstes Abspielprogramm mit einem Streamserver verbunden, gleichzeitig ein Mikrofon mit Audacity verbunden und auch noch ein zweites Abspielprogramm mit dem Lautsprecher zum Anhören verbunden werden. Jack wurde von Grund auf für den professionellen Einsatz konzipiert, wobei zwei Ziele besondere Bedeutung hatten: Synchronität aller Clients und niedrigste Latenzen.
Was unterscheidet Jack von Soundsystemen auf anderen Betriebssystemen?
CoreAudio, das Audio-API von Mac OS X ähnelt Jack in technischer Hinsicht, ermöglicht aber anders als Jack kein Routing zwischen Audioanwendungen. Core-Audio beinhaltet auch Hardwaretreiber, während Jack auf einer höheren Ebene (ALSA/OSS/PortAudio) ansetzt.
ASIO ist ein Treibersystem zum Ersatz der nativen Systeme von Windows und MacOS. Es ermöglicht niedrige Latenzen, kann aber Anwendungen anders als Jack nicht untereinander verbinden.
ReWire ist ein API, das die Kommunikation von Audioanwendungen untereinander ermöglicht. Es ist für Windows und MacOS verfügbar und ähnelt Jack insofern, als es ebenfalls Routing zwischen Anwendungen ermöglicht. Allerdings erlaubt es keine vollkommen voneinander unabhängigen Prozesse und hat einige Einschränkungen ("bis zu 64 Kanäle" usw).
Folgende Pakete müssen installiert [1] werden:
jackd
qjackctl (universe, optionale GUI zum Starten, Stoppen und Einstellen )
mit apturl
Paketliste zum Kopieren:
sudo apt-get install jackd qjackctl
sudo aptitude install jackd qjackctl
Jack ist ein Kommandozeilenprogramm. Man kann es bei Bedarf automatisch starten lassen, zumindest zur Einrichtung ist eine graphische Oberfläche aber hilfreich. QJackCtl bietet eine komfortable Oberfläche für Konfiguration und Überwachung sowie eine Patchbay zum Verschalten der Clients. Sollte Jack sich nicht starten lassen, kann das an der falschen Einstellung liegen, welche bei QJackCtl unter "Setup..." vorgenommen wird. Es kann aber auch sein, dass benötigte Sound-Module nicht geladen sind. Hier hilft eventuell der entsprechende Eintrag in /etc/modules. Unter "Connect" können die einzelnen Audioanwendungen und -geräte beliebig miteinander verbunden werden. Die mit Jack benutzten Programme müssen in den jeweiligen Einstellungen auf Jack eingestellt sein, wenn sie dafür eine Schnittstelle haben. Rechts ein Beispielfoto, wie mit Audacity unter Jack mit Jackplug ein Internet-Telefonie-Interview aufgenommen werden kann (wofür vorher der Gesprächspartner zustimmen muss).
Für den Betrieb mit sehr niedrigen Latenzen kann der Einsatz eines speziellen Kernel nötig sein. Außerdem kann die Nutzung des Realtime-LSM-Moduls (bis Kernel 2.6.13) oder einer erweiterten libpam (ab Kernel 2.6.14) nötig sein, um auch als Anwender Echtzeitpriorität zu bekommen. Siehe jeweils Tonstudio/Konfiguration.
Für den Echtzeitbetrieb von Jack ist kein Echtzeitkernel notwendig. Ein normaler Kernel kann allerdings bei sehr niedriger Latenz von Jack und hoher CPU-Last Tonaussetzer verursachen.
Um mit Flash10 und Jack Sound zu haben bietet es sich an das default audio Signal direkt zu jack zu routen. Somit werden auch andere Applikationen, die direkt mit Alsa-OSS kommunizieren, zu jack geleitet. Durch ein paar Modifikationen[3] an der .asoundrc sollte dies funktionieren:
# taken from http://www.pseudoberries.com/blog/?p=166 # use this as default pcm.!default { type plug slave { pcm "jack" } } ctl.mixer0 { type hw card 1 # muss anhand "aplay -l" angepasst werden } # pcm type jack pcm.jack { type jack playback_ports { 0 system:playback_1 1 system:playback_2 } capture_ports { 0 system:capture_1 1 system:capture_2 } }
Dieses Verhalten liegt an ALSA, da es die Module für die Soundkarten nicht immer in derselben Reihenfolge lädt. Zur Lösung kann man die Hinweise in Sound Problembehebung beachten oder jack mit einem anderen Eingangsgerät bzw. Ausgabegerät starten:
"PCM":CARD="Kartenname",DEV="Device"
"PCM", "Kartenname" und "Device" müssen dabei durch die richtigen Werte ersetzt werden. Die verfügbaren Werte listet
aplay -L
auf. Alternativ ist auch dieses Eingangs- bzw. Ausgabegerät möglich:
hw:"NAME"
"NAME" muss dabei durch den richtigen Wert ersetzt werden. Diesen listet:
cat /proc/asound/cards
.
Also ist bei folgender Ausgabe z.B. "NAME"="XFi":
... 2 [XFi ]: SB-XFi - Creative X-Fi Creative X-Fi 20K1 Unknown ...
Falls man zwei Soundkarten verwenden möchte, muss man nach dem Starten von jack noch alsa_out
aufrufen.
Man ruft dafür in der Konsole den folgenden Befehl auf:
alsa_out -d SOUNDKARTE -q 0 &
für Ausgangskanäle und
alsa_in -d SOUNDKARTE -q 0 &
für Eingangskanäle.
SOUNDKARTE muss dabei durch hw:NUMMER
oder hw:NAME
ersetzt werden, wobei die Nummer bzw. der Name dieselbe wie bei
cat /proc/asound/cards
ist (ein Beispiel findet sich weiter oben)
oder man verwendet den ebenfalls oben genannten Ausdruck, den
aplay -L
auflistet.
Tonstudio - Programme mit Jack-Schnittstelle
JACK Audio Connection Kit - Ergänzungen zu graphischen Werkzeugen rund um jack
Rosegarden - Bearbeitungssoftware für Notensätze, verbunden mit einem Audio- und MIDI-Sequenzer