Benutzer-Werkzeuge

Webseiten-Werkzeuge


software:daw

Digitale Audio Workstation (DAW)

Es bestehen mehrere Möglichkeiten unter Linux Audio-Devices wie Soundkarten, USB-Soundkarten, Headsets, Kameras im System einzubinden. In der Regel wird die Hardware über die ALSA Kerneltreiber angesprochen. ALSA bildet dabei die unterste Schicht, auf ALSA setzen Audioserver auf, wie Pulseaudio, Pipewire und JACK. Pulseaudio ist unter MX-Linux (Debian basierend) der Standard Audioserver und genügt für normale Anwendungen wie Video mit VLC oder Firefox schauen, MP3 Player usw. auch völlig. Auch werden USB Geräte wie z.B. ein Headset mit integrierter Soundkarte automatisch erkannt und eingebunden. Andere Software (vor allem ältere Programme) können nur ALSA direkt ansprechen und für professionelle Software wie Ardour oder Rosegarden ist JACK zu empfehlen. Firefox kann nur mit dem Standard Audioserver arbeiten aber nicht mit JACK. Möchte man alles über JACK leiten, ist für Pulseaudio ein Module mit einer Quelle und Senke erforderlich.

Eine Übersicht der Zusammenhänge der Audioserver, Kerneltreiber und Audiodevices gibt dieses Diagramm:

Mit diesen Modulen kann fast jede Software für Audioanwendungen einen passenden Audioserver finden.

Advanced Linux Sound Architecture

Mit ALSA werden alle Audio- und MIDI Devices im System eingebunden. ALSA ist eine Abstraktionsschicht zur eigentlichen Hardware und stellt eine Schnittstelle zu den Audio und MIDI Devices dar. Auf ALSA können unterschiedliche Audioserver aufsetzen.

Pulseaudio

Unter MX-Linux wird bei der Standardinstallation Pulseaudio als Audioserver installiert. Pulseaudio greift auf die von ALSA bereitgestellten Audio Devices über die ALSA Schnittstellen zu. Mit dem Programm pavucontrol können Geräte ein- und ausgeschaltet werden, Programme einem Gerät zugeordnet und die Lautstärke eingestellt werden. pavucontrol verbirgt sich hinter dem Lautstärkeregler der Benutzeroberfläche.

Pipewire

Pipewire ist eine Alternative zu Pulseaudio. Wird Pipewire installiert, so wird Pulseaudio deinstalliert. Pipewire stellt dynamische Schnittstellen für Programme zur Verfügung - für Pulseaudio und JACK. Das ist für normale Anwendungen eine gute Sache, wenn man aber statisches Routing mit z.B. Ardour (Mixer) möchte, dann kann es problematisch werden. Für statische Routen mit Pipewire könnte man Wireplumber mit ein paar Lua Scripts verwenden. Leider unterstützt Wireplumber ab Version 0.5 keine Lua Scripts mehr und die Konfiguration ist wesentlich komplizierter geworden. Daher habe ich von Pipewire und Wireplumber wieder Abstand genommen und stattdessen setze ich die Kombination ALSA/Pulseaudio | JACK ein.

JACK Audio Connection Kit

JACK ist ein Audioserver mit besonders niedriger Latenzzeit und einem Patchfeld. Mit der Patchfeld Funktionalität können Ein- und Ausgänge von Programmen untereinander verbunden werden. Man kann sich JACK wie ein echtes Hardware-Patchfeld mit vielen Klinken- oder XLR Kabeln vorstellen, mit denen die Geräte z.B. im Studio verbunden werden.

Anforderungen & Systembeschreibung

Ich habe mehrere Audio Devices am und im Rechner:

  • Behringer UMC-404 USB Soundinterface 24Bit/192kHz mit 4 Inputs, Monitoring und Stereo Output
  • On-Board Soundkarte
  • Jabra USB Headset mit integrierter Soundkarte
  • Creative USB Webcam mit integrierter Soundkarte
  • HDMI Audio

Für dynamische Audio Devices, die per USB mal angesteckt und abgezogen werden, soll weiterhin nur Pulseaudio zuständig sein. Die Geräte werden erkannt und ins System eingebunden und sind dann über pavucontrol steuerbar.

Die On-Board Soundkarte und das USB Soundinterface sollen nur über JACK laufen. Am UMC-404 sind an den Ausgängen Verstärker angeschlossen, ein kleinerer mit an der Wand hängenden Studiomonitoren, links und rechts von den Displays, und eine größerer Verstärker mit entsprechenden Lautsprechern.

Alle Eingänge von Audio Software sollen über Ardour als Mixer zusammengeführt und über Ausgänge für Monitoring und Master an die Onboard-Soundkarte und/oder das UMC-404 Interface verteilt werden können. Weiterhin sollen die Eingänge der Audio Devices auf den Mixer gegeben werden können.

Realisierung

JACK

Damit JACK die Onboard Soundkarte und das USB Interface verwenden kann, muss dieses in Pulseaudio deaktiviert werden, da keine zwei Audioserver gleichzeitig auf die Hardware zugreifen können. Das kann in pavucontrol oder mit udev Regeln gemacht werden.

Datei: /etc/udev/rules.d/99-audio-ignore-pulse.rules
 
#
# Behringer UMC-404 und onboard Audiokarte soll von Pulseaudio ignoriert 
# werden, da die Devices von JACK verwendet werden. Alle anderen Audio
# Devices wie Webcams, Headsets, Bluetooth Audio usw. sollen weiterhin
# automatisch eingebunden und über Pulseaudio verwendet werden.
#
#
# Bus 001 Device 012: ID 1397:0509 BEHRINGER International GmbH UMC404HD 192k
ATTR{idVendor}=="1397", ATTR{idProduct}=="0509",ENV{PULSE_IGNORE}="1"
# 00:1f.3 Audio device [0403]: Intel Corporation HD Audio Controller [8086:43c8] (rev 11)
SUBSYSTEM=="sound", ATTRS{vendor}=="8086", ATTRS{device}=="43c8", ENV{PULSE_IGNORE}="1"
Für die udev Regeln muss man die Vendor und Product Id wissen. Für USB Devices bekommt man die mit lsusb, für PCI und Onboard Karten muss man die mit lspci -nn ermitteln.

JACK kann über systemweite Dienste oder als Userdienst gestartet werden oder bei Bedarf auch manuell. Welche Soundkarte JACK verwenden soll, stellt man in JACK ein. Dazu ist der Name des Devices erforderlich, den man einfach mit aplay -l bekommt.

tom@amarok:~$ aplay -l
**** Liste der Hardware-Geräte (PLAYBACK) ****
Karte 0: PCH [HDA Intel PCH], Gerät 0: ALC897 Analog [ALC897 Analog]
  Sub-Geräte: 1/1
  Sub-Gerät #0: subdevice #0
Karte 0: PCH [HDA Intel PCH], Gerät 1: ALC897 Digital [ALC897 Digital]
  Sub-Geräte: 1/1
  Sub-Gerät #0: subdevice #0
Karte 1: NVidia [HDA NVidia], Gerät 3: HDMI 0 [DELL U2415]
  Sub-Geräte: 0/1
  Sub-Gerät #0: subdevice #0
Karte 1: NVidia [HDA NVidia], Gerät 7: HDMI 1 [HDMI 1]
  Sub-Geräte: 1/1
  Sub-Gerät #0: subdevice #0
Karte 1: NVidia [HDA NVidia], Gerät 8: HDMI 2 [HDMI 2]
  Sub-Geräte: 1/1
  Sub-Gerät #0: subdevice #0
Karte 1: NVidia [HDA NVidia], Gerät 9: HDMI 3 [HDMI 3]
  Sub-Geräte: 1/1
  Sub-Gerät #0: subdevice #0
Karte 2: J230 [Jabra LINK 230], Gerät 0: USB Audio [USB Audio]
  Sub-Geräte: 0/1
  Sub-Gerät #0: subdevice #0
Karte 4: U192k [UMC404HD 192k], Gerät 0: USB Audio [USB Audio]
  Sub-Geräte: 0/1
  Sub-Gerät #0: subdevice #0

Bei mir ist das UMC-404 Interface mit U192k benannt. Dies wird in den Einstellungen von JACK mit QJackCTL eingetragen. QJackCTL ist ein Programm für die Bedienung und Konfiguration des JACK Audioservers.

Frames/Periode und Perioden/Puffer sollte man nach den Bedürfnissen einstellen. Niedrige Werte sind besser für niedrige Latenzen, aber für manche Software muss man die Werte etwas erhöhen, damit es keine Aussezter gibt.

Mit QJackCTL können die Ein- und Ausgänge persistent verbunden werden. Diese geschieht mit dem Button Steckfeld (Patchfeld).

Eine andere Alternative ist die grafische Ansicht mit dem Button Graph, hier eine Übersicht, wie das bei mir aussieht, mit Clementine als Mediaplayer und Ardour als Mixer.

In der grafischen Ansicht können die Verbindungen mit der Maus gezeichnet werden, als ob man die Klinkenkabel am Mixer steckt. Die Konfiguration sollte man dann speichern, so dass diese beim Starten vom JACK Audioserver wiederherstellt wird.

Pulseaudio & JACK

Da ich jede Software über Ardour schicken möchte, auch diejenige, die nur mit Pulseaudio arbeiten kann, müssen die Signale von Pulseaudio über JACK an Ardour gesandt werden. Diese geschieht mit Sink und Source Modulen für Pulseaudio. Diese Module müssen in der Regel noch installiert werden.

sudo apt install pulseaudio-module-jack

Die Module müssen aktiviert werden, vor dem Start von Pulseaudio ist es am besten. Manuell können die Module mit

pactl load-module module-jack-sink
pactl load-module module-jack-source

geladen werden.

Damit die Module dauerhaft zur Verfügung stehen, sollten diese zur Pulseaudio Konfiguration hinzugefügt werden. Die Module werden in der Datei ~/.config/pulse/default.pa hinzugefügt.

.ifexists module-jack-sink.so
load-module module-jack-sink channels=2
.endif
.ifexists module-jack-source.so
load-module module-jack-source channels=2
.endif

In pavucontrol kann die jeweilige Software eingestellt werden.

Ardour

Ardour ist der Mixer für alle Audiosignale und die digitale Mehrspur-Bandmaschine für Aufnahmen. Ardour ist sehr umfangreich und kann mit Plugins erweitert werden. Plugins können z.B. Reverb, Delay oder Equalizer sein. Meine Mixer Oberfläche sieht zur Zeit so aus, aber ich probiere auch noch viel aus. Die Oberflächen oder besser Konfigurationen kann man speichern und bei Bedarf wieder aufrufen. Ich nutze das nur zum Musik hören, über die Eingänge vom UMC Interface können die Funkgeräte, Tapelaufwerke, Plattenspieler (mit externem Entzerrvorverstärker) in den Mixer gegeben werden.

Ich teste noch mit diverser Software, die da wäre:

Ich spiele zwar kein Instrument, finde aber die Möglichkeiten einer DAW unter Linux sehr interessant und werde dieses System weiter ausbauen, für Aufnahmen der alten Audio-Video Bänder, von Vinyl-Platten. Auch für digitale Betriebsarten im Amateurfunk ist die Software interessant, weil Eingangssignale gleichzeitig an diverse Programme verteilt werden können, zum Beispiel an WSPR und eine Spectrumanzeige. Die Möglichkeiten sind schier unendlich und nur durch CPU Leistung und Speicher begrenzt.
software/daw.txt · Zuletzt geändert: von Tom, DL7BJ