Если вы используете ALSA для звука в вашей системе, функции, представленные в этом скрипте, могут быть использованы, чтобы узнать и установить уровень звука в системе. Мы сможете это использовать, если у вас есть запущенный скрипт для мониторинга, и вы хотите увеличить звук, когда подаете сигнал, а затем снова понизить его до предыдущего значения.
Функция получения звука использует выходную информацию amixer для простого контроля микшера «Master», а затем использует grep и cut, чтобы получить правильное значение на выходе.
Функция установки звука также использует amixer, чтобы установить звук. Она использует опцию «cset» amixer-а.
Скрипт следует далее:
#!/bin/bash
#
#####################################################################
# Get current volume.
function get_volume()
{
mixer=$(amixer get Master | grep 'Front Left:')
echo $mixer | cut -d ' ' -f 4
}
#####################################################################
# Set volume.
function set_volume()
{
amixer cset iface=MIXER,name="Master Playback Volume" $1 >/dev/null
}
if [[ $(basename $0 .sh) == 'sound' ]]; then
sound_file=~/Documents/sounds/notify.wav
if [[ "$1" ]]; then sound_file="$1"; fi
ovol=$(get_volume)
echo "Current volume: $ovol"
aplay $sound_file
sleep 2
vol=40
echo "Playing at: $vol"
set_volume $vol
aplay $sound_file
sleep 2
echo "Again at: $ovol"
set_volume $ovol
aplay $sound_file
fi
# vim: tabstop=4: shiftwidth=4: noexpandtab:
# kate: tab-width 4; indent-width 4; replace-tabs false;
Если вы сохраните скрипт, как sound.sh, и выполните, напрямую передавая имя звукового файла, он воспроизведет его на установленном уровне звука, затем увеличит уровень и снова воспроизведет, и, наконец, он восстановит уровень звука и воспроизведет его в последний раз. Если вы откроете окно изменения звука перед запуском скрипта, вы должны увидеть, как движется ползунок в зависимости от изменений скриптом уровня. Вы можете добавить в строку vol=40 желаемый уровень звука.