サウンドカードを内蔵したノートパソコンに外部USBサウンドアダプタを使用しています。いくつかの問題があります:
デフォルトでは、アプリケーションは内部サウンドカードを使用し続けます。次の方法でこの問題を手動で解決できます。開く
pavucontrol
: 「出力デバイス」に移動し、アダプタ出力を見つけて「代替として設定」をクリックします。場合によっては、[再生]タブですでに再生されているアプリケーションを見つけて、そのシンクを変更します。キーボードの音量ボタンは、外部アダプタではなく内部サウンドカードで動作し続けます。
- アダプタには、物理音量を上げ、下げ、ミュート切り替えボタンがあります。押すと、システムは予期した操作を実行しますが、外部アダプタではなく内部サウンドカードで実行されます。未テストのマイクミュートボタンもあります。
- 外部アダプタを使用して音量を設定すると
pavucontrol
機能しますが、35%以下に設定すると音はまったく聞こえません。ボリュームがかなり高いので、静かなソースには35%が適しており、騒々しいソースには適していません。アプリ固有のボリューム制限を設定して(pavucontrol
ウィンドウでクリック)、この問題を手動で解決できますが、面倒でアプリが新しいストリームを起動するたびに再実行する必要があります。
所有方法:
- (1) アプリケーションはデフォルトでアダプタを再生します。
- (2)キーボードの音量ボタンは選択したサウンドカード用です(ここではアダプタ)。
- (3)物理アダプターボタンは選択したサウンドカード用です(ここではアダプター)。
- (4)アダプターの音量設定は、無音状態に直接入らずに35%未満に下げることができます。
システムは XFCE 4.10 を実行する Ubuntu 14.10 です。アダプターは「ID 0d8c:000c C-Media Electronics, Inc. オーディオアダプター」です。
答え1
実験的な解決策があります。
まず、アダプター・リスナー名を取得します。
最初はアダプタのリスナー名を見つける必要があります。シェルを開きます。bash
デフォルトのロケールに切り替えて、ローカライズの問題を想定して予防します。
export LC_ALL=C
受信者のリストを取得するには:
pacmd list-sinks | grep name:
出力を読み取り、コマンドラインに名前を手動でコピーして貼り付けることができます。ADAPTER_SINK_NAME=name_in_your_setup
より自動的に、以下の行は私に効果があり、多くの場合に機能する必要がある最初の非PCIアダプタの名前を見つけます。
ADAPTER_SINK_NAME=$( pacmd list-sinks | sed -n 's/^.*name: <\([^>]*\.usb[^>]*\)>$/\1/p' | head -n 1 )
echo $ADAPTER_SINK_NAME
代替目的pactl
(ただし、上記の行を実行する必要があります。export
そうしないと、デフォルト以外のロケールでは何も見つかりません):
ADAPTER_SINK_NAME=$( pactl list sinks | sed -n 's/^.*Name: \(.*\.usb.*\)$/\1/p' | head -n 1 )
echo $ADAPTER_SINK_NAME
部分修理の実施(1)(2)(3)
今、これは質問のポイント(1)(2)(3)を提供します。
pactl set-default-sink $ADAPTER_SINK_NAME
興味深いことに、私は(2)と(3)を提供しますが、常に(1)ではなくpacmd set-default-sink ...
(pacmd
代わりに)を最初に使用しました。pactl
(1)~(4) 全修正を受ける
それに基づいていますPulseAudioを使用して2つのサウンドカードで同時に音楽を再生できますか?原則は「同時に1つのサウンドカードで再生」です。 ;-)
pacmd load-module module-combine sink_name=adapter-soft-volume slaves=$ADAPTER_SINK_NAME
pactl set-default-sink adapter-soft-volume
これで、すべてが質問に記載されているとおりに機能します。
掃除してください。
上記のコマンドを複数回実行すると、結合された受信機は複数になり、最後の受信機ではなく最初の受信機が使用されます。何らかの理由で再起動するには、まず次のコマンドを実行して結合シンクをクリーンアップします。
pacmd unload-module module-combine
続行するには、今すぐクリーンアップ機能を使用しないでください。
ボーナス:現在再生中のストリームをアダプタに移動
上記のコマンドは、すでに再生されているストリームではなく新しいストリームで機能します。これにより必要なものが調整されます。
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_SINK_NAME
pactl move-sink-input $SINK_ID adapter-soft-volume
done
円形パスを生成する結合入力を含むすべての受信機入力を移動しようとします。幸いなことに、pulseaudioは正しいことを行い、Failure: Invalid argument
それを表示するために一度印刷します。
自動化
次のスクリプトは、(1)〜(4)の利点を提供します。上記の内容を追加できますmove-sink-input
。アダプタを接続するたびに実行するのが面白いかもしれません。
#!/bin/bash
export LC_ALL=C
ADAPTER_SINK_NAME=$( pacmd list-sinks | sed -n 's/^.*name: <\([^>]*\.usb[^>]*\)>$/\1/p' | head -n 1 )
if [[ -z "${ADAPTER_SINK_NAME:-}" ]]
then
ADAPTER_SINK_NAME=$( pactl list sinks | sed -n 's/^.*Name: \(.*\.usb.*\)$/\1/p' | head -n 1 )
fi
echo will plug on $ADAPTER_SINK_NAME
# partial fix, can be run anyway to provide partial benefit if later steps fail
pactl set-default-sink $ADAPTER_SINK_NAME
pacmd unload-module module-combine # not useful first, used to clean things up if run several times
pacmd load-module module-combine sink_name=adapter-soft-volume slaves=$ADAPTER_SINK_NAME
pactl set-default-sink adapter-soft-volume
答え2
4番アイテムの場合、音量が35%未満の場合音は出ません。
同じ問題、別のディストリビューション(UbuntuではなくFedora)。残念ながら、set-default-sink
既存の回答で説明されているコマンド(...)はこの場合役に立ちません。
Fedora 22では、設定ファイルを変更してこれを行うことができます。
構成ファイル: /usr/share/pulseaudio/alsa-mixer/paths/analog-output.conf.common
[要素PCM]セクションを探します。
[Element PCM]
switch = mute
volume = merge
override-map.1 = all
override-map.2 = all-left,all-right
「volume = merge」行を次の2行に置き換えます。
volume = ignore
volume-limit = 0.01
パルスオーディオリロード:
$ pulseaudio -k
オーディオプレーヤーを再起動してもう一度やり直してください。
から: https://chrisjean.com/fix-for-usb-audio-is-too-loud-and-mutes-at-low-volume-in-ubuntu/
(望むよりエラー1248649.)
しかし、この回避策はもはやFedora 23(pulseaudio 7.1)には役に立たないようです。あるいは、他の値を使用する必要があるかもしれません。
これが誰かに役立つことを願っています。