Multitrack-Recording unter Linux – Teil 1 – Audio-Setup mit Jack
in Linux, Musik | Tags: alsa, audio, JACK, Kernel, Linux, Qjackctl, Soundkarte, USBZurück zur Übersicht: Multitrack-Recording unter Linux mit Ardour, Qjackctl und Hydrogen
So, ich wollte wie angekündigt den recht knappen Artikel über Multitrack-Recording in seinen Einzelteilen näher erläutern, also werdet ihr nach und nach wirklich alles erfahren, was notwendig ist. Heute zunächst Teil 1, und den widme ich dem Thema Audio-Setup. Das bedeutet, wir bringen unsere Soundkarte dazu, unter Linux das zu tun, wofür sie gebaut wurde, nämlich Audio rein- und rauszulassen.
Das konkrete Beispiel ist die Roland-Edirol UA-3, die es wiegesagt in dieser simplen Form nicht mehr gibt, sondern mit allerlei eingebauten Effekten. Wer’s braucht… Auf jeden Fall ist die UA-3 Karte eine Empfehlung für Hobby-Musiker am Rechner, weil sie als externe USB-Soundkarte beim Wandeln nicht jedes Festplattengeräusch mit aufnimmt. Die Wandlung ist wirklich viel klarer, auch wenn nur in 16 Bit Tiefe. Des weiteren hat sie einen Gitarren- und einen Mikrophon-Eingang, falls man wirklich gar nichts an externen Geräten mit hat. Ich habe keine Erfahrung mit diesen beiden Eingängen, ich setze eher auf extra Preamps und würde die Eingänge im Normalfall nicht benutzen. Ein Fader regelt beide Eingänge. Daneben gibts einen Cinch-Stereo-Eingang, auch mit einem Fader regelbar, einen Cinch-Ausgang und einen 3,5mm-Klinke-Kopfhörer-Ausgang, regelbar durch einen großen Drehregler mit Fingerversenkung. Sogar einen optischen Digital-Eingang und -Ausgang gibts da dran. Alles wird über USB mit Strom versorgt, also einfach reinstecken und benutzen (sogenanntes Plug’n’Pray). Ich glaube, ich habe für das gute Stück vor Jahren etwa 160 Euro bezahlt und möchte es nimmer missen. Auch falls man mal etwas DJ am Rechner spielt, kann man sie als zusätzliche Soundkarte anstöpseln und Songs über den Kopfhörer vorhören.
Soundkarte im Kernel mit den alsa-Treibern aktivieren
Um professionelles Audio mit Linux zu betreiben, gibt es die JACK-Audio-Schnittstelle. Ich werde weiter unten noch näheres dazu erläutern, jetzt ist nur wichtig, dass wir JACK brauchen werden. JACK arbeitet mit unterschiedlichen Backends, die die jeweilige Hardware anbindet, unter anderem auch alsa, welches Teil des Kernels ist. Die UA-3 hat einen alsa-Treiber. Also aktivieren wir einfach die Kernel-Unterstützung, um so die UA-3 später mit Soundprogrammen nutzen zu können. Da die Soundkarte über USB angeschlossen wird, verwendet der Linux-Kernel das Treiber-Modul snd_usb_audio dafür:
1 2 3 4 5 6 7 8 9 | lx:/home/nudge# lsmod | grep snd snd_usb_audio         78784 1 snd_usb_lib           15808 1 snd_usb_audio snd_seq_midi           6176 0 snd_rawmidi           21216 2 snd_usb_lib,snd_seq_midi snd_hwdep              7044 1 snd_usb_audio snd_intel8x0          29084 2 snd_ac97_codec       102692 1 snd_intel8x0 ac97_bus               1600 1 snd_ac97_codec |
lx:/home/nudge# lsmod | grep snd snd_usb_audio         78784 1 snd_usb_lib           15808 1 snd_usb_audio snd_seq_midi           6176 0 snd_rawmidi           21216 2 snd_usb_lib,snd_seq_midi snd_hwdep              7044 1 snd_usb_audio snd_intel8x0          29084 2 snd_ac97_codec       102692 1 snd_intel8x0 ac97_bus               1600 1 snd_ac97_codec
Wir müssen also zur Benutzung der Karte nichts machen außer das Kernel-Modul vorrätig haben. Dazu verwendet man am besten einen sehr aktuellen Kernel, damit die darin verbauten alsa-Treiber auch recht aktuell sind. Wer eine der größeren Distributionen verwendet, sollte das schon in diesem Zustand haben.
In Ausnahmefällen sollte man darüber nachdenken, seinen eigenen Kernel zu basteln, wenn man ernsthaft über größere Audio-Projekte nachdenkt. Auf diesem Wege lässt sich das eigene System viel mehr auf Echtzeit- und Multimedia-Fähigkeiten optimieren. So kann man die Kernel-Timer-Frequenz auf 300 Hz anheben, Realtime-Unterstützung aktivieren, viele unnütze Dinge abschalten und den Kernel verschlanken, den Scheduler wählen und nicht zuletzt die Unterbrechungen (= Preemption) des Kernels auf die eigenen Bedürfnisse anpassen. Es gibt natürlich auch Distributionen, die das bereits perfekt aufsetzen, aber nicht jeder mag eine eigene Distro für Sound-Arbeiten installieren.
In der Praxis sollte also hier nix zu tun sein. Stöpselt eine USB-Karte ran und ihr solltet dieselben Module aufgelistet bekommen. Wenn nicht, dann ran die Buletten, am besten einen Freund fragen, wenns Probleme beim Kompilieren gibt.
Plug in the JACK!
Endlich läuft die Karte im allgemeinen unter Linux, und nun gehts in Richtung “professionelles Audio”. Dazu noch wie oben angekündigt ein paar Worte zu JACK im allgemeinen. Einige sehr kluge Linuxer haben vor vielen Jahren schon über die bestmögliche Architektur von Audio unter ihrem Lieblingsbetriebssystem nachgedacht und sind zu einer Lösung namens JACK gekommen. JACK (auf Deutsch soviel wie “Klinkenstecker”) ist ein Akronym für Jack Audio Connection Kit. Das verrät schon die Architektur: Audio-Programme und Audio-Hardware werden verbunden über JACK. JACK ist also eine Art Mischpult oder Sound-Router, an den sich Programme wie auch Hardware, beide als Jack-Clients, anschließen lassen. JACK-Clients registrieren sich am Router und sagen, wieviele Audio-Ein- und Ausgänge sie bieten, ob Midikanäle da sind etc. Die angebotenen Ein- und Ausgänge stehen dann allen anderen Jack-Clients wieder zur Verfügung, um sich daran anzustöpseln. Ein sehr cooles Prinzip, denn so können verschiedene Autoren ganz unterschiedliche Sound-Software schreiben (Synthies, Drum-Sequencer, Mixer, Plugins wie Effekte), und diese müssen nur als JACK-Clients ausgerüstet werden, um miteinander reden zu können.
Jack kommt im allgemeinen in den Paketquellen der gängigsten Distributionen vor. Allerdings ist es ratsam, sich die aktuellen Quellen aus dem Subversion zu ziehen und Jack selbst zu kompilieren, möchte man in den Genuss der allerneuesten Ausgabe kommen. Da man das vielleicht öfters macht, hier ein kleines Helfer-Script dazu:
1 2 3 4 5 6 7 8 | #!/bin/sh echo "Get new jack..." cd /usr/local/src/jack/ svn co http://subversion.jackaudio.org/jack/trunk/jack echo "Compile new jack..." cd /usr/local/src/jack/jack make clean && ./configure --disable-portaudio --disable-oss --enable-optimize && make && make install |
#!/bin/sh echo "Get new jack..." cd /usr/local/src/jack/ svn co http://subversion.jackaudio.org/jack/trunk/jack echo "Compile new jack..." cd /usr/local/src/jack/jack make clean && ./configure --disable-portaudio --disable-oss --enable-optimize && make && make install
Um die UA-3 ordentlich mit Realtime-Fähigkeiten unter JACK benutzen zu können, sollte man den JACK-Dienst mit ausreichend Berechtigung starten. Es ist linux-ethisch nicht optimal, aber ich starte dazu meist eine X-Session unter root mit icewm, einem Mini-Fenstermanager, der zudem die Systemlast rechts unten neben dem Datum immer anzeigt. Für Audio-Sachen optimal für mich. Dann starte ich Qjackctl, eine Kontroll-GUI für den jackd-Dienst mit einer netten Qt-Oberfläche. Im folgenden Screenshot sieht man meine Einstellungen für die UA-3 mit dem selbst kompilierten JACK-Dienst /usr/local/bin/jackd.

Audio Setup der Edirol UA-3 unter Qjackctl
Das Setup mag nicht optimal sein – es gibt sicherlich bessere, performantere oder audiophilere Einstellungen. Für ein paar Hobbyaufnahmen bin ich damit zufrieden. Auch die Latenz von damit erreichbaren 23 ms (bzw. 46 ms Ein- und Ausgang) stört mich nicht, da ich keine Abhör-Effekte im Rechner nutze. Das ist das gute an externen Preamps: Unerreichbare Latenz und bessere Systemstabilität durch weniger Last! Man könnte ebenso die Pufferzahl auf 4 erhöhen, das merkt dann man nur daran, dass die Audio-Programme noch ein paar Zehntelsekunden länger spielen, wenn man auf Stop drückt.
Wer allerdings das aufgenommene Signal vorhören möchte, muss versuchen, Latenzen von 6ms oder weniger zu erreichen. Dazu am besten die Frames pro Periode auf 512 oder gar 256 drücken, und dann die Pufferanzahl auf 2 begrenzen. Nur einen Puffer würde ich nicht empfehlen, das könnte schnell zu Aussetzern führen. Allerdings ist so ein Setup auch deutlich systembelastender. Mein Tipp: Vermeiden! Lieber externes Equipment verwenden.
Fazit
Wir haben’s geschafft, unser Rechner ist (fast) vorbereitet auf Multitrack-Recording unter Linux. Die Sounds werden nun per JACK-Dienst zwischen Hard- und Software geroutet. Wer Band-Aufnahmen mit mehr als nur ein paar Spuren plant, wird wohl an Ardour, dem Mehrspur-Recorder, und Hydrogen, dem Drum-Sequencer unter Linux, nicht vorbeikommen. Also wird es beim nächsten Mal um die restliche Software zur Aufnahme gehen. Also bis dann!
Leave a Reply