外部USBサウンドカードの固定オーディオ音量を設定する

外部USBサウンドカードの固定オーディオ音量を設定する

私は、PC (Fedora 20) をステレオ アンプに接続するための外付け USB サウンド カードを持っています。

http://www.project-audio.com/main.php?prod=usbbox&cat=boxes&lang=en

これで通常は問題なく動作しますが、ときどき音量設定に問題が生じます。特に、VLC でビデオや音楽を再生する場合、音量設定がおかしくなりがちです。たとえば、Pulse Audio Volume Control でマスター音量を 100% に設定しましたが、VLC では音量設定が 100% 未満になっています。その後、VLC で音量を 100% に上げると、マスターは実際には 100% を超えますが、これは音声が歪むためあまり望ましくありません。Firefox で Youtube 動画を再生する場合も同じことが起こります。これは、オーディオ品質が低下するだけでなく、アンプの 1 つの音量設定によってスピーカーの実際の音量が広範囲に及ぶ可能性があるため、予期しない動作につながるため、かなり迷惑です。

では、PC 部分の音量設定を完全に無効にして 100% に固定し、実際の音量をアンプ側でのみ制御するにはどうすればよいでしょうか。言い換えれば、USB サウンド カードを CD プレーヤー、チューナー、またはその他のオーディオ ソースとまったく同じように動作させ、出力レベルを固定したいのです。

答え1

いくつかの類似点(音量が壊れているがレベルが低いなど)の問題がありました。回避策を見つけて説明しました。外部サウンドアダプタを使用したPulseaudio: サウンドが途切れるのを回避する

あなたのケースに合わせて調整してみましょう。以下のコマンドを実行すると、正しいシンク名が見つかるはずです (最初の名前だけを取得します)。

export LC_ALL=C 
ADAPTER_SINK_NAME=$( pactl list sinks | sed -n 's/^.*Name: \(.*\)$/\1/p' | head -n 1 ) 
echo $ADAPTER_SINK_NAME

次に、ソフトウェア定義のシンクに差し込んで音量を設定できるようにします

pacmd load-module module-combine sink_name=adapter-soft-volume slaves=$ADAPTER_SINK_NAME
pactl set-default-sink adapter-soft-volume

詳細については外部サウンドアダプタを使用したPulseaudio: サウンドが途切れるのを回避する

これは、今後起動されるアプリケーションで機能するはずです。

(オプション) これにより、現在再生中のアプリケーションがそのシンクを使用するようになります。

for SINK_ID in $(pactl list sink-inputs | sed -n 's/^Sink Input #\([0-9]*\)$/\1/p')
do
    echo Sink $SINK_ID
    pactl move-sink-input $SINK_ID adapter-soft-volume
done

関連情報