sesuaikan volume maksimal yang mungkin di pulseaudio


26

Kadang-kadang beberapa suara / film / musik pada sistem Ubuntu_12.04 saya dengan volume yang sangat rendah dengan sendirinya. Untuk selanjutnya saya meningkatkan volume output suara. Saya dapat menggunakan pengaturan berikut (lihat tangkapan layar) masukkan deskripsi gambar di sini

Oleh karena itu tampaknya pulseaudio mampu meningkatkan volume di luar batas maksimum yang tampak mungkin hanya dengan menggunakan tombol "peningkatan volume" mesin. Pertanyaan saya adalah bagaimana saya bisa menyesuaikan Pulseaudio untuk memungkinkan rentang yang lebih besar atau volume max yang lebih tinggi meningkat ???

Terutama dengan beberapa bahan audio yang pada volume yang sangat rendah untuk memulai dengan itu akan baik untuk dapat dengan cepat meningkatkan volume output (powerup) ke pengaturan yang lebih tinggi daripada yang mungkin diperlukan untuk yang lain - materi yang sudah cukup keras.

Jawaban:


24

Level volume maksimal yang dapat kita peroleh dari menggeser kontrol volume ke lebih dari 100% adalah sekitar. 153% di atas batas puncak normal. Asalkan kami telah mengatur volume ALSA dengan alsamixer ke 100, ini 100% adalah tingkat di atas yang audio akan dipotong atau terdistorsi. Ini juga akan terjadi ketika menguatkan ke 153% dengan slider.

Namun demikian adalah mungkin untuk lebih meningkatkan level ini dengan mengatur level sink menggunakan perintah follwing di terminal:

pacmd set-sink-volume <sink> <value>

Ganti <sink>dengan nama wastafel Anda atau indeks wastafel seperti yang diberikan dari:

pacmd list-sinks

Batas bawah untuk <value>jelas adalah 0, volume linier 100% adalah nilai 65536, apa pun yang lebih tinggi akan semakin diperkuat. Nilai 512000 dengan demikian akan mengarah pada overamplifikasi 781%.

Ini adalah metode yang sangat kasar untuk memperkuat output suara dari tingkat yang berbeda karena overamplifikasi tidak hanya akan menyebabkan kliping dan distorsi yang buruk tetapi juga dapat merusak speaker Anda.

Karena itu akan menjadi cara yang lebih baik untuk menormalkan output audio Anda. Lihat pertanyaan berikut tentang bagaimana melakukan ini dengan pulseaudio:


Saya telah menggunakan pactl set-sink-volume alsa_output.pci-0000_00_1b.0.analog-stereo 150% - karena saya belum bisa berhasil dengan pacmd. Bagaimanapun idenya sudah banyak membantu. Dengan cara ini dimungkinkan untuk meningkatkan level output menjadi lebih dari 100% atau 153% yang memungkinkan GUI, terima kasih.
humanityANDpeace

2
Jawaban Anda yang hebat diizinkan untuk mengatur volume ke nilai yang lebih besar (seperti amplifikasi 781%) yang bagus. Bagian dari pertanyaan saya adalah juga bagaimana mengubah skala yang awalnya digunakan sehingga tidak dari 0% menjadi 100% (melalui GUI) tetapi dari 0% menjadi 781%. Adakah tambahan informasi bagaimana mencapai ini, mungkin? itu juga akan lebih bagus! terima kasih
humanityANDpeace

Tidak tahu cara meningkatkan nilai ini untuk slider volume. Mungkin hard-coded, karenanya tidak dapat diubah selain menambal sumber dan mengkompilasi ulang.
Takkat

Tidak berfungsi: Suatu program masih dapat membuatnya 100% bahkan jika saya menetapkannya menjadi 12% seperti itu.
panzi

Saya memiliki speaker laptop saya hancur dengan menggunakan volume pada 150% juga memungkinkan. Saya harus menggantinya. Harap diperhatikan bahwa peringatan kerusakan yang mungkin dibenarkan.
brett

7

Saya mencoba perintah ini:

pactl set-sink-volume alsa_output.pci-0000_00_1b.0.analog-stereo 150%

dan itu sangat membantu. Seseorang dapat mengubah 150% ke nilai apa pun.


Anda harus menyebutkan bahwa ini menonaktifkan kontrol volume.
Hijau

4

Peragaan Video


saya menggunakan

pactl set-sink-volume 0 100%

Di mana 0nomor wastafel berasal pacmd list-sinksdan 100%merupakan volume default yang tidak dikuatkan. Anda dapat memasukkan nilai di atas 100% untuk mendapatkan peningkatan audio ( 200%misalnya).


ini menonaktifkan kontrol volume.
Hijau

Mengapa? tidak, tidak. Saya baru saja mencobanya dan tidak apa-apa. Masalahnya adalah ia menaikkan volume di atas volume maksimum yang dapat dicapai oleh bilah volume. Bar penuh mungkin sekitar 150% mungkin, jadi 200% tidak dapat dilakukan dengan bar. @Green
Mina Michael

2

Berikut ini adalah skrip kecil untuk melakukan perhitungan dan mengatur volume untuk Anda (cukup berikan volume sebagai argumen). Misalnya: vol 105akan mengatur volume ke 105%.

  • Buat file

    $> file=/usr/bin/vol;sudo touch $file && \
    sudo chmod u+x $file && sudo chown $USER:$USER $file && \
    gedit $file
    
  • Salin dan tempel:

    #!/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 $@
    

1

Saya memasukkan baris berikut ke dalam skrip shell dan mengaturnya agar dijalankan saat startup karena laptop ayah saya (12,04 32 bit) tidak menyimpan pengaturan volume maks.

pacmd set-sink-volume 0 99999

jika hanya ada satu kartu suara, itu mungkin indeks 0 dan kemudian Anda tidak perlu mengetikkan nama lengkapnya. Saya melihat di atas bahwa nilainya didasarkan pada 65.536 menjadi 100%. Ketika saya menggunakan 99999 saya menembak dalam gelap. 153% benar-benar akan menjadi 100270 mencapai hasil yang sama dengan menggunakan gui.


0
#!/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

1
Terima kasih atas jawaban Anda. Jika memungkinkan, bisakah Anda mengedit jawaban Anda untuk menguraikan lebih banyak tentangnya? Selalu bermanfaat bagi orang untuk mengetahui mengapa suatu solusi seharusnya bekerja, alih-alih hanya menyalin kode 'n' pasting yang tidak mereka mengerti. Itu juga membantu mengadaptasi solusi untuk berbagai masalah.
Henning Kockerbeck
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.