Похоже про проблемы 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 ВООБЩЕ НЕ МОНИТОРИТСЯ!
Как это исправить?