JACK kommt eigentlich aus der Linux Welt und ist dort der Audio Server schlechthin. Für viele ist das Wort Linux schon abschreckend und wenn man dann noch erwähnt, dass JACK ursprünglich ein Kommandozeilen-Tool war, braucht man meistens gar nicht weiter zu reden.

Aber JACK muss nicht kompliziert sein. Man muss ja nicht alle Möglichkeiten der Software nutzen. Ich finde den Gedanken spannend, dass man mithilfe von JACK einfach seine verschiedenen Applikationen miteinander verkabeln kann, genauso wie den Plattenspieler zuhause mit dem Stereo-Verstärker, oder das Casio Keyboard mit dem Audio Interface.

Apple’s Core Audio, das im MacOS Betriebssystem zur Anwendung kommt ist an sich schon eine sehr mächtige Audio API mit niedrigen Latenzen für die Echtzeit-Anwendung von virtuellen Instrumenten und Effekten. Da könnte Windows sich mal eine Scheibe von abschneiden. Allerdings fehlt Core Audio die Möglichkeit verschiedene Anwendungen im Betriebssystem miteinander zu verbinden, sodass man das Audio-Signal von einer Anwendung beispielsweise mit einer anderen Applikation aufzeichnen könnte.

Es gibt verschiedene kostenlose und kostenpflichtige Tools, die diese Verkabelung ermöglichen, allerdings ist keines dieser Tools so mächtig wie JACK.

Bitwig und JACK

Bitwig Studio versteht sich hervorragend mit JACK und daher kann man Bitwig hervorragend als Mittelpunkt nutzen und verschiedene Anwendungen in diese DAW einspeisen. Dank der HW Integration Devices kann man mithilfe von JACK CVund Audiosignale aus diversen Applikationen an beliebige Punkte in Bitwig einfügen, nicht nur als Haupteingangsquelle eines Tracks. Wie das genau funktioniert sehen wir später…

JACK verstehen

JACK ist vergleichbar mit einem echten Recording-Studio. In einem Studio würde man verschiedene Kabel nehmen und die Gerätschaften, die man zum Recorden und Bearbeiten von Audiosignalen benötigt, miteinander verbinden. Außerdem kann man mithilfe von Midi diverse Synthesizer und Sequenzer synchronisieren.

Genau diese Dinge macht JACK im Betriebssystem, es verkabelt die einzelnen Audio-Anwendungen und synchronisiert Midi-Applikationen. Sobald man ein Programm öffnet, dass JACK unterstützt, werden die Audio– und Midi-Ein– und Ausgänge für JACK und jede andere Software, die JACK unterstützt, sichtbar. Jetzt kann man alles so verkabeln, wie man es braucht.

Normalerweise ist man es gewohnt, dass die Digitale Audio Workstation (DAW) alle Instrumente und Effekte verwaltet und miteinander verkabelt (außer man arbeitet in Linux). Technologien, wie VST oder AU funktionieren in der DAW und dienen als Schnittstelle verschiedener Plugins. Was aber, wenn ich Audio-Software benutze, die nicht als Plugin vorliegt, wie beispielsweise Max, VCV Rack (noch…) oder eine andere DAW?

JACK verlagert dieses Konzept auf eine höhere Ebene und löst die DAW als Schaltzentrale ab. JACK ist nun die Zentrale und jede DAW oder andere JACK-fähige Standalone Audio Anwendung arbeitet wie ein Plugin innerhalb von JACK.

JACK ist nicht wirklich kompliziert

Der einzige Nachteil den JACK mit sich bringt, ist die Tatsache, dass man daran denken muss JACK immer vor allen Anwendungen zu starten. D.h. ich starte meinen JACK Server, dann beispielsweise Bitwig Studio und im Laufe des Recording-Prozesses die Anwendungen, die ich eventuell benötige. Wichtig ist nur, dass JACK zuerst laufen muss.

Glücklicherweise sind wir in einem Mac Betriebssystem und müssen uns bei der Installation nicht notwendigerweise im Terminal aufhalten. Auf den Downloadseiten von JACK gibt es Binaries für MacOS X. Wir laden hier den Installer von JACK2 herunter.

Nach der Installation befinden sich zwei Applikationen im Programme-Ordner: JackPilot und QJACKCtl. JACK installiert übrigens auch noch VST– und AU-Plugins, die man als Inserts nutzen kann. Dank der HW Devices in Bitwig können wir darauf allerdings verzichten.

JackPilot starten wir als erstes, um den Server einzurichten. Außerdem starten wir später hiermit immer den Server, aus diesem Grund befindet sich diese Anwendung bei mir auch im Dock.

JACK einrichten

Bevor wir den Server starten, klicken wir oben auf JackPilot -> Preferences und stellen JACK richtig ein. Zunächst wird das Audio-Interface ausgewählt. Der Driver ist natürlich Core Audio und die Ein- und Ausgänge entsprechen dem gerade verwendeten Interface. Ich nutze im Moment gerade kein externes Interface, daher wähle ich die Standardeinstellungen meines MacBooks.

Samplerate und Buffer Size wählt man so, wie man es ansonsten auch in der DAW eingestellt hat. Wenn man den Hog Mode anklickt, dann hindert man andere Anwendungen daran, die Sample Rate der Input– und Output Devices zu verstellen.

Clock Drift Compensation verhindert das Abweichen der Clock, wenn man beim Input und Output verschiedene Devices eingestellt hat, beispielsweise eine externes USB-Mikrofon und den Standardoutput des MacBooks.

System Point Monitoring ermöglicht es den Hauptaudioausgang wieder in zwei System Input Monitore einzuspeisen und diesen dann direkt aufzuzeichnen. Das hat bei mir seltsamerweise nicht funktioniert, aber vorsicht, theoretisch könnte man dann echt unangenehme Feedback-Schleifen erzeugen!

Wenn man Activate Midi anklickt, aktiviert man die Bridge zwischen JACK Midi und Core Midi und bei den Input und Output Channels gibt man an, über wieviele Ein– und Ausgangskanäle das verwendete Audio-Interface verfügt.

Bei den Einstellungen für den JACKRouter kann ich angeben, wieviele virtuelle Ein– und Ausgänge ich pro Applikation zur Verfügung haben möchte. Ich glaube hier gibt es keine Grenze nach oben. Da ich vorher nie genau weiß, wieviele Kanäle ich genau benötige, lege ich mir hier immer jeweils 8 Kanäle an.

Wenn ich das alles eingestellt habe, klicke ich auf Save und kann den JACK Server starten:

Hinweis: Früher konnte man das Systemaudio ebenfalls durch JACK leiten, somit konnte ich dann beispielsweise auch Audio aus Standardanwendungen wie Chrome oder Firefox an eine DAW schicken. Das funktioniert mittlerweile nicht mehr, selbst bei meiner etwas betagten MacOS X Version (10.12) nicht. Auch in den im Sound-Fenster der Systemeinstellungen oder im Audio-Midi-Setup kann ich das nicht mehr ändern. JACK taucht dort zwar auf, aber ich kann ihn nicht als Standardgerät einstellen!

JackPilot zeigt nun an, wieviel CPU Last unser JACK-System verursacht und die Zahl links daneben gibt an, wieviele aktive JACK-Verbindungen wir derzeit verwenden. Ich kann von hier aus auch jederzeit den JACK-Server stoppen.

JACK und Bitwig Studio

Nun kann ich Bitwig Studio starten und gehe gleich mal in die Audio-Einstellungen. Dort wähle ich JACK als Driver aus, nicht Core Audio.

Ein Stück weiter nach unten kann ich auswählen, ob Bitwig der Transport Sync Master sein soll … das ist eine gute Idee.

Ganz unten kann ich nun die Input– und Output Busses anlegen. Was hier jetzt schon etwas kompliziert aussieht, ist in Wirklichkeit ganz einfach. Wenn ich jetzt nur Bitwig laufen habe, kann ich hier zunächst einmal nur die Inputs und Outputs meines Audio-Interfaces anlegen, die habe ich aber ja meistens sowieso schon angelegt (hier: Stereo Input und Speakers). Interessant wird es erst, wenn ich eine weitere JACK-fähige Anwendung starte. Aus diesem Grund starte ich jetzt mal VCV Rack.

Dort lege ich mir schnell einen Sequenzer an und triggere damit einen Oszillator und das Audio-Signal schicke ich an das Audio-8 Modul, wo ich als Treiber Core Audio auswähle und als Gerät den JACKRouter.

Jetzt wurde VCV Rack im Hintergrund schon automatisch ins JACK-System eingebunden. Um den Synthesizer nun in Bitwig nutzen zu können, muss ich mir einen Eingang anlegen. Also füge ich in den Audio-Einstellungen einen Stereo-Bus hinzu – nenne ihn VCV-Rack In – und bei der Auswahl der beiden Kanäle taucht sofort VCV Rack im Menü auf. Ich nehme jetzt einfach mal Rack/out1 für den linken und Rack/out2 für den rechten Kanal, weil ich meinen Oszillator in VCV Rack ja an Ausgang 1 angeschlossen habe. Man kann aber sehen, dass ich theoretisch 8 Kanäle zur Auswahl hätte, weil ich das so in den Einstellungen des JackPilot festgelegt habe.

Wenn ich jetzt einen Audio-Track in Bitwig anlege und als Eingang meinen VCV Rack In Bus auswähle, kann ich schon sehen, dass mein Signal ankommt … fantastisch … ganz ohne die VST-Bridge vom Rack.

Was aber, wenn ich VCV Rack als Effektgerät nutzen will? D.h. ich möchte mein Audiosignal aus meinem Track an irgendeiner Stelle zum modularen Synthesizer leiten, dort Effekte anwenden und zurück in meinen Bitwig Track?

Dazu benötigen ich zunächst einen weiteren Output Bus in Bitwig. Also nochmal in die Einstellungen / Audio und ein Ausgangskanal angelegt. Diesen nenne ich VCV Rack out (! Es ist wichtig, dass die Eingangs- und Ausgangskanäle unterschiedlich heißen! Hätte ich beiden angelegten Kanäle einfach VCV Rack genannt, wäre JACK durcheinander gekommen… !). Hier wähle ich nun Rack/in1 und Rack/in2

Keine Angst, diese Busse muss ich nicht bei jedem Start von Bitwig neu anlegen. Sie werden gespeichert und beim nächsten Einsatz von Bitwig mit VCV Rack geht das alles viel schneller!

Jetzt kommen die HW Integration Devices von Bitwig ins Spiel. Angenommen ich habe einen Track mit einer Drum Machine und möchte ein Delay aus dem Rack darauf anwenden. Dann nehme ich mir ein HW FX Device und baue es an irgendeiner Stelle meine Effektkette des Tracks ein und wähle als Ausgang VCV Rack out und darunter als Eingang VCV Rack in.

Nun gehe ich ins Rack und baue meine kleine Effektkette…

… Fertig! Jetzt kann ich VCV Rack überall in Bitwig als Effekt nutzen. Und wenn ich überall sage, dann meine ich das auch:

… denn die HW Devices gibt es auch im Grid. Die Möglichkeiten sind enorm. Es ist ja nicht so, dass Bitwig nicht schon über genug modularen Voodoozauber verfügt …. mit JACK kann man das Ganze noch auf die Spitze treiben (übrigens: Audiosignale können auch als CV genutzt werden 😉). Ich kann hiermit jede Audio-Anwendung mit Bitwig verbinden … jede DAW (Renoise, Waveform, Reaper, Ableton, Studio One …), Max/MSP, usw…

QJACKCtl nutzen

Die zweite Anwendung, die JACK für MacOS mitinstalliert ist QJACKCtl. Das ist ein Controller für JACK, der eigentlich für den Einsatz unter Linux gedacht war, aber auch für den Mac von Nutzen ist. Wenn der JACK Server läuft und man verschiedene Audio-Anwendungen starten, werden diese automatisch „verkabelt„. D.h. es wird in den meisten Fällen auch immer eine Verbindung zum Standardausgang (System Output) des Audio Interfaces hergestellt. Meistens möchte man aber nicht, dass eine Anwendung, die in Bitwig genutzt wird, gleichzeitig Signale an die Lautsprecher schickt. Hier kann ich manuell die Verkabelung ändern…

JackPilot verfügt auch über eine Möglichkeit die Verkabelung zu ändern, die aber weniger komfortabel ist. Diese erreiche ich über den Button „Routing“ der JackPilot App. Wenn ich jetzt mal QJACKCtl starte finde ich eine Art Transport-Fenster. Man könnte diesen Transport nutzen, um den Transport verschiedener Anwendungen synchron zu starten, aber das ist im Moment erst einmal uninteressant. Für uns ist im Moment nur der Button „Connect“ wichtig.

Hier sehe ich eine Übersicht aller laufenden Audio-Anwendungen und wie diese verkabelt sind.

Mit den Pfeilen neben den Anwendungen kann ich diese aufklappen und die einzelnen Kanäle sehen. Wenn ich nun links bei den Outputs einen Kanal anklicke und dann rechts bei den Inputs einen Kanal, kann ich diese entweder Connecten oder Disconnecten. So kann man manuell diverse Verbindungen anlegen, bzw. automatisch angelegte Verbindungen wieder aufheben. Das Ganze sieht auf den ersten Blick etwas verwirrend aus, aber wenn man erstmal ein oder zwei Verbindungen damit geändert hat, gewöhnt man sich daran.

Und was ist mit Midi?

Wie bereits erwähnt kann man JACK Midi mit Core Midi des MacOS verbinden und JACK auch für Midi nutzen. Da der Mac aber schon über den IAC-Treiber verfügt, mit dem man Midi-Daten über verschiedene Anwendungen hinweg austauschen kann, würde es keinen Sinn machen darauf näher einzugehen. Auch hier hat Apple vor Microsoft wieder die Nase vorn. Die Möglichkeiten des IAC-Treibers möchte ich nicht mehr missen.

Mithilfe des HW Instrument Devices könnte ich nun Midi-Daten mithilfe des IAC-Treibers an ein externes Instrument schicken und dank JACK das Audio-Signal zurück nach Bitwig leiten. Einfacher geht es nicht…

Dieser Beitrag bezieht sich nun nur auf JACK unter MacOS. Unter Linux ist JACK sowieso der Standard. Wie das Ganze unter Windows funktioniert, habe ich mir noch nicht allzu ausführlich angeschaut, weil mir Windows-Audio meistens starke Kopfschmerzen bereitet. Mal sehen, vielleicht wage ich demnächst mal ein Experiment und wer weiß, vielleicht löst es ja sogar einige Audio-Probleme unter Windows….