Webseiten-Werkzeuge


Seitenleiste

Systemweiter DSP unter Linux

Für Windows gibt es Equalizer APO. Damit lässt sich der Klang eines Lautsprechers oder Kopfhörers relativ einfach anpassen; und zwar systemweit. Das heißt, nicht jedes einzelne Programm, welches Töne ausgibt, muss speziell eingestellt werden. Digitale Signalprozessoren (DSP) gibt es schon ein paar Jahrzehnte und mittlerweile sind so gut, dass man es nicht mehr hören kann, ob sie eingesetzt wurden oder nicht. Deswegen können sie problemlos verwendet werden, um den Klang Lautsprechern oder Kopfhörern zu verbessern. Das gilt insbesondere für sogenannte High End-Produkte, die oftmals schon sehr gut klingen aber in ganz kleinen Teilen vom Ideal noch abweichen können.

Mit Linux kann man selbstverständlich auch einen DSP benutzen. Im Idealfall hast du dafür ein Physikstudium mit Schwerpunkt Akustik absolviert und kannst gut programmieren, dann machst du einfach alles selber. Für den kleinen Rest gibt es ein Programm namens dsp, welches Abhilfe schaffen kann. Installation und Konfiguration sind an dieser Stelle schon sehr gut beschrieben, das spare ich mir hier.

Mein Ziel ist es nur ein paar Frequenzgangkorrekturen machen zu können, ohne dass ich dafür umständlich Programme einstellen oder immer wieder manuelle Handgriffe tätigen muss. Dieses Setup ist relativ einfach und hat deswegen ein paar Einschränkungen, die in der Praxis aber oftmals anzutreffen sein sollten:

  • Ich verwende nur PulseAudio und kein alsa,
  • nur Stereo,
  • die Einstellungen gelten nur für einen Benutzer und nicht systemweit.

Auch wenn die Bezeichnungen und die Syntax in PulseAudio manchmal etwas verwirrend sein können, ist Funktionsweise relativ einfach. Das Programm erstellt eine virtuelle Soundkarte, die deine gewünschten Änderungen am Klang vornimmt, und gibt alles dann an die physikalische Soundkarte weiter. Diese Änderungen passieren so schnell, dass du im Normalfall keinen Zeitversatz hören wirst. Nur sehr komplexe Filter werden Probleme bereiten.

Vorbereitung von PulseAudio

Nach der Installation musst du als erstes herausfinden, wie deine Soundkarte samt passendem Ausgang in PulseAudio heißt, das kannst du dir mit dem Kommando pactl list sinks short anzeigen lassen:

~ % pactl list sinks short
0       alsa_output.pci-0000_00_1b.0.iec958-stereo      module-alsa-card.c      s16le 2ch 44100Hz       SUSPENDED

In der Datei ~/.config/pulse/default.pa sagen wir der Soundkarte, dass unser DSP (ladspa_dsp) jetzt das Standardgerät ist und die angepassten Audiosignale dann an die eigentliche Soundkarte (alsa_output.pci-0000_00_1b.0.analog-stereo) geleitet werden sollen. Weiterhin wird ein LADSPA Plugin geladen, welches die eigentliche Arbeit für uns macht.

~/.config/pulse/default.pa
.include /etc/pulse/default.pa

load-module module-ladspa-sink sink_name=dsp master=alsa_output.pci-0000_00_1b.0.analog-stereo plugin=ladspa_dsp label=ladspa_dsp
set-default-sink dsp

Damit ist die grundlegende Einrichtung schon abgeschlossen.

Nun kannst du beliebig komplexe Einstellungen für deine Lautsprecher oder Kopfhörer vornehmen. Dazu passt du einfach die Datei ~/.config/ladspa_dsp/config an, dazu komme ich gleich.

Ein beherztes pulseaudio -k lässt PulseAudio neu starten und die neuen Einstellungen übernehmen. Eventuell müssen laufende Anwendungen neu gestartet werden.

DSP-Filter konfigurieren

Nun kommen wir zu des Pudels Kern, die Konfiguration des Filters. So sieht meine Konfigurationsdatei ~/.config/ladspa_dsp/config aktuell aus:

~/.config/ladspa_dsp/config
effects_chain=lowshelf 80 0.7 4 gain -4.5 eq 250 0.3 1 eq 1000 2 -3 eq 6000 4.32 3 eq 6650 6 -3 eq 5600 6 -8 eq 7200 8 -3 eq 8400 8 5 eq 9200 4.32 -3

Die Zeile muss mit effects_chain= beginnen und danach folgen die Effekte, die angewendet werden sollen. Zum Glück lässt sich das alles mit einem Befehl grafisch anzeigen (gnuplot muss installiert sein) und dann kann man schnell erahnen was da passiert:

dsp -pn lowshelf 80 0.7 4 gain -4.5 eq 250 0.3 1 eq 1000 2 -3 eq 6000 4.32 3 eq 6650 6 -3 eq 5600 6 -8 eq 7200 8 -3 eq 8400 8 5 eq 9200 4.32 -3 | gnuplot

 Settings für Stax SR-Lambda Pro

Kleiner Exkurs in die Psychoakustik

Der Plot zeigt die Einstellungen für meinen Kopfhörer, den Oltimer Stax SR-Lambda Pro. Der klingt trotz seines Alters sehr gut aber insgesamt ein bisschen zu laut im Hochton für mich. Ich senke also den Frequenzbereich über 80 Hz um ein paar Dezibel herab. Das führt außerdem dazu, dass ich leiser hören kann und trotzdem noch einen vollen Klang habe.

Ein paar Resonanzen im Hochton störten mich noch. Das muss übrigens nicht am Kopfhörer liegen, denn oft sieht man diese Resonanzen im Hochton bei einer Messung gar nicht. Ohrkanalresonanzen können dafür verantwortlich sein: Das Ohr verstärkt bestimmte Frequenzen im Hochton, um zum Beispiel die menschliche Sprache besser von anderen Geräuschen unterscheiden zu können. Die Frequenzen sind je nach Anatomie unterschiedlich ausgeprägt und erklären unter anderem, warum zwei Personen einen unterschiedlichen Höreindruck bei einem identischen Kopfhörer haben können.

Skript

Um schnell zwischen verschiedene Filter wechseln zu können, habe ich ein kleines Skript geschrieben. Dazu muss der Pfad im Skript gesetzt werden, in meinem Fall ~/.config/ladspa_dsp. In diesem Ordner lege ich dann die verschiedenen Filter an. Das Skript listet alle vorhandenen Filter auf, wenn kein Parameter übergeben wird. Ansonsten muss der Name des Filters als Übergabeparameter angegeben werden.

/usr/local/bin/set_eq
#!/bin/sh
path="${HOME}/.config/ladspa_dsp/"
 
list_profiles () {
	echo "Available profiles"
	echo "=================="
	cd $path
	for entry in *
	do
		if [ -f "$entry" ] && [ "$entry" != "config" ];then
			echo "$entry"
		fi
	done
}
 
copy_profile () {
	cd $path
	cp $1 config
	echo "profile $1 active"
	pulseaudio -k
	echo "pulseaudio restarted"
}
 
if [ -f "$path$1" ]
then
	copy_profile $1
else
	list_profiles
fi

Diskussion

Gib Deinen Kommentar ein. Wiki-Syntax ist zugelassen:
B M H N J
 
blog/systemweiter_dsp_unter_linux.txt · Zuletzt geändert: 2019-07-07 12:42 von Admin