Linux vários dispositivos de áudio

2

Eu tenho duas placas de som: uma PCI e uma USB.

Eu gostaria de ter isso, se a placa USB estiver conectada, que é usada como dispositivo padrão em todo o sistema, caso contrário (se a placa USB não estiver conectada) a placa PCI será usada.

Como posso fazer isso?

    
por peoro 17.11.2010 / 21:59

2 respostas

1

O PulseAudio lidará com a alternância de saídas de áudio dessa maneira de maneira transparente. Basta conectar o dispositivo USB, escolher nas preferências globais de som do sistema ou em pavucontrol para os aplicativos desejados, e o PulseAudio fará o que for necessário.

    
por 17.11.2010 / 22:29
0

Aqui está o script Python que eu uso:

#!/usr/bin/env python
# This script monitors USB connections and when the audio device is connected
# makes it the default output device.

import dbus, gobject, os
from dbus.mainloop.glib import DBusGMainLoop
from subprocess import Popen, PIPE

PCI_DEVICE = 'alsa_output.pci-0000_00_1b.0.analog-stereo'
USB_DEVICE = 'alsa_output.usb-Logitech_Logitech_Z205-00-default.analog-stereo'

def set_default_sink(sink):
    popen = Popen('pacmd', stdin = PIPE, stdout = PIPE)
    popen.communicate('set-default-sink ' + sink)

def device_added(udi):
    if udi.find('alsa') >= 0:
        set_default_sink(USB_DEVICE)

def device_removed(udi):
    if udi.find('alsa') >= 0:
        set_default_sink(PCI_DEVICE)

DBusGMainLoop(set_as_default = True)
bus = dbus.SystemBus()
hal_manager = bus.get_object('org.freedesktop.Hal',
                             '/org/freedesktop/Hal/Manager')
bus.add_signal_receiver(device_added, 'DeviceAdded',
                        'org.freedesktop.Hal.Manager', 'org.freedesktop.Hal',
                        '/org/freedesktop/Hal/Manager')
bus.add_signal_receiver(device_removed, 'DeviceRemoved',
                        'org.freedesktop.Hal.Manager', 'org.freedesktop.Hal',
                        '/org/freedesktop/Hal/Manager')

gobject.MainLoop().run()

Os nomes dos coletores ( PCI_DEVICE para os alto-falantes internos e USB_DEVICE para os alto-falantes USB) são específicos da minha máquina, então você precisará substituí-los. Você pode obter esses nomes em pacmd , que é uma parte de pulseaudio-utils - basta digitar list-sinks no prompt pacmd e encontrar os nomes de seus dispositivos (os alto-falantes USB devem estar conectados).

    
por 02.12.2010 / 09:11

Tags