web-dev-qa-db-ja.com

オーディオ出力(内部スピーカーまたは外部)に基づいてイコライザープリセットを自動的に切り替える

以下の事実は、64ビットラップトップでのUbuntu 13.10での経験に基づいています。

コンテキスト/問題:悪い話者

多くの人が知っているように、ラップトップスピーカーは、オーディオの専門家が言うように「非常に不均等な周波数応答」を持っています。普通の人は言う:「彼らは非常に悪い音」。

第一段階のソリューション:イコライゼーション

イコライジングは、貴重な回避策を提供し、一度の努力で音質を劇的に改善します。たとえば、 Web Upd8のPulseAudio Equalizer をインストールしました。

良い結果を得るには、測定値に基づいてイコライゼーション値を選択する必要がありますが、それは別の話です(トリッキーですが、Ubuntuだけでもできます。詳細についてはお問い合わせください)。

残りの問題:等化曲線は出力依存

イコライゼーション値はチェーン全体に付加されますが、一般的に不平等な応答の主な原因はスピーカーのみです。

これは、2つのイコライゼーションプロファイルがあることを意味します。

  • 1つはラップトップスピーカー用(大幅に変化するイコライゼーションカーブ)
  • 外部ステレオがプラグインされている場合、別の(より平坦な曲線なので、イコライゼーションを無効にすることがしばしば受け入れられます) 3.5mmジャック。

実際の現在の状況:自動アン/ミュート、良好だが不十分

  • 3.5mmジャックを外部ステレオに差し込むと、Ubuntuスタックによって内部スピーカーが自動的にミュートされ、音量が調整されます。これは良いですが、不十分です。
  • プラグを抜くと、内蔵スピーカーが再び自動的に有効になります。これは良いですが、不十分です。

改善:自動ミュートだけでなく、EQカーブの自動選択

3.5mmジャックを抜き差しするときに、正しいイコライザープリセットを適用することをお勧めします。外部ステレオを接続すると、フラットカーブが選択されます。ステレオのプラグを抜き、内蔵スピーカーの補正曲線を取得します。


ご質問

素早く汚いハックを作る方法は?スクリプトからジャックプラグを検出する方法

クリーンなセットアップの方法:プラグインイベントだけでなく、イコライゼーションカーブを内部スピーカーに割り当てます。

たとえば、USBオーディオデバイスを接続して、オーディオを再生するとします。クイックアンドダーティハックは、3.5mmジャックがアンプラグされるたびにEQカーブを変更しますが、オーディオは実際には内部スピーカーではなくUSBオーディオデバイスに送られ続け、eqカーブの変更は無関係になります。

「クリーン」なセットアップでは、イコライゼーションプロファイルが内部スピーカーにきれいに割り当てられ、より堅牢になります。状況がどうであれ、それは必要なときに常に(そして唯一)適用されます。

誰もがそれに取り組んでいますか?ヒントはありますか?

ご清聴ありがとうございました。

3

同様の問題があるので、pulseaudioのDBus-Eventsを使用して、どのイコライザープロファイルをアクティブにするかを検出する「迅速で汚れた」pythonスクリプトを作成しました。

Installation

これを使用するには、次の行を/etc/Pulse/default.paに追加する必要があります。

load-module module-dbus-protocol

次に、pulseaudio-equalizer-gtkでイコライザーを無効にし、「設定を適用」をクリックして、GUIを閉じます。

ダウンロード apply-equalizer.py どこかに保存して実行可能にします。

ユーザー(!)として実行します。追加のpythonモジュールをインストールする必要があるかもしれません。また、ログイン時に自動的に起動することもできます(そのための最善の方法はわかりません)。

使用法

スクリプトは〜/ .config/apply-equalizerの下にポートごとの[1]イコライザー構成を作成し、デバイスが出力ポートを変更した場合(つまり、ヘッドフォンのプラグインまたはアウト)にシンボリックリンクします。

[1]:多くのサウンドカードは異なるportsを持っています。 1つのスピーカーポートと1つのヘッドフォンポート

そう:

  1. ヘッドフォンを取り外します。
  2. Pulseaudio-equalizer GUIを開く
  3. 良い音になるまでイコライザー設定をカスタマイズする
  4. 「設定の適用」は、行った設定(イコライザーがまったく有効になっているかどうかを含む)を現在のポート(この場合はスピーカー)に割り当てます。
  5. GUIを閉じて、割り当てたいポートごとに手順2から繰り返します(ヘッドフォンは接続されていません)

これで、スピーカーとヘッドフォンを切り替えるたびに、イコライザー設定が自動的に調整されます。

2
Euro

ここでは、Equalizorを(お気に入りの設定で)オンとオフに切り替えるための手動のソリューション:

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

Bashスクリプトとしてファイルとして保存し、デスクトップまたはメニューパネルから直接スクリプトを起動できるようにして、新しいパネルスターターを作成します。

1
panticz.de