Musik-Produktion unter Linux / music as code

von Frank Rocholl am Sonntag, 6. September 2020

Musikproduktion und Linux passt (neuerdings) ebenfalls gut zusammen. Ich nutze Software unter Linux für das MIDI-Recording, um Noten zu setzen, um Mehrspurmitschnitte von Konzerten zu machen und um Bildaufnahmen und Ton zusammen zu schneiden. Neben analogen Instrumenten, wie Gesang und Gitarre, sind auch MIDI-Daten vom E-Schlagzeug und externen Synthesizern, sowie Soft-Synths aus dem Rechner zu verarbeiten. Hier ein Erfahrungsbericht.

Folgende Software setze ich ein:

Daneben nutze ich ganz viel git, um der Daten auf den unterschiedlichen Rechnern Herr zu werden (Stichwort: music as code).

Anforderungen

Ein großes Thema in der Audioproduktion mit dem Computer sind Latenzen. Diese sind bei der Aufnahme möglichst gering zu halten. Beim reinen Abspielen stören sie jedoch nicht.

Meine Anforderung ist zusätzlich, dass eine Weiterbearbeitung der Daten in unterschiedlichen Umgebungen (Soundkarten, PCs, Laptops) erfolgen muss, denn jeder Rechner hat seine Stärken (Rechenleistung, Portabilität).

Die Anforderungen sind im Detail:

Tipps zur Konfiguration

Anbei ein paar allgemeine Tipps zur streßfreien Verwendung von Linux in (meinem) Audioumfeld.

In der Datei ist zu setzen:

autospawn = no

Nun kann der pulseaudio-Prozess "gekillt" werden, ohne dass sofort eine neuer startet. Anmerkung: Beim Schneiden von Videoaufnahmen mit Kdenlive ist pulseaudio wieder zu aktivieren. Sonst hört man keinen Ton.

Sind meine Aktionen zeitkritisch, so verwende ich Ubuntustdio. Die Bedienung des X-AIR-18 Inetrfaces ist nicht zeitkritisch. Daher erledige ich diese unter einem Standard Debian-Stable, oder Raspbian (Behringer bietet die X-AIr18-Software auch für die ARM-Architektur an. Auf einem Raspberry PI ist die Software hinreichend schnell.

Installation Raspbian

Download der Software unter https://www.raspberrypi.org/downloads/raspbian/

unzip 2018-06-27-raspbian-stretch.zip

Unter /var/log/messages bestimmen welches Devicname der SD-Karte erhält, wenn sie eingesteckt wird. Wird ein externer Kartenleser verwendet, so lautet der Name häufig /dev/sdc oder ähnlich. Bei dem internen Kartenleser meines T420s-Laptops lautet der Name des devices /dev/mmcblk0

dd bs=4M if=2018-06-27-raspbian-stretch of=/dev/mmcblk0 conv=fsync

Konfiguration Raspbian

Unter Raspberry-Pi-Configuration kann man den

Eventuell ist ein Proxy zu setzen mittels:

root@hal9003:~# cat /etc/apt/apt.conf.d/90custom 
Acquire::http::Proxy "http://foo.bar.de:8080";

aptitude install obconf

Installation X-Air Software

Für die digitale Mischpult-Serie von Behringer gibt es Steuersoftware für Linux. Die Steuersoftware liegt für die Intelarchitektur 32bit und neuerdings auch in 64bit vor. Auch für den Raspberry-Pi gibt es eine Version.

Man kann die Software auf der Behringer Homepage downloaden.

Xruns und Latenzen/Konfiguration jackd

Je nach Anforderung, setze ich unterschiedliche Hardware ein.

holzwurm: Selbstbau PC, Intel(R) Atom(TM) CPU D510, 2GB RAM, 120G SSD, Onboard Grapikkarte - Lüfterfreier PC. Erlaubt Gesangsaufnahmen ohne Nebengeräusche und XRuns. Aufgrund der hohen Latenz sind die Gesangsspuren nach der Aufnahme zu verschieben.

rocholl@holzwurm:~$ cat .jackdrc  64ms
/usr/bin/jackd -dalsa -dhw:X18XR18 -r48000 -p1024 -n3 -Xseq

hackepeter: Lenovo T420s, Intel(R) Core(TM) i5-2520M CPU @ 2.50GHz, 8GB RAM, 250G SSD, Onboard Graphikkarte - Laptop zum Abmischen auf Reisen oder Aufnahmen mit ardour bei Auftritten. Wenn Ardour und X-Air-Edit gleichzeitig gestartet sind trotz hoher Latenz keine Aufnahmen ohne XRuns möglich. Daher wird dieser Rechner nur für Aufnahmen verwendet.

rocholl@hackepeter:~$ cat .jackdrc # qjackctl Latenz 64ms
/usr/bin/jackd -dalsa -dhw:X18XR18,0 -r48000 -p512 -n6 -Xseq

rapante: Lenovo C20, Intel(R) Xeon(R) CPU X5675 @ 3.07GHz, 24G RAM, 1T Hardisk, NVIDIA Corporation GF106GL - unportable aber eierlegende Wollmilchsau, In diesem Setup kann Ardour, X-Air-Edit Rosegarden und fluidsynth auf einer Hardware mit geringen Latenzen ohne XRuns betrieben werden. Rechner ist jedoch nicht portabel und hat einen (leisen) Lüfter.

rocholl@rapante:~$ cat .jackdrc # JAckd Latenz 8,71ms
/usr/bin/jackd -v -dalsa -dhw:X18XR18,0 -r44100 -p128 -n3 -Xseq

raspbian: Kleiner Raspberry PI 3B+ für X-Air-Edit interface im Kellerstudio. Vorteil: Leise und billig. Nachteil: Zu schwachbrüstig für Ardour und Co.

piepmatz: Lenovo X220: Intel(R) Core(TM) i5-2540M CPU @ 2.60GHz, 4GB RAM, 300GB Harddisk, Onboard Grapikkarte - 2. PC für X-Air-Edit interface auf Konzerten

schnippedilrichman: Lenovo T430, Intel(R) Core(TM) i7-3520M CPU @ 2.90GHz, 4GB RAM, 170G SSD, Onboard Graphikkarte, Gnome Classic, Bildschirmschoner aus, jackdbus deaktiviert - Laptop als Gitarrenverstärker (guitarix, Audiointerface Behringer U-Phoria UMC204HD)

rocholl@schnippedilrichman:~$ cat .jackdrc # qjackctl Latenz 2.67ms
/usr/bin/jackd -dalsa -dhw:U192k -r48000 -p64 -n2

mrcrabs: Lenovo ThinkPad Yoga 370, Intel(R) Core(TM) i5-7300U CPU @ 2.60GHz, 8GB RAM, 500G SSD, Onboard Graphikkarte, Cinnamon

rocholl@mrcrabs:~$ cat .jackdrc # gjackctl Latenz 4.35ms
/usr/bin/jackd -dalsa -dhw:X18XR18 -r44100 -p64 -n3 -Xseq

lithium: Lenovo ThinkStation P340, Intel(R) Core(TM) i7-10700K CPU @ 3.80GHz, 32GM RAM, 500 GB SSD, Onboard Graphikkarte, Debian 11 GNOME3

rocholl@lithium:~$ cat .jackdrc  #  gjackctl Latenz 1.45ms
/usr/bin/jackd -dalsa -dhw:U192k -r88200 -p64 -n2 -Xseq

oxygen: Lenovo ThinkPad T480, Intel(R) Core(TM) i5-8350U CPU @ 1.70GHzm 8GB RAM, 256GB SSD, Debian 11, Gnome 3

rocholl@oxygen:~$ cat .jackdrc # 8.71ms
/usr/bin/jackd -dalsa -dhw:U192k -r88200 -p256 -n3 -Xseq

Mit diesem kleinen Setup lässt sich nun nach ein paar Jahren Konfigurationsarbeit, im Kellerstudio und auch Live, arbeiten. Es gibt keine Ausreden mehr :-). Jetzt wird also Musik gemacht.

Deaktivieren der Onboard-Soundkarte

Onboard-Soundkarten besitzen normalerweise einen schlechte Audio-Qualität. Benutzt man nur eine externe Soundkarte, so kann man die interne getrost deaktivieren.

In der Praxis hat sich auch gezeigt, dass die Verwendung von 2 Soundkarten zur Verwirrung führt. Ardour 6 kann beispielsweise mit 2 Soundkarten umgehen und ich habe noch nicht rausgekriegt, wie ich deren Verwendung im Detail konfugurieren kann.

Blacklistet man den Treiber der internen Soundkarte, so ist diese nach dem Reboot nicht mehr verfügbar.

Vor dem Reboot:

    rocholl@schnippedilrichman:~# cat /proc/asound/cards
 0 [PCH            ]: HDA-Intel - HDA Intel PCH
                      HDA Intel PCH at 0xd2530000 irq 36
 1 [U192k          ]: USB-Audio - UMC202HD 192k
                      BEHRINGER UMC202HD 192k at usb-0000:00:1d.0-1.5.2, high speed

Deaktivieren der Soundkarte:

root@schnippedilrichman:~# cat /etc/modprobe.d/blacklist.conf 
# disable my PCI intel sound card
blacklist snd_hda_intel

Nach dem Reboot :

rocholl@schnippedilrichman:~$ cat /proc/asound/cards
 1 [U192k          ]: USB-Audio - UMC202HD 192k
                  BEHRINGER UMC202HD 192k at usb-0000:00:1d.0-1.5.2, high speed

Ardour 6.2

Ardour 6.2 hat viele Verbesserungen unter der Haube. Es empfiehlt sich direkt diese Version zu verwenden. Debian unstable hat diese Version bereits paketiert. Falls die eigene Distrubution kein Ardour 6.2 dabei hat, kann Ardour als Binary von der Homepage heruntergeladen werden.

Es ist jedoch auch einfach möglich sich Ardour einfach selbst zu kompilieren.

Unter Ubuntustudio sind einige Pakete nachzuinstallieren.

apt install libboost-dev libasound2-dev libpulse-dev libglibmm-2.4-dev libsndfile1-dev libcurl4-gnutls-dev libarchive-dev liblo-dev \ 
libtag1-dev librubberband-dev libfftw3-dev libaubio-dev libxml2-dev liblrdf0-dev libsamplerate0-dev lv2-dev libserd-dev libsord-dev \
libsratom-dev liblilv-dev libgtkmm-2.4-dev libsuil-dev libjack-jackd2-dev libudev-dev libwebsockets-dev libcppunit-dev \
libreadline-dev libusb-dev vamp-plugin-sd chrpath libclang-dev libsoundtouch-dev libdbus1.0-cil-dev

Dann braucht man nur noch der Installationsanleitung unter https://ardour.org/building_linux.html zu folgen.

Links

Anbei ein paar Links, die mir bei der Konfiguration geholfen haben: