You don’t know Jack?

Jack mit qjackctl

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?

Connections mit JackJack, 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:

  • Hydrogen: Ein Drum-Sequencer, der gleich ziemlich gute Samples mitbringt und zudem noch einfach und trotzdem flexibel zu programmieren ist. In den Voreinstellungen muss als Audio-Treiber “Jack” angewählt sein.
  • vkeybd: Wer kein “echtes” Keyboard hat, muss sich mit diesem Mausklavier begnügen. Der MIDI-Ausgang des virtuellen Klaviers kann mit qjackctl an Synthies, Sampler o.ä. angeschlossen werden.
  • AMS: Ein modularer Synthesizer zum grafischen Zusammenklicken von Patches. Nicht vergessen: “ams –jack”.
  • ZynAddSubFX: Dieser Synthesizer kann genau das, was in seinem Namen drinsteckt. Trotzdem ist ZynAddSubFX fürs erste ein eher presetorientierter Synthie. Um erweiterte Funktionen zu nutzen, sollte man sich mit Klangsynthese auskennen - und sich einen Überblick über die Programmoberfläche verschaffen. Ich habe selten eine chaotischere GUI gesehen. Dafür erkennt ZynAddSubFX einen laufenden Jack-Server aber automatisch.
  • Ardour: Ein Audiorekorder, der sich durchaus mit Nuendo messen lassen kann. Er läuft nur mit Jack und hätte einen eigenen Artikel verdient. Einziges Manko: Er hat keine Ahnung von MIDI.
  • Jamin: Ein extrem professionelles und umfangreiches Masteringtool, konzipiert als Ergänzung zu Ardour (der von Haus aus nicht Mastern kann).
  • Rosegarden: Ein Sequencer, dessen Fähigkeiten eher bei MIDI als bei Audio liegen. Also eine perfekte Ergänzung zu Ardour. Über die Jack-Sync Funktion lassen sich die beiden Sequencer auch koppeln. Rosegarden muss extra mit Jack-Unterstützung kompiliert werden und läuft dann nicht mehr über ALSA. Zudem sollte man die Unterstützung für den konkurrierenden ARTS-Server explizit nicht einkompilieren. Dafür hat Rosegarden aber einen schönen Splash-Screen.
  • Ecamegapedal und Jack-Rack: Beides sind recht konservative, wenn auch umfangreiche Effektracks.
  • Linux-Sampler: Ein Sampleplayer, der alle gängigen Profiformate unterstützt (oder unterstützen wird).
  • 10 Antworten auf “You don’t know Jack?”

    1. beza1e1 meint:

      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 ;)

    2. smith meint:

      mark it eight, dude

    3. d135-1r43 » Blog Archive » mpg123 lebt! meint:

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

    4. freddiecarlton meint:

      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

    5. d135-1r43 meint:

      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. z421 meint:

      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”"

    7. hannenz meint:

      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

    8. zettberlin meint:

      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

    9. d135-1r43 meint:

      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.

    10. Joix » Musiksoftware unter Linux. Ein kurzer Überblick. meint:

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

    Hinterlasse eine Antwort


    Creative Commons-Lizenzvertrag
    Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.
    M. Herhoffer