Troque rapidamente o dispositivo de áudio no KDE

15

Eu recentemente mudei para o OpenSUSE (com o KDE) do Windows, e ainda estou passando pela curva de aprendizado.

Alterno bastante entre usar meus fones de ouvido com microfone embutido e usar os alto-falantes internos do meu monitor e o microfone da minha webcam. Usando o menu Phonon através do KMix (exemplo abaixo), eu sou capaz de reorganizar os dispositivos para colocar o que eu quero usar no topo, mas eu prefiro poder fazê-lo com uma tecla de atalho, semelhante ao que o aplicativo Audio Switcher faz no Windows. Quando faço isso, também gostaria de configurar o canal Master para o novo, para que eu possa ajustar facilmente o áudio.

Existe um caminho através de algum script que me permita (a) selecionar um novo dispositivo de reprodução de áudio e gravação de áudio em tempo real, (b) enquanto também configura o canal mestre para o mesmo dispositivo de reprodução (c) com uma tecla de atalho ou outro método rápido na área de trabalho?

    
por Ryan 24.05.2015 / 23:39

2 respostas

10

A maioria dos kits GUI usa o mesmo backend PulseAudio. Use pactl para escrever script de controle.

NAME
       pactl - Control a running PulseAudio sound server

DESCRIPTION
       pactl can be used to issue control commands to the PulseAudio sound server.

       pactl only exposes a subset of the available operations. For the full set use the pacmd(1).

Origem: man pactl

  1. Para verificar os dissipadores de saída disponíveis

    $ pactl list short sinks
    0   alsa_output.pci-0000_01_00.1.hdmi-stereo    module-alsa-card.c  s16le 2ch 44100Hz   SUSPENDED
    1   alsa_output.pci-0000_00_1b.0.analog-stereo  module-alsa-card.c  s16le 2ch 44100Hz   SUSPENDED
    
  2. Para verificar as fontes de entrada disponíveis

    $ pactl list short sources
    0   alsa_output.pci-0000_01_00.1.hdmi-stereo.monitor    module-alsa-card.c  s16le 2ch 44100Hz   SUSPENDED
    1   alsa_output.pci-0000_00_1b.0.analog-stereo.monitor  module-alsa-card.c  s16le 2ch 44100Hz   SUSPENDED
    2   alsa_input.pci-0000_00_1b.0.analog-stereo   module-alsa-card.c  s16le 2ch 44100Hz   SUSPENDED
    
  3. Para verificar o padrão

    $ pactl info
    Server String: /run/user/1000/pulse/native
    Library Protocol Version: 30
    Server Protocol Version: 30
    Is Local: yes
    Client Index: 2
    Tile Size: 65472
    User Name: user
    Host Name: userpc
    Server Name: pulseaudio
    Server Version: 6.0
    Default Sample Specification: s16le 2ch 44100Hz
    Default Channel Map: front-left,front-right
    Default Sink: alsa_output.pci-0000_00_1b.0.analog-stereo
    Default Source: alsa_input.pci-0000_00_1b.0.analog-stereo
    
  4. Para definir o padrão

    pactl set-default-source id-or-name
    pactl set-default-sink id-or-name
    

    Exemplo:

    pactl set-default-source alsa_input.pci-0000_00_1b.0.analog-stereo
    pactl set-default-sink alsa_output.pci-0000_00_1b.0.analog-stereo
    

    ou:

    pactl set-default-source 2
    pactl set-default-sink 1
    

Notas:

  • Isso afetará apenas novos streams, você tem que mover os streams atuais, então use:

    pacmd move-sink-input <stream-id> <sink-id/name>
    

    Bom exemplo para copiar: Mudando para Áudio HDMI quando o HDMI é conectado a um laptop (14.04)

  • Algumas placas têm várias portas selecionáveis. Pode ser a que você deseja que não seja o padrão.

    Verifique as portas disponíveis:

    $pactl list sinks
    Sink #1
        State: RUNNING
        Name: alsa_output.pci-0000_00_1b.0.analog-stereo
        Description: Built-in Audio Analog Stereo
        Driver: module-alsa-card.c
        ...
        Ports:
            analog-output-speaker: Speakers (priority: 10000, not available)
            analog-output-headphones: Headphones (priority: 9000, available)
        Active Port: analog-output-headphones
        Formats:
            pcm
    ...
    

    Para definir:

    pactl set-sink-port <sink-id/name> <port-name>
    

    Exemplo:

    pactl set-sink-port 1 analog-output-headphones
    

Para alterar o canal principal

Após este tutorial , você pode definir o canal mestre usando qdbus da seguinte forma:

  1. Encontre o Master Mixer para cada um dos seus dispositivos com o seguinte comando. Primeiro, defina manualmente o canal mestre para o que deseja verificar e, em seguida, execute o comando:

    qdbus org.kde.kmix /Mixers org.kde.KMix.MixSet.currentMasterControl
    
  2. Usando o resultado desse comando e o coletor de áudio que você deseja controlar, use a seguinte sintaxe para alterar seu canal mestre:

    qdbus org.kde.kmix /Mixers org.kde.KMix.MixSet.setCurrentMaster "[insert Mixer]" "[insert sink]" 2>&1 > /dev/null
    
  3. No final, o script para mudar todo o áudio atual para um novo canal, defini-lo como o padrão e configurá-lo como o canal mestre se parece com o seguinte:

    #!/bin/bash
    pactl set-default-sink alsa_output.usb-Logitech_Logitech_G930_Headset-00-Headset.analog-stereo
    pactl set-default-source alsa_input.usb-Logitech_Logitech_G930_Headset-00-Headset.analog-mono
    INPUTS=($(pacmd list-sink-inputs | grep index | awk '{print $2}'))
    for i in ${INPUTS[*]}; do pacmd move-sink-input $i alsa_output.usb-Logitech_Logitech_G930_Headset-00-Headset.analog-stereo &> /dev/null; done
    qdbus org.kde.kmix /Mixers org.kde.KMix.MixSet.setCurrentMaster "PulseAudio::Playback_Devices=:1" "alsa_output.usb-Logitech_Logitech_G930_Headset-00-Headset.analog-stereo" 2>&1 > /dev/null
    
por 30.05.2015 / 16:03
1

Agradecemos a esta resposta Eu finalmente encontrei uma solução, veja a instrução abaixo

Mostrar sempre a saída HDMI no mix Criaremos um novo perfil que vincule os dois perfis "Áudio analógico" e "Áudio HDMI".

Pelo que entendi, este arquivo /usr/share/pulseaudio/alsa-mixer/profile-sets/default.conf lista todos os perfis de mapeamento entre Alsa e Pulseaudio.

1.
Encontre o mapeamento que está relacionado à sua definição Analog profile e HDMI profile . ( description: deve corresponder aos Perfis de dispositivos mostrados no Volume de áudio módulo de configuração do Kde)

Para mim, são os seguintes:

[Mapping analog-stereo]
device-strings = front:%f
channel-map = left,right
paths-output = analog-output analog-output-lineout analog-output-speaker analog-output-headphones analog-output-headphones-2
paths-input = analog-input-front-mic analog-input-rear-mic analog-input-internal-mic analog-input-dock-mic analog-input analog-input-mic analog-input-linein analog-input-aux analog-input-video analog-input-tvtuner analog-input-fm analog-input-mic-line analog-input-headphone-mic analog-input-headset-mic
priority = 10

[Mapping hdmi-stereo-extra1]
description = Digital Stereo (HDMI 2)
device-strings = hdmi:%f,1
paths-output = hdmi-output-1
channel-map = left,right
priority = 2
direction = output

2.
Na base da definição de Mapeamento acima, criei o novo perfil a seguir que agrupa os dois acima:

[Profile output:analog-stereo+output:hdmi-stereo-extra1]
description = All
output-mappings = analog-stereo hdmi-stereo-extra1
input-mappings = analog-stereo

3.
Reinicie o pulso de áudio com este comando:

pulseaudio --kill; sleep 1; pulseaudio --start

4.
Vá para configurações do phonon do KDE > Configuração do hardware de áudio e selecione o novo perfil.  

Agoravocêdeveverosdoisperfisnomistoe,assim,vocêpoderáalternarfacilmente:


Eusugeririausarestemisturadordeplasmoide: link

(etapa extra) Forçar a saída ativada

Se você não se importar de ter o alto-falante do computador e o áudio de saída da TV ao mesmo tempo (basicamente, não é necessário alternar a saída de áudio).

Você pode selecionar a configuração abaixo e, em seguida, você terá uma nova entrada no mixer

    
por 27.01.2018 / 13:37