You don’t know Jack?

Mit Hochglanz-Software wie Cubase, Wavelab, Nuendo und professionellen VST-Tools hat die Linuxwelt im Allgemeinen recht wenig zu tun. Und trotzdem gibt es im (semi-)professionellen Audiobereich ein sehr interessantes Projekt. Jack ist ein Audioserver, der das träge ALSA gehörig aufmöbelt und mit interessanten Features erweitert. Und dabei kann sich das GPL-Projekt durchaus mit den Features aus dem Hause des Marktführers Steinberg messen lassen.
Was kann Jack?
Jack, ein Akronym für “Jack Audio Connection Kit”, ist bildlich gesprochen eigentlich nichts mehr als ein leeres Rack, in das der User alle möglichen Formen von Audiosoftware reinstecken und verkabeln kann. Es funktioniert in etwa wie eine bessere Hifi-Anlage: Verschiedene Module haben Ein- und Ausgänge, die man miteinander verbindet. Je nach Art der Software hat das verschiedene Auswirkungen. Ein Synthesizer etwa hat einen Jack-Ausgang. Verbindet man diesen Ausgang mit einem Effektprozessor, kann man etwa einen Halleffekt beimischen. Steckt man wiederum den Halleffekt an einen Audiorekorder an, kann man das Ergebnis aufnehmen.
Das grafische Frontend qjackctl hilft einem dabei. Das Tool startet und stoppt Jack, zeigt die Auslastung an und bietet vor allem eine mehr oder minder komfortable Schnittstelle zum Legen der Verbindungen. Sobald eine Jack-Software gestartet wird zeigt qjackctl die neuen Ein- und Ausgänge an.
Das Prinzip erinnert sehr an VST/VSTi und Rewire oder an das virtuelle Rack in Reason. In der Umsetzung ist Jack aber radikaler als die proprietären Lösungen von Steinberg und Propellerhead. Rewire und VST benötigen immer eine übergeordnete Host-Anwendung (meistens ein Sequencer), VST ist sogar nur ein Pluginstandard. Bei Jack spielt sich aber alles auf unterster Systemebene ab. Der Audiotreiber wird selbst zum Herr der Verbindungen. So ist man viel flexibler als es mit VST je möglich wäre.
Was kann Jack nicht
Die Vorteile von Jack sind offentsichtlich, allerdings gibt es auch ein paar Nachteile. Software, die mit Jack genutzt wird, muss extra dafür programmiert sein. Wenn man Glück hat, erkennt die Software automatisch einen laufenden Jack-Server (Hydrogen), wenn man weniger Glück hat muss man eine Einstellung ändern (xmms) und wenn man Pech hat darf man alles nochmal neu mit Jack-Unterstützung kompilieren (Rosegarden). Zusätzlich gibt es noch einen großen Anteil an Software, die nativ kein Jack kann - allen voran Standardtools wie mpg123/321, alsaplay und Co., ebenso nahezu alle Computerspiele und Soundbenachrichtigungen in Anwendungsprogrammen. Das Dumme ist, dass diese Tools bei laufendem Jack-Server auch nicht mehr auf ALSA zugreifen können. Man muss also ein Alsa-Routing konfigurieren oder auf einige Programme verzichten.
Jack kann auch kein MIDI-Streaming verwalten. Bis jetzt übernimmt das noch ALSA. Wenn man aber qjackctl benutzt merkt man davon nichts. Das Tool behandelt MIDI-In/Out genauso wie die “jackified” Audio-In/Out.
Wer braucht Jack?
Jack ist als Profilösung konzipiert. Dementsprechend richtet es sich an Audio-Schaffende und nicht an Audio-Konsumenten. Bildlich gesprochen: Man baut sich kein Parkhaus für ein einzelnes Fahrrad. Wer nur MP3s hört, Videos anschaut und vielleicht ab und an mal eine Ein-Spur-Aufnahme machen will ist mit Jack überbedient. Für solche Ansprüche reichen ALSA oder die distributionseigenen Soundserver völlig aus. Zudem ist Jack nicht für den Dauerbetrieb bei normaler PC-Anwendung konzipiert. So gibt es in allen Paketen zu Recht keine Init-Scripte. Jack sollte laufen, wenn man seine Funktionen braucht.
Jack in der Praxis
Jack ist wie alle Audioanwendungen sehr anspruchsvoll. Für vernünftige Resultate braucht man schon ein optimal konfiguriertes und aufgemotztes Linux-System. Dieser Bereich ist so komplex, dass ich dafür wohl bald einen eigenen Artikel schreibe. Auch das Einbinden von vorhandener Audio- und MIDI-Hardware ist alles andere als einfach. Ansonsten genügt ein einfaches “emerge” oder “apt-get” - wenn ALSA läuft, dann läuft in der Regel auch Jack.
Hier aber erst mal eine optimale Besetzung für das Jack-Rack:


17. Oktober 2005 um 18:08
Wow, gut recherchiert. Auch wenn ich selbst Jack nicht brauche, gibt das doch nen guten Überblick und die nötigen Links zum weitermachen.
Macht sich gut dein Blog. Qualitativ wohl über meinem
29. März 2006 um 6:26
mark it eight, dude
3. August 2006 um 13:42
[...] 6 Jahre nach der letzten Änderung im Code wird mpg123 wieder weiterentwickelt. So steht zumindest auf der Linux-Audio-Developer-Mailingliste. Warum man den Dinosaurier wiederbeleben möchte? Kein Player ist so schlank und einfach wie das 171kB große Programm. Bei Stabilität und Ressourcenverbrauch steht mpg123 weit vor MPlayer und GUI-Tools wie XMMS und AmaroK. Besonders die Kreativen unter den Linuxern werden sich freuen: Es soll eine JACK-Ausgabe implementiert werden. Damit kann man dann ganz einfach - in welchem Kontext auch immer - MP3s in einem komplexen Setup abspielen. Und das ohne den anderen ressourcenfressenden Anwendungen in die Quere zu kommen. [...]
27. August 2006 um 13:58
Ich habe mir gestern openSUSE Linux 10.1 parallel zu Windows auf der zweiten Festplatte installiert. Dann viele Multimedia-Anwendungen nachinstalliert. Auch das JACK Audio Connection Kit als Grundlage für diverse Audio-Programme.
Ich habe folgendes Problem: Wenn ich versuchen, JACK zu starten, erhalte ich immer folgende Fehlermeldung:
13:55:51.622 Patchbay deactivated.
13:55:51.876 Statistics reset.
13:55:52.596 MIDI connection graph change.
13:55:52.600 MIDI connection change.
13:55:56.561 Startup script…
13:55:56.561 artsshell -q terminate
sound server terminated
13:55:58.170 Startup script terminated successfully.
13:55:58.190 JACK is starting…
13:55:58.194 /usr/bin/jackd -R -p64 -t5000 -m -dalsa -r48000 -p64 -n2 -D -Chw:0 -Phw:0 -m -S -H
13:55:58.215 JACK was started with PID=10029 (0×272d).
jackd 0.100.0
Copyright 2001-2005 Paul Davis and others.
jackd comes with ABSOLUTELY NO WARRANTY
This is free software, and you are welcome to redistribute it
under certain conditions; see the file COPYING for details
JACK compiled with POSIX SHM support.
loading driver ..
apparent rate = 48000
creating alsa driver … hw:0|hw:0|64|2|48000|0|0|hwmon|swmeter|-|16bit
control device hw:0
configuring for 48000Hz, period = 64 frames, buffer = 2 periods
ALSA: mmap-based access is not possible for the capture stream of this audio interface
ALSA: cannot configure capture channel
cannot load driver module alsa
13:55:58.408 JACK was stopped successfully.
13:56:00.304 Could not connect to JACK server as client. Please check the messages window for more info.
Was ich als SUSE-Anfänger diesem Text entnehme: JACK kann das ALSA-Treiber-Modul nicht laden, weil am Port der Soundkarte offensichtlich schon eine Anwendung läuft, nämlich aRts. Nun müsste ich wohl aRts stoppen und JACK noch einmal starten, um den Server starten zu können.
Meine Frage: Wie kann ich dieses “aRts”-Programm stoppen?
Schöne Grüße
freddiecarlton
29. August 2006 um 13:50
ARTS und Jack mögen sich nicht. ARTS macht Ähnliches wie JACK - nur eher für Musik-”Hörer” und nicht für den Profi-Einsatz. Darum sollte man ARTS deaktivieren oder besser während dem Einsatz von JACK abschalten. Das geht, indem man den Dienst manuell stoppt oder abschießt. Die elegantere Methode ist aber, das mit YaST zu machen. Wie das geht, weiß ich aber nicht - da hilft vielleicht der Novell-Support. Im Zweifelsfall sollte man sich in YaST mal alles anschauen, was mit “Dienste” oder “Deamons” zu tun hat.
6. Januar 2007 um 21:10
oder, im qjackctl unter options, den command angeben, welcher artsd beendet. (hier in meimen falle, unter gentoo “artsshell -q terminate”)
“[X] execute script on startup: “artsshell -q terminate”"
22. Januar 2007 um 3:03
hallo. ich bekomme genau die gleiche fehlermeldung, der angegebene command steht bereits standardmässig bei “execute script on startup”… ausserdem läuft bei mir gar kein prozess ARTS… ??!
Bin über jeden Tip dankbar
13. Dezember 2008 um 0:40
Hallo,
Der Artikel ist ganz OK aber leider nicht auf dem letzten Stand ;-). Da der Wikipedia-Eintrag zu Jack auf ihn zeigt wäre es sehr nett, wenn Du ih aktualisieren könntest.
alles Gute und vielen Dank
HZN
25. Dezember 2008 um 19:58
Leider verwende ich derzeit kein Linux mehr für meine Audio-Produktionen. Ich bin in dieser Beziehung komplett auf die Mac-Welt umgestiegen und daher leider nicht mehr über die neuesten Entwicklungen im Linux-Audio informiert.
29. März 2009 um 14:36
[...] Das wichtigste Audio-Tool in der Linux-Welt habe ich bisher noch gar nicht erwähnt: Jack. Bei Jack handelt es sich um einen virtuellen Audio-Server, der auf unterster Systemebene die Audiohardware steuert und mit dem Audio-und Midiströme zwischen verschiedenen Anwendungen geroutet werden können. Das heißt, es ist zum Beispiel auch möglich Ardour und Rosegarden miteinander zu synchronisieren. Einen sehr guten Bericht zu Jack gibt es hier. [...]