Ubuntu_12.04システムのサウンド/映画/音楽の一部が非常に小さい場合があります。以降、音声出力の音量を上げます。次の設定を使用できます(スクリーンショットを参照)
したがって、pulseaudioは、マシンの「音量を上げる」ボタンを使用するだけで、可能な最大音量を超えて音量を上げることができるようです。私の質問は、Pulseaudioを調整して、より大きな範囲またはより高い最大音量を増加させる方法ですか?
特に、開始するのに非常に小さい音量のオーディオ素材では、出力音量(パワーアップ)を他の-すでにかなり大きな素材に必要な設定よりも高い設定にすばやく上げることができると便利です。
ボリュームコントロールを100%以上にスライドさせることで得られる最大のボリュームレベルは、約10%です。通常のピーク制限を153%上回っています。 alsamixerでALSAボリュームを100に設定した場合、これらの100%はオーディオがクリップまたは歪むレベルです。これは、スライダーで153%に増幅したときにも発生します。
それでも、ターミナルで次のコマンドを使用してシンクレベルを設定することにより、このレベルをさらに上げることができます。
pacmd set-sink-volume <sink> <value>
<sink>
を、次のように指定したシンク名またはシンクインデックスに置き換えます。
pacmd list-sinks
<value>
の下限は明らかに0
であり、100%の線形ボリュームは65536
の値であり、それ以上はさらに増幅されます。したがって、512000の値は781%の過増幅につながります。
これはさまざまなレベルのサウンド出力を増幅する非常に粗雑な方法です。オーバーアンプはクリッピングやい歪みにつながるだけでなく、スピーカーを損傷する可能性があるためです。
したがって、オーディオ出力を正規化するより良い方法です。 pulseaudioでこれを行う方法については、次の質問を参照してください。
私はこのコマンドを試しました:
pactl set-sink-volume alsa_output.pci-0000_00_1b.0.analog-stereo 150%
とても助かりました。 150%を任意の値に変更できます。
私が使う
pactl set-sink-volume 0 100%
ここで、0
はpacmd list-sinks
からのシンク番号であり、100%
はデフォルトのブーストされていないボリュームです。 100%を超える値を入力して、オーディオブーストを取得できます(200%
など)。
計算を行い、ボリュームを設定するための小さなスクリプトを次に示します(ボリュームを引数として渡すだけです)。例:vol 105
は、ボリュームを105%に設定します。
ファイルを作成
$> file=/usr/bin/vol;Sudo touch $file && \
Sudo chmod u+x $file && Sudo chown $USER:$USER $file && \
gedit $file
コピーアンドペースト:
#!/bin/bash
SetPacmdSinkVol()
{
#default index of 0 - can be changed
local mySinkIndex=0
#if you want to ignore pacmd output
local ignoreOutput=true
local num=$1
local vol=$((num * 655));
vol=$((num * 36 / 100 + vol));
echo -e "\033[0;32mVol - ${num}:${vol}\033[0;m"
if $ignoreOutput; then
pacmd set-sink-volume $mySinkIndex $vol > /dev/null
else
pacmd set-sink-volume $mySinkIndex $vol
fi
}
SetPacmdSinkVol $@
父のラップトップ(12.04 32ビット)が最大ボリューム設定を保存していなかったため、次の行をシェルスクリプトに挿入し、起動時に実行するように設定しました。
pacmd set-sink-volume 0 99999
サウンドカードが1つしかない場合は、おそらくインデックス0であるため、フルネームを入力する必要はありません。上記の値は、65536が100%であることに基づいていることがわかります。 99999を使用したとき、暗闇で撮影していました。 153%は実際には100270で、GUIを使用した場合と同じ結果になります。
#!/bin/bash
FILE=/tmp/currentVolume
interval=15
minVolume=10
maxVolume=140
if [ -f "$FILE" ];
then
CurrentVolume=$(cat $FILE )
else
CurrentVolume=50
fi
if [ $CurrentVolume -lt 60 ]; then
interval=3
Elif [ $CurrentVolume -lt 80 ]; then
interval=5
Elif [ $CurrentVolume -lt 110 ]; then
interval=10
else
interval=15
fi
if [ "$1" == "UP" ]
then
CurrentVolume=$(echo "$CurrentVolume + $interval" | bc)
if (( $(echo "$maxVolume < $CurrentVolume" | bc -l) ))
then
CurrentVolume=$maxVolume
fi
else
CurrentVolume=$(echo "$CurrentVolume - $interval" | bc)
if (( $(echo "$minVolume > $CurrentVolume" | bc -l) ))
then
CurrentVolume=$minVolume
fi
fi
echo "CurrentVolume:" $CurrentVolume >> /tmp/currentVolume.log
echo $CurrentVolume > $FILE
for i in {1..20}
do
pactl -- set-sink-volume $i $(echo $CurrentVolume)%
done