[ALSA] Работа с несколькими звуковыми картами.

Похоже про проблемы ALSA с неколькими звуковыми устройствами сказано мало. раз я не смог найти решение своей проблемы…
Итак, благодаря покупке USB-микрофона я вынужден был снять из блэклиста блокировку usb-audio.
Вместе с микрофоном разблокировалась и чёртова звуковая карта на клавиатуре.
Сейчас ситуация такая: http://pastebin.calculate-linux.ru/ru/show/3709
Где AT2020 USB - сам USB-микрофон с которого надо записывать, Maya44 - карта ESI MAYA44, на которую и надо воспроизводить звук, Set - чёртова звуковая карта на клавиатуре.
Но это пол-беды, alsaconf по своей неряшливости умудрился нахреначить список устройств
совершенно криво - http://pastebin.calculate-linux.ru/ru/show/3710 .
как всё это исправить?
Заранее спасибо…

Используйте pulseaudio
У меня на компе 3-и звуковухи - Бортовая, HDMI, и usb-колонка:

 0 [SB             ]: HDA-Intel - HDA ATI SB
                      HDA ATI SB at 0xfe024000 irq 16
 1 [HDMI           ]: HDA-Intel - HDA ATI HDMI
                      HDA ATI HDMI at 0xfdffc000 irq 19
 2 [Audio          ]: USB-Audio - USB Audio
                      C-Media INC. USB Audio at usb-0000:00:12.1-1, full speed

pulseaudio нормально решает задачу переключения вывода звука налету.
Также пульса может работать (через дополнительные фронтенды) с софтом собранным для использования alsa, osd или esd предоставляя виртуальные звуковые с которыми этот софт “будет общаться”.
Для создания виртуальной alsa-звуковухи, соберите пакет media-plugins/alsa-plugins с включенным USE=pulseaudio, и создайте симлинк

ln -sf /usr/share/alsa/pulse-alsa.conf /etc/asound.conf

В дефолтовой сборке CLDG, с gnome3 уже используется пульса.
Я решил остаться на gnome2, соответственно обновления компилирую. У себя в файле /etc/make.conf я глобально включил.
USE="${USE} pulseaudio"

Могу посоветовать вот такой вариант c .asoundrc в домашнем каталоге, но иногда у меня звуковые меняются местами:

pcm.!default {
     type plug
     slave.pcm "hw:2,0" # или какой там ID у карты
}

Пока ничего лучше не нашел.

Установил Pulse Audio, но VLC и Firefox по прежнему не издают ни звука.

Для каждого приложения еще надо выбрать устройство вывода.

Похоже PulseAudio как была, так и осталось ужасающей звуковой системой, какой я её запомнил ещё со времён Ubuntu.
1 раз загрузил - нормально всё, VLC и Flash пахали, через какое-то время оба перестали проигрывать звук - перезапуск сервиса не помог.
Перезагрузился - устройва видит(как система, так и менеджер PulseAudio), но нифига на них не выводит.
Какие решенияч предложите мне на этот раз?

Насчет Pulse ничего плохого сказать не могу - всегда все прекрасно работало вот по этой инструкции http://ru.gentoo-wiki.com/wiki/PulseAudio . Единственное, что мне не подходило и почему ушел с него - все перегонялось в 48kHz, хотя сейчас, вроде, возможно переключение между несколькими частотами.

Проблему с определением карт решил выставив d /etc/modprobe.d/alsa.conf

options snd-ice1724 index=0

теперь всё нормально и вывод такой:

 0 [Maya44         ]: ICE1724 - ESI Maya44
                      ESI Maya44 at 0xbc00, irq 23
 1 [USB            ]: USB-Audio - AT2020 USB
                      audio-technica    � AT2020 USB at usb-0000:00:1d.1-1, full speed
 2 [Set            ]: USB-Audio - C-Media USB Headphone Set
                      C-Media USB Headphone Set at usb-0000:00:1d.0-1.1, full speed

Теперь осталась одна проблема - мусор в определении звуковых карт ALSA - это ОЧЕНЬ СИЛЬНО задерживает загрузку системы в целом.

* Restoring Mixer Levels ...
alsactl: load_state:1713: Cannot find soundcard '�'...
 * Errors while restoring defaults, ignoring
alsactl: load_state:1713: Cannot find soundcard 'AT2020'...
 * Errors while restoring defaults, ignoring
alsactl: load_state:1713: Cannot find soundcard 'at'...
 * Errors while restoring defaults, ignoring
alsactl: load_state:1713: Cannot find soundcard 'usb-0000:00:1d.1-1,'...
 * Errors while restoring defaults, ignoring
alsactl: load_state:1713: Cannot find soundcard 'full'...
 * Errors while restoring defaults, ignoring
alsactl: load_state:1713: Cannot find soundcard 'speed'...
 * Errors while restoring defaults, ignoring                                                                                                                               [ ok ]
Setting default volumes...

Как это исправить?

Могу тоже посоветовать установить Pulseaudio. Он значительно усовершенствовался с момента моего его использования в таких дистрибутивах, как ASPLinux, Ubuntu, Fedora, PCLinuxOS. А может дело в том, что бинарный Pulseaudio и собранный из ебилдов - это две разные вещи и за безглючность надо благодарить Gentoo.

Кроме этого, в его поддержку могу сказать, что не нужно думать, когда при включенном звуке, ты запускаешь приложение использующее другое звуковое устройство. Pulseaudio сам всё сделает, можно просматривать флеш-ролик и говорить по скайпу, также и музыку в фоне слушать. Ничто ни с чем не конфликтует. Да и вообще, если имеется много звуковых устройств, то без прослойки в виде такого сервера уже не обойтись (или всё прописывать ручками, но для этого необходимо знать как работает alsa).

Кроме установки Pulseaudio надо установить pavucontrol.

После этого необходимо установить alsa-plugins (c флагом pulseaudio) для того, чтобы использовать .asoundrc или /etc/asound
Необходимо в .asoundrc вставить:

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

Далее нужно пересобрать каждое приложение с флагом pulseaudio:

USE="pulseaudio" emerge -av vlc

Затем, в каждом приложении выбрать pulse (как вывод звука).

Что в итоге? Все приложения нормально работают через Pulseaudio без конфликтов.
В pavucontrol можно настроить вывод звука из Скайпа, через такие устройства, какие нужны (у меня USB-телефон, USB-камера с микрофоном, всё настраивается). Музыка играет на все 5.1 колонку… Кстати, Skype пересобирать с флагом pulseaudio не нужно. Audacious - также, у него можно выбрать в параметрах вывод pcm через pulse.

Поддержка flash также есть. Дополнительно я ещё установил libflashsupport, но emerge после установки подсказала, что для поддержки флешем звука нужно установить alsa-plugins.

Также, у меня есть две звуковые карты, можно настроить часть приложений на выход с других устройств. Pulseaudio это позволяет сделать.

в /etc/modprobe.d/alsa.conf я убрал всю очередность, теперь Pulseaudio сам всё делает.
в /etc/modprobe.d/blacklist.conf я заблокировал только HDMI выход, который мне не нужен…
cat /proc/asound/cards показывает такую очередность:

 0 [U0x46d0x81b    ]: USB-Audio - USB Device 0x46d:0x81b
                      USB Device 0x46d:0x81b at usb-0000:00:10.4-4, high speed
 1 [CMI8738        ]: CMI8738-MC6 - C-Media CMI8738
                      C-Media CMI8738 (model 55) at 0xb800, irq 16
 2 [V8237          ]: VIA8237 - VIA 8237
                      VIA 8237 with CMI9761A+ at 0xd000, irq 22

Но это нисколько не мешает тому, что звук автоматически проигрывается в карте C-Media, а микрофон используется Скайпом с USB-Audio.

UPD - таки поставил. всё вроде нормально, но flash ВООБЩЕ НЕ МОНИТОРИТСЯ!
Как это исправить?