ubuntuusers.de

ubuntuusers.deWikijack

jack

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

Wiki/Icons/sound.png Jack {en} 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).

Jack installieren

Folgende Pakete müssen installiert [1] werden:

  • jackd

  • qjackctl (universe, optionale GUI zum Starten, Stoppen und Einstellen )

Wiki/Vorlagen/Installbutton/button.png mit apturl

Paketliste zum Kopieren:

sudo apt-get install jackd qjackctl 

sudo aptitude install jackd qjackctl 

Jack steuern

telinterview.png 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).

Echtzeitpriorität

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.

Hinweis:

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.

Problemlösungen

Jack und Flash

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
}
}

Bei mehreren Soundkarten wählt jack manchmal die falsche

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
...

Mehrere Soundkarten gleichzeitig verwenden

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.

Diese Revision wurde am 8. Oktober 2013 13:04 von aasche erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Multimedia, System, Tonstudio