Как мне переключить звук с помощью amixer?

Включая Натти, я всегда мог переключать (отключать / включать) громкость звука «Master» с помощью команды

amixer sset Master toggle

, которую я связал с привязкой края в CompizConfig- менеджер.

Теперь после установки Oneiric команда только отключает звук, но не включает его. Я даже попробовал это в Терминале, но это также не работает. Он меняет ' Mono: Воспроизведение 68 [78%] [-14.25dB] [выкл] ' на '... [вкл]', но звук остается приглушенным, так что мне нужно включить его через ' звуковой индикатор »на панели.

Как я могу заставить это работать снова? Что изменилось с Нетти? Кто-нибудь знает команду, которую звуковой индикатор использует для переключения громкости звука?

50
задан 15 February 2012 в 19:28

8 ответов

Я не мог отключить звук, чтобы правильно переключаться. Независимо от того, использовал ли я CLI и набрал в мастере Amixer sset Master или нажал клавишу переключения носителя HP pavillion, я получу тот же результат: если звук включен и работает, он автоматически отключит мастер-канал и канал PCM. Затем, когда я снова нажимаю на тумблер (cli или key), он ВСЕГДА включает Master, но отключает PCM. Для моей установки (HP Pavilion DV6 под управлением Xubuntu Oneric) это означает, что звук выключен даже при включенном мастере. При запуске из CLI - те же результаты. Если с помощью cli я переключаю PCM, он также отключает основной канал и снова не включает его, хотя он правильно переключает PCM.

Сценарий, который работал, был:

#!/bin/bash
    if amixer -c 0 get Master | grep -q off
then
    amixer set Master unmute
    amixer set PCM unmute

else
    amixer set Master mute
fi

Затем я использовал сочетания клавиш Xubuntu (настройки> менеджер настроек> сочетания клавиш> приложения), чтобы перейти к сценарию (я назвал его sndfx.sh установите его на исполняемый файл, щелкнув правой кнопкой мыши в thunar и под разрешениями отметьте make execute). Затем я назначил ему быструю клавишу HP Pavilion, нажав эту клавишу. Теперь он переключается правильно - потрясающе. Надеюсь, это поможет кому-то еще.

Мир

0
ответ дан 15 February 2012 в 19:28

Я использую этот сценарий в качестве обходного пути:

#!/bin/bash

CURRENT_STATE=`amixer get Master | egrep 'Playback.*?\[o' | egrep -o '\[o.+\]'`

if [[ $CURRENT_STATE == '[on]' ]]; then
    amixer set Master mute
else
    amixer set Master unmute
    amixer set Front unmute
    amixer set Headphone unmute
fi

Я сделал diff amixer scontents перед вызовом amixer set Master mute и после вызова и включения всего, используя графический интерфейс, чтобы выяснить, что нужно быть безмолвным.


  1. Со звуком по типу amixer scontents > ~/before (вы получите файл со статусом всех звуковых каналов)
  2. Затем переключите громкость с помощью amixer set Master toggle
  3. Создайте второй файл состояния канала с помощью amixer scontents > ~/after
  4. Снова переключите звук с помощью amixer set Master toggle, который должен вернуть громкость на уровень, предшествующий первой команде переключения
  5. Создать третий файл с amixer scontents > ~/afterafter

Теперь у вас есть три файла, которые сообщают вам о состоянии звуковых каналов, используемых для нормального звука, которые отключаются amixer set Master toggle и которые снова не включаются снова включить звук с помощью той же команды.

Чтобы легко сравнить файлы и увидеть различия (каналы, которые приглушаются и не включаются впоследствии), вы можете использовать meld из Центра программного обеспечения. Запустите его, откройте три файла и на полосе прокрутки вы увидите, где существуют различия между файлами. Используйте имена найденных каналов, чтобы добавить их в описанный выше скрипт.

0
ответ дан 15 February 2012 в 19:28

Хитрость заключается в том, чтобы состояние динамика или наушников соответствовало состоянию основного канала, в зависимости от того, подключены наушники или нет. Этот сценарий делает это для меня на моем древнем ноутбуке Dell Latitude:

#!/bin/bash

amixer -q sset Master toggle

MASTER_STATE=`amixer get Master | awk -F"dB] " 'NR == 5 {print $2;}'`
HEADPHONES_PLUGGED=`amixer contents | grep -A 2 Headphone\ Jack | awk -F"=" 'NR == 3 {print $2;}'`

if [[ $HEADPHONES_PLUGGED == 'on' ]]; then
    SLAVE="Headphone"
else
    SLAVE="Speaker+LO"
fi

if [[ $MASTER_STATE == '[on]' ]]; then
    amixer -q sset $SLAVE unmute
else
    amixer -q sset $SLAVE mute
fi

Возможно, вам придется проверить свои каналы с помощью amixer на вашем компьютере и соответственно изменить определения SLAVE. Кроме того, строка grep «Headphone \ Jack» в определении HEADPHONES_PLUGGED, возможно, должна быть чем-то другим.

0
ответ дан 15 February 2012 в 19:28

Попробуйте этот фрагмент скрипта ... он работает

https://wiki.archlinux.org/index.php/PulseAudio#volume_control

0
ответ дан 15 February 2012 в 19:28

Это работает для меня 13.04, как выключение звука, так и включение звука:

amixer -D pulse set Master 1+ toggle

Он задает импульсный звук, чтобы обеспечить включение звука, включение всего звука.

0
ответ дан 15 February 2012 в 19:28

Грубая сила включения:

for i in $(amixer |grep -o \'.*\'); do amixer set $i unmute; done
0
ответ дан 15 February 2012 в 19:28

Если я не ошибаюсь, это ошибка, из-за которой другие каналы микшера отключаются и включаются. Чтобы отключить звук, попробуйте

amixer set Master 0;

Чтобы включить звук, попробуйте

amixer set Master 1% +; набор микросхем Master 7дБ +;

0
ответ дан 15 February 2012 в 19:28

Если вы хотите заменить amixer в .lircrc для вашего удаленного управления, работающего с lirc, вы можете попробовать следующие строки. Убедитесь, что установлен xmacro. Регулятор громкости теперь снова работает.

begin
        prog = irexec
        button = KEY_VOLUMEUP
        repeat = 1
        delay = 2
        config = echo KeyStrPress XF86AudioRaiseVolume KeyStrRelease XF86AudioRaiseVolume | xmacroplay $DISPLAY
end
begin
        prog = irexec
        button = KEY_VOLUMEDOWN
        repeat = 1
        delay = 2
        config = echo KeyStrPress XF86AudioLowerVolume KeyStrRelease XF86AudioLowerVolume | xmacroplay $DISPLAY
end
begin
        prog = irexec
        button = KEY_MUTE
        config = echo KeyStrPress XF86AudioMute KeyStrRelease XF86AudioMute | xmacroplay $DISPLAY
end
0
ответ дан 15 February 2012 в 19:28

Другие вопросы по тегам:

Похожие вопросы: