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:
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.
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.
.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.
Nun kommen wir zu des Pudels Kern, die Konfiguration des Filters. So sieht meine Konfigurationsdatei ~/.config/ladspa_dsp/config
aktuell aus:
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
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.
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.
#!/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