JACK Audio Connection Kit

Aus Mikiwiki
Zur Navigation springen Zur Suche springen

Das JACK Audio Connection Kit / JACK ist ein für POSIX-Systeme entwickelter Echtzeit-Soundserver, der unter Linux und MacOS X läuft und als mögliche Ablösung für den älteren Analog Realtime Synthesizer gilt. Er ist auf professionelle Anwendungen ausgerichtet, beherrscht volles Multiplexing bei niedriger Verzögerung sowie fehlerfreies Full duplexing; Anwendungen lassen sich sowohl in standalone-Form als auch als Plugins einbinden; eine Master/Slave-Gerätekonfiguration ermöglicht simultane Operationen (im einfachsten Fall Start/Stop oder Pause) mit präzisem timing über mehrere Anwendungen, Komponenten oder Geräte hinweg.

JACK verbindet die Programme nicht nur mit der jeweiligen Audiohardware, sondern auch untereinander (sogenanntes Audiorouting). Die virtuellen oder echten Endpunkte solcher Verbindungen heissen Ports. Programme wie der Festplattenrekorder Ardour ermöglichen die direkte Konfiguration der JACK-Ports. Andere sind auf externe Software wie Qjackctl angewiesen, um Ports zu verbinden. Qjackctl steuert JACK und verknüpft auch ALSA-MIDI-Ports mit MIDI-fähigen Programmen oder Hardware. JACK beherrscht MIDI bislang nicht.

Des weiteren synchronisiert JACK über einen eigenen Systemtakt angeschlossene Anwendungen. Andernfalls könnten auch Audioprogramme, die dieselbe Samplerate verwenden, zum Beispiel um die Zeitdauer eines halben Sample versetzt arbeiten.

JACK ist von Grund auf für geringe Verzögerung (Latenz) und professionelle Nutzung konzipiert. Im Hintergrund läuft ein schlanker Server, der mit möglichst wenig Kopieroperationen Audiodaten zwischen Programm und Hardware bewegt. JACK spricht Audiohardware nicht direkt an, sondern benutzt dafür verschiedene Backends, in den meisten Fällen ALSA. Das Routing zwischen Audioprogrammen lässt sich nutzen, um Effekte einzubinden, zum Beispiel mit LADSPA-Plugins und dem JACK-Rack.

Konfiguration

Da JACK für den Datenaustausch in "/tmp" FIFOs und Dateien anlegt, sollte sich das Verzeichnis nicht auf einem modernen Journaling-Dateisystem befinden. Echte Schreibvorgänge können nämlich zu signifikanten Festplattenzugriffen und somit zu hörbaren Aussetzern führen. Am besten liegt das Verzeichnis "/tmp" also auf einem Tmp-Dateisystem. Der Eintrag in der Datei "/etc/fstab" lautet wie folgt.

none /tmp tmpfs defaults

Falls dies nicht möglich ist, lässt sich beim Kompilieren von JACK mit der Option --with default-tmpdir=/mnt/ramfs auch ein anderes Verzeichnis einstellen. Ausserdem setzt JACK noch ein funktionierendes Shared-Meory-Dateisystem "/dev/shm" voraus.

Folgender Befehl startet den KACK-Daemon mit ALSA-Ausgabe.

$ jackd -d alsa

Andere Startparameter bestimmen z. B. die Samplerate und den ALSA-Port. Wichtig ist es, den Server und die Client-Anwendungen unter derselben UID zu starten, andernfalls verweigert JACK den Dienst. Wer mit der Option "-R" Realtime-Priorität einstellt, muss also alle Programme als Benutzer "root" laufen lassen oder einen Weg finden, solche Rechte auch normalen Benutzern zuzuweisen.

Weblinks