von claudius | Geschätzte Lesezeit: 5 Minuten
JACK Audio Connection Kit How To Anleitung Gearnews Teaser

Was ist JACK und wie geht das?  ·  Quelle: jackaudio.org / claudius

ANZEIGE

Oh, was habe ich schon bei meinem ersten Linux-Experiment geflucht, weil mir eine gute Einführung in JACK gefehlt hatte. Nach einer Einarbeitung geht es aber ziemlich gut – deswegen bin ich auch komplett umgestiegen. Das Audiosystem ist etwas anders, als man es von ASIO oder Core Audio her kennt. Es ersetzt, solange es aktiv ist, die Audioschnittstelle von Linux, PluseAudio und vernetzt Programme miteinander. Damit du nicht so viele graue Haare wie ich anfangs bekommst, gibt es hier einen kurzen Leitfaden. 

ANZEIGE

JACK

Es ist wie so oft bei Linux eine Abkürzung, die sich selbst noch einmal beinhaltet: JACK Audio Connection Kit, kurz JACK. Es ist nicht nur ein Audio-Server, der u. a. über ALSA mit der Audio- und MIDI-Hardware kommuniziert, sondern gleichzeitig noch eine Routing-Umgebung mit der alle kompatiblen Programme miteinander verbindet.

Es gibt jack und jack2 – beide existieren parallel, jack2 unterstützt mehrere Prozessoren, was prinzipiell mehr Rechenleistung bringen kann und damit die sinnvollere Version für aktuelle Hardware ist. JACK2 existiert auch für macOS und Windows, mangels Programmauswahl mit JACK-Schnittstelle bei den Betriebssystemen ist es eigentlich unter Linux wirklich sinnvoll, hier haben fast alle Audioprogramme die Schnittstelle.

Installation

Sollte es in deiner Distribution noch nicht vorinstalliert sein, kannst du es bei fast allen Distros über die regulären Paketquellen installieren. Entweder erledigst du das über einen vorinstallierten Paketmanager oder über Terminal – Letzteres ist mein Weg, da ich mich an die Geschwindigkeit gewöhnt habe und damit schneller am Ziel bin.

Du kannst entweder qjackctl als JACK-Verwaltung installieren oder Cadence, musst davor aber die KX Repos bei Ubuntu aktiviert bzw. installiert haben. Dabei handelt es sich einfach um eine alternative Paketquelle. Den Aufbau der Befehle erkläre ich dir nicht, da das zum Linux-Grundwissen gehört.

In Ubuntu sieht das wie folgt aus:

sudo apt install cadence

ANZEIGE

oder

sudo apt install qjackctl

Bei Arch ist der Weg ähnlich, „sudo pacman -S qjackctl“. Cadence liegt im AUR und wird in der Kommandozeile beispielsweise über yay installiert.

qjackctl vs. Cadence

Ich empfehle dir dringend, JACK nicht über die Kommandozeile als „daemon“ zu starten und zu verwalten, sondern ein mit der Maus klickbares Kontrollzentrum zu nutzen.

Cadence“ ist ein Paket an Programmen, die man braucht, optisch brauchbar und damit gut nutzbar. Meine klare Empfehlung. Mit dabei ist eine automatische Brücke für PulseAudio, womit es gleichzeitig möglich ist, die DAW und den Browser zu nutzen – ohne diese Bridge geht das nicht. Und die selbst einzurichten, bedarf etwas Zeit. Stichwort: graue Haare.

qjackctl“ ist etwas rudimentärer und beschränkt sich optisch auf das Allernötigste. Auch besagte Bridge muss selbst eingerichtet werden. Hier gibt es eine auf Manjaro abgestimmte Anleitung.

JACK Cadence Config Window Ubuntu

JACK verbinden

Ist alles installiert, kannst du JACK konfigurieren. Die Konfiguration ist nur einmal nötig, du kannst dann später selbst entscheiden, ob sich deine Audioumgebung direkt nach Systemstart selbst aktiviert (Autostart) oder ob du es (wie ich) manuell aktivierst.

Am Beispiel von Cadence zeige ich dir, wie ich mein Focusrite Scarlett 2i2 (2nd Gen) einrichte. Wichtig ist, dass du mit deinem User-Account in der Gruppe „audio“ gelistet bist, bei Arch ist zusätzlich die Gruppe „realtime“. Das geht über den Befehl:

usermod -aG audio NUTZERNAME

Danach ist ein Neutstart notwendig.

Die beiden Fenster erreichst du unter „Configure“ unten rechts. Anschließend setzt du im Reiter „Engine“ den Haken bei Realtime und dann im Reiter „Driver“ bei ALSA dein Interface, bei mir heißt es „HW:USB„. Der Rest sollte automatisch passieren. Samplerate kannst du frei wählen, 44,1 kHz ist für die meisten Anwendungen genug. Der Buffer ist entscheident, wie viel Zeit dein CPU zum Berechnen hat und damit auch die Latenz. Spielst du in Echtzeit Sachen ein, dann sollte es 128 oder weniger sein, zum Mixen kannst du 1000 oder mehr nehmen. Die Periods lässt du auf 2.

JACK Cadence Configure Hardware

Damit hast du ein rudimentäres Setup geschafft. War nicht so schwer, oder?

Klicke OK und anschließend im Hauptfenster (siehe Screenshot weiter oben oben) auf „Start“. JACK läuft und der Server-Status sollte auf „Running“ stehen. Ggf. musst du unten bei PulseAudio die Bridge noch manuell starten.

Sollte es später zu Aussetzern kommen, wird der Zähler hinter XRUNS schnell steigen. Das ist ein Buffer Overrun und du solltest die Latenz schrittweise anpassen.

Routing mit JACK

Die Installation von Cadence bringt auch „Catia“ mit. Damit kannst du in einem Fenster virtuell die Strippen ziehen und Programme miteinander verbinden. Das ist ziemlich selbsterklärend. Ich habe hier Mixbus 6 und Guitarix gestartet. Sieht auf den ersten Blick viel aus, dafür kann man bei Mixbus quasi alles von extern angesteuert werden.

qjackctl bringt auch ein Routing-Fenster mit, allerdings ist das etwas klickintensiver und wie ich finde, nicht so intuitiv. Dafür schont es Ressourcen – wer nicht genug davon in seinem Computer hat, wird sich darüber freuen.

Los geht’s

Grundlegend kannst du jetzt direkt loslegen. Du verbindest beispielsweise deine Gitarre mit Guitar Rig und ziehst die Strippen dann in deine DAW, egal ob das jetzt Mixbus, Reaper, Bitwig oder eine ganz andere ist. Dann ist alles wie gehabt.

Beim nächsten Mal erinnert sich JACK an dein Routing und du musst eigentlich nie wieder Strippen ziehen. Es gibt aber auch Snapshots, die du anlegen kannst und dir so verschiedene Setups einfach in einer Sekunde virtuell verkabeln kannst.

Fragen?

Ist noch was unklar? Dann freuen wir uns über deinen Kommentar! Wir versuchen auch zu helfen. :)

Mehr Gedanken zu Linux und meinem Umstieg findest du hier.

Bildquellen:
  • Cadence verwaltet die Audioschnittstelle JACK: Claudius, Gearnews
  • JACK Cadence Configure Hardware: Claudius, Gearnews
  • Cadence Routing: Claudius, Gearnews
  • qjackctl Routing: Claudius, Gearnews
ANZEIGE

19 Antworten zu “Linux-Audio – JACK verstehen und einrichten”

    Tschik sagt:
    0

    Umständlich. Wieso tut man sich das an, wenn man ASIO4ALL oder Core Audio nutzen kann?

      claudius sagt:
      0

      Danke für deine Frage! :)

      ASIO bzw. ASIO4ALL gibt es nur für Windows, Core Audio nur für macOS. JACK ist eine freie Audioschnittstelle, auf der die meisten professionellen Audioprogramme unter Linux neben den Desktop-Schnittstellen ALSA und Pulse Audio laufen. ASIO und Core Audio gibt es nicht für das freie Betriebssystem GNU/Linux – daher hast du als User keine Wahl.

      Wirklich schön ist es anfangs nicht, das gebe ich gern zu. Allerdings ist gerade das freie, systemweite Routing genial, das ich nicht mehr missen möchte. Wenn ich darauf verzichten könnte, würde ich es aber vermutlich tun. Da ich es aber einmal eingerichtet habe, ist der Prozess zur Audioumgebung genau um zwei Mausklicks verlängert: Cadence starten, JACK starten. Fertig.

        Jemand sagt:
        0

        Man könnte doch Jack um eine vergleichbare, einfache, Schnittstelle, wie ASIO4All erweitern, um die Einstiegshürden zu nehmen.

        Kamn ich damit auch Signale routen die über Bluetooth reinkommen?

        .

          claudius sagt:
          0

          Soweit ich wei, gibt es sowas nicht. Was kann denn ASIO4ALL mehr als JACK? Das muss ja auch eingerichtet werden. Mehr ist es bei JACK über qjackctl beispielsweise auch nicht.

    xr sagt:
    0

    Erstmal aufgesetzt ist JACK deutlich benutzerfreundlicher und flexibler als ASIO.

    Gerry sagt:
    0

    „Den Aufbau der Befehle erkläre ich dir nicht, da das zum Linux-Grundwissen gehört.“ (claudius)

    Wer von Windows / iOS auf Linux umsteigen möchte, der ist von solchen Aussagen natürlich total begeistert! Kein Wunder, dass Linux bisher keine große Rolle in der Musikproduktion spielt. Vernünftige und präzise Anleitungen für einen Umstieg sind kaum zu finden!

      claudius sagt:
      0

      Du spielst sicherlich nicht auf iOS, sondern macOS an. Wer da Terminalbefehle nutzt, kennt sich mit der Umgebung in Linux vermutlich relativ schnell aus, da sich die Befehle oft gleichen und der Aufbau auch ähnlichn ist.
      Als Blog für Equipment ist es aber IMHO nicht unsere Aufgabe, ein Betriebssystem zu erklären. Dafür gibt es viele, spezialisierte Seiten, Zeitschrfiten, Videos, die Linux von Grund auf erklären und auch sicherlich besser, als wir das in einem kurzen Artikel könnten.
      Wenn du konkrete Fragen hast, schau dich einfach mal im Netz um, wenn du Hilfestellung oder Linktipps brauchst, dann frag einfach konkret danach. :)

    Stephan sagt:
    0

    In einer VM (Lubuntu) wollte ich den zoom-Client mit einem Telefonkonferenzsystem (läuft in Chrome) verknüpfen. Eine ‚physische‘ Ausgabe brauche ich nicht. Leider wird die Audioausgabe von Zoom mit einem ~ 1sekündigen Versatz in den Eingangskanal zurückgespielt (warum auch immer, aber das ist für die Echounterdrückung von zoom wahrscheinlich zu lang). Ich hatte gehofft, dass man mit Jack die einzelnen Anwendungen sieht und beliebig routen kann:

    zoom-out -> Browser-in
    Browser-out -> zoom-in

    Wie bekommt man das hin?

      claudius sagt:
      0

      Das geht nur, wenn die Programme die JACK-Schnittstelle haben. Dann könntest du wild rumrouten. Für Chrome(ium) oder Firefox sind mir keine Lösungen bekannt, Zoom habe ich noch nie genutzt. Evtl gibt es da experimentelle Versionen bei GitHub (o.ä.) oder ein Addon, würde aber nicht drauf wetten.

        Stephan sagt:
        0

        Vielen Dank, claudius.
        Ich habe es jetzt mit zwei Null-sinks und einem virtuellen Mikro in Pulseaudio realisiert. Das Mapping merkt sich Pulseaudio zwar nicht immer, aber im Großen und Ganzen funktioniert es.

          claudius sagt:
          0

          Freut mich. :)
          Meine Mappings werden auch mal vergessen, vor allem, wenn ich mit Cadence arbeite. Man kann sich aber auch dafür wohl Presets abspeichern, aber meine „Kabel“ sind in 10 Sekunden gezogen, daher lohnt sich das für mich nicht wirklich.

    Wolfgang sagt:
    0

    Du hast mir einige graue Haare erspart, danke dir.
    Ein Hinweis: Der Link zu „Hier gibt es eine auf Manjaro abgestimmte Anleitung.“ geht nicht.

    Sven sagt:
    0

    Diese Seite hat mich schon mal ein großen Schritt nach vorne gebracht. Vielen Dank dafür.
    Ein paar Fragen habe ich noch.
    Ist das RT-Linux mittlerweile im Kernel enthalten und wenn ja ab welcher Version?
    Ich finde so richtig wild wird es mit mehreren Soundkarten, die durch z.B. ein USB-Headset schnell mal vorhanden sind. Oder auch einfach die vorderen und hinteren Anschlüsse am PC.
    wie bekomme ich diese gleichzeitig zum Laufen? Geht das mit Jack oder muss ich vorher mit Alsa diese virtuell zusammenführen und wenn das der Weg ist, gibt es für Alsa eine GUI, bei der man diese komplexen Konfigurationen vornehmen kann?

    claudius sagt:
    0

    RT ist nicht im Kernel enthalten, allerdings ist der normale Kernel für meine Sachen (und viele Menschen im Netz) so gut, dass viele den RT-Kernel nicht mehr installieren müssen. In diesem sind die Audio Streams höher priorisiert.
    Wenn du „RT“ in qjackctl oder cadence anhakst und das mit Guitarix oder Ardour und Co nutzen möchtest, musst dein user in den Gruppen audio und bei Arch noch in Realtime sein. Außerdem musst du eine Config für die audio-Gruppe anlegen und zwei Zeilen reinschreiben (hier unter 1: https://jackaudio.org/faq/linux_rt_config.html)

    Mit mehreren Soundkarten kenne ich mich leider nicht aus. Ich kenne nur die Möglichkeit über ALSA https://jackaudio.org/faq/multiple_devices.html

    jackuser sagt:
    0

    Prima Anleitung! Allerdings vermisse ich den Hinweis auf die Netzwerkfähigkeiten von Jack. Damit kann man problemlos Rechner miteinander verbinden. mit Audio und Midi Der entfernte Rechner erscheint genau wie ein Programm im Qjackctl/patchage/wasauchimmermanbenutzt Panel.
    Was spricht dagegen, Jack von der Konsole aus zu starten? Die entsprechenden Parameter kann man z.B. in Qjckctl sehen. Auf meiner Studiomaschine brauche im immer Jack, daher wird es dort auch automatisch per Konsole gestartet.
    Ich benutze Jack seit nunmehr rund fünfzehn Jahren im professionellen Bereich, es hat immer problemlos funktioniert. Ob im Studio oder Live, es ist eine absolut sichere Bank. Und mit einem Programm, wie z.B. Patchage ist es Mausschubsen in höchster Vollendung.

    Eugen sagt:
    0

    Das Problem an Jack2 ist, dass die Hürde für einen Nicht Musiker sehr hoch ist. Für einen Musiker mag es selbst verständlich sein, sein MIDI Keyboard zuerst an einen Synthesizer und den wiederum an einen Lautsprecher. Wenn sich jemand noch nie, oder kaum, mit elektronischer Musik beschäftigt hat und „nur“ eine MIDI dabei abspielen, oder „nur“ ein wenig auf dem virtuellen Keyboard spielen möchte, ist das alles unverständlich, warum alles so umständlich ist. Verbindungen? Patch? Brauche ich das? Ich will doch nur eine MIDI abspielen. Die Vorteile erschließen sich erst, wenn man alle Irrwege gegangen ist, die man gehen konnte. Dazu kommen noch Fehler in der Software: ich kann MIDIs mit Fluidsynth nur mit dem ALSA Treiber korrekt abspielen, aber nicht mit dem Pulse oder Jack Treiber.
    Ich habe jetzt eine Mischung aus ALSA und Jack: Fluidsynth erzeugt mit dem ALSA Treiber den Ton, der von Jack abgespielt wird. Ich habe jetzt die Wahl, ob ich den Ton (von Fluidsynth / Firefox / Mplayer) über Pulse oder Jack am Lautsprecher ausgebe, aber das Ergebnis ist so gut, dass ich dabei bleibe.
    Die Hürde war für mich ein Mangel an Wissen und Erfahrung. Man sollte nicht so tun, als ob das ein einfaches Thema wäre. Es sollte mehr kostenlose Schriften geben, die das alles erklärt, so kompliziert, wie nötig und die Erfahrung möglichst vieler User zentral sammelt und allen zur Verfügung stellt.
    Alles ist einfach, was man versteht.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert