web-dev-qa-db-de.com

Automatische Umschaltung der Equalizer-Voreinstellung basierend auf der Audioausgabe (interner oder externer Lautsprecher)

Die folgenden Fakten stammen aus der Erfahrung mit Ubuntu 13.10 auf einem 64-Bit-Laptop.

Kontext/Problem: schlechte Sprecher

Wie viele Leute wissen, haben Laptop-Lautsprecher einen "sehr ungleichen Frequenzgang", wie Audioprofis sagen würden. Normale Leute sagen: "Sie klingen sehr schlecht ".

Lösung im ersten Schritt: Ausgleich

Equalizing bietet eine wertvolle Abhilfemaßnahme , mit der die Klangqualität mit einem einmaligen Aufwand dramatisch verbessert wird. Zum Beispiel habe ich PulseAudio Equalizer von Web Upd8 installiert.

Für gute Ergebnisse sollten Ausgleichswerte auf der Grundlage von Messungen ausgewählt werden, aber das ist eine andere Geschichte (ich könnte es mit Ubuntu alleine tun, obwohl es schwierig ist, fragen Sie mich nach Einzelheiten).

Verbleibendes Problem: Ausgleichskurve ist leistungsabhängig

Ausgleichswerte sind an die gesamte Kette gebunden, obwohl im Allgemeinen nur die Lautsprecher eine Hauptursache für ungleiche Reaktionen sind.

Das heißt, ich habe zwei Ausgleichsprofile:

  • eine für Laptop-Lautsprecher (mit stark variierender Entzerrungskurve)
  • eine andere (viel flachere Kurve, daher ist das Deaktivieren der Entzerrung oft akzeptabel), wenn eine externe Stereoanlage an z. eine 3,5-mm-Buchse.

Aktuelle Situation in der Praxis: Auto ein/aus, gut aber nicht ausreichend

  • Wenn Sie die 3,5-mm-Buchse an die externe Stereoanlage anschließen, werden die internen Lautsprecher automatisch stummgeschaltet und die Lautstärke vom Ubuntu-Stack angepasst. Das ist gut, aber nicht ausreichend.
  • Beim Abziehen werden die internen Lautsprecher automatisch wieder aktiviert. Das ist gut, aber nicht ausreichend.

Verbesserung: Nicht nur die automatische Stummschaltung, sondern auch die automatische Auswahl der Equalizerkurve

Es wäre viel besser, wenn Sie die richtige Equalizer-Voreinstellung anwenden würden, wenn Sie die 3,5-mm-Buchse herausziehen/einstecken. Schließen Sie die externe Stereoanlage an, die flache Kurve ist ausgewählt. Ziehen Sie den Stecker aus der Steckdose, die internen Lautsprecher erhalten ihre Korrekturkurve.


Fragen

Wie mache ich einen schnellen und schmutzigen Hack? Wie erkennt man einen Klinkenstecker aus einem Skript?

So führen Sie ein sauberes Setup durch: Ordnen Sie die Equalizer-Kurve nicht nur dem Plug-Event, sondern dem internen Lautsprecher zu.

Angenommen, ich stecke ein USB-Audiogerät ein und spiele Audio über dieses ab. Der Quick-and-Dirty-Hack würde die EQ-Kurve jedes Mal ändern, wenn die 3,5-mm-Buchse abgezogen/eingesteckt wird, obwohl das Audio weiterhin zum USB-Audiogerät und nicht zum internen Lautsprecher geleitet wird, was eine Änderung der EQ-Kurve irrelevant macht.

In einem "sauberen" Setup würde dem internen Lautsprecher ein sauberes Ausgleichsprofil zugewiesen, was die Sache robuster macht. In jeder Situation wird es immer (und nur) bei Bedarf angewendet.

Arbeitet jemand daran? Irgendein Hinweis?

Vielen Dank für Ihre Aufmerksamkeit.

3

Da ich ein ähnliches Problem habe, habe ich ein "schnelles und schmutziges" python Skript erstellt, das die DBus-Events von pulseaudio verwendet, um zu erkennen, wann welches Equalizer-Profil aktiviert werden muss.

Installation

Um es zu benutzen, müssen Sie die folgende Zeile zu /etc/Pulse/default.pa hinzufügen:

load-module module-dbus-protocol

Deaktivieren Sie dann den Equalizer über pulseaudio-equalizer-gtk und klicken Sie auf "Apply settings", schließen Sie nun die GUI.

Download apply-equalizer.py irgendwo speichern und ausführbar machen.

Führe es als Benutzer (!) Aus. Möglicherweise müssen Sie einige zusätzliche python Module installieren. Außerdem möchten Sie es möglicherweise automatisch beim Anmelden starten (ich weiß nicht, wie das am besten funktioniert).

Verwendung

Das Skript erstellt pro Port [1] Equalizer-Konfigurationen unter ~/.config/apply-equalizer und verknüpft sie mit Symbolen, wenn ein Gerät den Ausgangsport ändert (d. H. Kopfhörer angeschlossen oder angeschlossen).

[1]: Viele Soundkarten haben unterschiedliche Ports, z. ein Lautsprecheranschluss und ein Kopfhöreranschluss

So:

  1. Kopfhörer ausstecken.
  2. Öffnen Sie die pulseaudio-Equalizer-Benutzeroberfläche
  3. Passen Sie die Equalizer-Einstellungen an, bis sie gut klingen
  4. "Apply Settings" weist dann die von Ihnen vorgenommene Konfiguration (auch wenn der Equalizer überhaupt aktiviert ist) dem aktuellen Port zu (Lautsprecher in diesem Fall)
  5. Schließen Sie die GUI und wiederholen Sie den Vorgang ab Schritt 2 für jeden Port, den Sie zuweisen möchten (Kopfhörer nicht angeschlossen).

Jetzt werden die Equalizer-Einstellungen automatisch angepasst, wenn Sie zwischen Lautsprechern und Kopfhörern wechseln.

2
Euro

Hier eine manuelle Lösung zum Umschalten zwischen Equalizor ON (mit Ihren bevorzugten Einstellungen) und OFF:

if [ "$(pulseaudio-equalizer status | grep "Equalizer status" | cut -d"[" -f2 | cut -d"]" -f1)" == "enabled" ]; then
    pulseaudio-equalizer disable
else
    pulseaudio-equalizer enable
fi

Speichern Sie die Datei als Bash-Skript, und erstellen Sie einen neuen Panel-Starter, um das Skript direkt vom Desktop oder Ihrem Menü-Panel aus zu starten.

1
panticz.de