среда, 4 августа 2010 г.

Изменение громкости из сценария Bash

Перевод статьи: Change Volume From a Bash Script

24 сентября 2008, Митч Фрэзер (Mitch Frazier)

Если вы пользуетесь звуковой системой ALSA, вы можете воспользоваться функциями, содержащимися в представленном сценарии, для получения и установки громкости звука вашей системы. Вы можете использовать его, если у вас запущен сторожевой сценарий и вы хотите увеличить громкость сигнала во время тревоги, а затем вернуть громкость обратно к предыдущему уровню.

Функция get просто использует amixer для вывода информации о канале управления миксером "Master" и затем использует grep для вырезания нужного значения из выведенной информации.

Функция set также использует amixer для задания громкости. Она использует опцию "cset" программы amixer.

Сценарий следующий:
#!/bin/bash
#

#####################################################################
# Получить текущую громкость.
function get_volume()
{
  mixer=$(amixer get Master | grep 'Front Left:')
  echo $mixer | cut -d ' ' -f 4
}

#####################################################################
# Задать громкость.
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 "Текущая громкость: $ovol"
  aplay $sound_file
  sleep 2

  vol=40
  echo "Воспроизведение на громкости: $vol"
  set_volume $vol
  aplay $sound_file
  sleep 2

  echo "Возвращение к громкости: $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 на значение, которое вам нужно.


Митч Фрэзер (Mitch Frazier) является помощником редактора в Linux Journal и веб-редактором в linuxjournal.com.

Комментариев нет: