A tecla Mudo silencia o Alsa e o PulseAudio, mas ativa o som apenas do Alsa


20

Quando pressiono a tecla mudo no teclado, o canal mestre Alsa e o canal mestre PulseAudio são silenciados, pressionando-o novamente apenas para ativar o som do canal mestre alsa, o canal mestre pulseaudio permanece silenciado. Resultado: sem som. Como faço para corrigir isso?

Respostas:


11

Execute este comando:

amixer -D pulse set Master 1+ unmute

12
Você pode explicar o que esse comando faz para que outros usuários saibam?
Reinstate Monica - ζ--

1
Para que serve esse 1+? Não consegui encontrar uma explicação na página de manual do amixer.
Jarno

usando alternância em vez de unmute é útil se você está ligando o comando para uma chave de hardwareamixer -D pulse set Master 1+ toggle
Pol Alvarez Vecino

20

é muito mais simples.

amixer -D pulse set Master Playback Switch toggle

defina isso como uma tecla de atalho para "Mute \ Unmute". os controles de volume podem ser deixados como estão.

Mint 15 Mate - descobri por mim mesmo, funciona bem para mim.


Seja o que for - funcionou bem no arch linux. Som mudo e sem som com sucesso. Agora vinculei esse comando no comando mudo no meu laptop, porque um padrão não ativa o som de todos os canais. OBRIGADO
Erikas

Isso funcionou para mim com o Ubuntu 14.04 + i3, a resposta aceita não funcionou.
Ingo Bürk

1
amixer -D pulse set Master togglevai fazer. O Amixer espera um nome simples de controle do mixer para o comando set ou sset e, mesmo que ele aceite um nome completo de controle do mixer, você precisará citar um nome com várias palavras. Você pode usar o modificador opcional playbackno comando como este:, amixer -D pulse set Master playback togglemas é desnecessário, se Mastertambém não tiver recursos de captura. Ao usar modificadores opcionais, você também pode controlar a quais canais o comando se aplica, se o seu sistema tiver capacidade de som surround.
Jarno

5

Eu tive o mesmo problema ao executar o MATE desktop em um Linux Mint Debian Edition (201204).

A ação "Aumentar volume" não conseguiu ativar o som. Percebi que o problema estava com o Pulseaudio, mas o pacote mate-media-gstreamere mate-settings-daemon-gstreameronde estava instalado por padrão. Ao instalar mate-media-pulsee mate-settings-daemon-pulse(que desinstalou mate-media-gstreamere mate-settings-daemon-gstreamer) e tadam ... a ação "Aumentar volume" conseguiu ativar o som novamente!

Espero que isso também funcione para você!


Trabalhou para mim (no Debian Jessie) e esta solução é permanente, enquanto as soluções AFAIU envolvendo amixer -D pulse set Master xxxsão de uma só vez ou precisam ser mapeadas manualmente para um atalho. A solução proposta aqui parece com o que deve ser.
Jérôme

2

É um problema com o pulseaudio, os comandos para alsa ou amixer não enviarão corretamente o som para o pulso. Quando os comandos alsa enviam um sinal mudo, é um comando de alternância (envie o mesmo comando para silenciar / silenciar).

Agora, no pulseaudio, eles têm código mudo e mudo separados! Muitos relatam que a desinstalação do pulseaudio resolverá o problema, mas para alguns isso não é realmente uma resposta aceitável (como eu, porque o pulso é útil para muitos aplicativos).

Então, para resolver isso, precisamos criar um script,

1- Crie um novo documento vazio em um editor de texto como gedit ou mousepad,

2- Cole este código no documento, Soruce of code: 2

#!/bin/bash
#### Create ~/.pulse/mute if not exists
ls ~/.pulse/mute &> /dev/null
if [[ $? != 0 ]]
then
    echo "false" > ~/.pulse/mute
fi

####Create ~/.pulse/volume if not exists
ls ~/.pulse/volume &> /dev/null
if [[ $? != 0 ]]
then
    echo "65536" > ~/.pulse/volume
fi

CURVOL=`cat ~/.pulse/volume`     #Reads in the current volume
MUTE=`cat ~/.pulse/mute`          #Reads mute state

if [[ $1 == "increase" ]]
then
    CURVOL=$(($CURVOL + 3277)) #3277 is 5% of the total volume, you can change this to suit your needs.
    if [[ $CURVOL -ge 65536 ]]
    then
        CURVOL=65536        
    fi
elif [[ $1 == "decrease" ]]
then
    CURVOL=$(($CURVOL - 3277))
    if [[ $CURVOL -le 0 ]]
    then
        CURVOL=0        
    fi
elif [[ $1 == "mute" ]]
then
    if [[ $MUTE == "false" ]]
    then
        pactl set-sink-mute 0 1
        echo "true" > ~/.pulse/mute
    exit    
    else
        pactl set-sink-mute 0 0
        echo "false" > ~/.pulse/mute    
    exit
    fi
fi

pactl set-sink-volume 0 $CURVOL
echo $CURVOL > ~/.pulse/volume # Write the new volume to disk to be read the next time the script is run.

3- Nomeie o arquivo "volume" (sem extensão necessária) coloque-o em algum lugar que você possa encontrar e não o excluirá como sua pasta pessoal

4- Torne o arquivo executável clicando com o botão direito do mouse no arquivo, vá para Propriedades, depois na guia Permissões e use a caixa de seleção para marcá-lo como executável, isso permitirá que o script seja executado. mark-file-as-executible-gui

5- Em seguida, precisamos vincular os comandos ao teclado, os comandos para o código são aumentar, diminuir e silenciar.

Então vá para as configurações do teclado - como alterar o atalho de teclado no xubuntu , na área de atalhos do teclado, clique em adicionar e abra. Abra o arquivo "volume" que criamos e adicione o comando para o código após o volume, lendo aumento de volume ou mudo de volume . mas com o local onde o arquivo de código está antes, como "/ home / nome de usuário / volume desativado"

Em seguida, atribua-o ao teclado pressionando a tecla ou, se a tecla já estiver sendo usada,
~ provavelmente o caso ~ encontre-os e substitua o comando.

Os atalhos de tecla são provavelmente chamados de XF86AudioRaiseVolume, XF86AudioLowerVolume, XF86AudioMute . Como apenas o mudo está quebrado, concentre seus esforços em mudar isso primeiro.

Bug: 1


Acabei de XF86AudioMutemapear para o comando amixer set Master toggle. As teclas aumentar e diminuir vol são mapeadas de maneira semelhante aos amixercomandos.
Chan-Ho Suh

@ Chan-HoSuh você está tendo o mesmo problema? você pode simplesmente chamar o comando mudo desse script, se quiser, por algum motivo o pulso estava interceptando o mudo na minha máquina, o amixador envia uma alternância, que é interpretada como mudo pelo pulso ou apenas interceptando a tecla pressionada? Eu estava usando um script semelhante que mostrou uma barra de volume antes :(, mas esta mudos e com som reativado e agora eles têm as notificações, por isso é tudo de bom, a alternância é a forma como ele foi criado antes.
Mateo

Um pequeno aprimoramento do script é também forçar o som para aumentar / diminuir o volume. Também adicionei 'paplay /usr/share/sounds/ubuntu/stereo/message.ogg' para obter feedback sobre o volume.
dma 28/01

Talvez fosse diferente antes, mas com o pulseaudio 4.0 você pode usar comandos como pactl set-sink-volume 0 +5%, pactl set-sink-volume 0 -5%e pactl set-sink-mute 0 togglepara aumentar o volume, diminuir o volume e alternar o volume, respectivamente.
Jarno

@jarno sim, isso era para resolver um problema específico (bug), por isso é provável fixo / não tão relevante, mas continua a ser um bom pequeno hack, se nada mais funciona
Mateo


1

Trabalhou para mim em 12.10:

    #!/bin/sh
    amixer -c 0 sset Master,0 mute
    sleep 5
    amixer -D pulse set Master 1+ unmute

1

Para usuários do KDE e kmix, se você usar este script, ainda terá o feedback visual funcionando:

#! /bin/bash

DBUS=qdbus 2> /dev/null

case "$1" in
  volup)
        pactl set-sink-mute alsa_output.pci-0000_00_1b.0.analog-stereo 0
        ${DBUS} org.kde.kmix /kmix/KMixWindow/actions/increase_volume com.trolltech.Qt.QAction.trigger
        ;;
  voldn)
        pactl set-sink-mute alsa_output.pci-0000_00_1b.0.analog-stereo 0
        ${DBUS} org.kde.kmix /kmix/KMixWindow/actions/decrease_volume com.trolltech.Qt.QAction.trigger
        ;;
  mute)
        ${DBUS} org.kde.kmix /kmix/KMixWindow/actions/mute com.trolltech.Qt.QAction.trigger
        pactl set-sink-mute alsa_output.pci-0000_00_1b.0.analog-stereo $(${DBUS} org.kde.kmix /Mixers/0/Master_0 org.kde.KMix.Control.mute | sed 's/false/0/g;s/true/1/g')
        ;;
  *)
    echo "Usage: mixctl <volup|voldn|mute>" >&2
    exit 1
    ;;
esac

exit 0

Uso:

1) Salve-o como ~ / bin / mixctl
2) Remova o mapeamento dos atalhos de teclado kmix padrão para Aumentar / Diminuir volume e Silenciar
3) Crie três novos atalhos de teclado personalizados chamados 'Aumentar volume', 'Diminuir volume' e 'Silenciar'
- > tipo de atalho: command
-> como os comandos usam ~ / bin / mixctl volup , ~ / bin / mixctl voldn e ~ / bin / mixctl mute, respectivamente


1

Eu tive o mesmo problema em várias máquinas Xubuntu 12.04 que foram atualizadas para o XFCE 4.10. Aqui está uma maneira muito rápida de resolver esse problema na linha de comando (ou com um bashscript).

Diferentemente das soluções anteriores que oferecem scripts de interrupção de intervalo, essa solução restaura completamente a função do botão silenciar / silenciar.

Basta emitir os dois comandos a seguir uma vez, para resolver o problema de uma vez por todas:

$ xfconf-query --channel xfce4-mixer --property /active-card --set PlaybackInternalAudioAnalogStereoPulseAudioMixer --reset
$ xfconf-query --create --channel xfce4-keyboard-shortcuts --property /commands/custom/XF86AudioMute --type string --set 'amixer -D pulse set Master 1+ toggle'

1

Encontrei uma solução simples que funciona bem para mim neste fórum . Em detalhes, você precisa adicionar isso a /etc/asound.conf:

pcm.pulse {
    type pulse
}
ctl.pulse {
    type pulse
}
pcm.!default {
    type pulse
}
ctl.!default {
    type pulse
}

E, em seguida, defina um atalho de teclado para a tecla mudo com o comando sendo:

amixer set Master toggle

0

Você pode usar as configurações do teclado para definir o botão mudo para executar o comando encontrado AQUI . Embora o primeiro método listado neste link era inútil para mim, o segundo funciona muito bem para XFCE4: $ pactl set-sink-mute 0 toggle. Você também pode criar um script ou iniciador para executar o comando ao clicar no mouse.

Para sua informação, se você estiver usando algo parecido com o Cinnamon (e provavelmente outros desktops baseados em gnomo), a sugestão acima do user197761 parece melhor, pois o applet de som do cinnamon reconhece que o volume está mudo: amixer -D pulse set Master Playback Switch toggle(se você gosta deste último comando, atualize sua resposta, não é meu.)

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.