Teftelia из системы ничего сносить не надо. ALSA de-facto является звуковой подсистемой по умолчанию и вкомпилирована в ядро. Pulse audio своим наличием не навредит. А в настройках - да, везде нужно указать ALSA, как предпочитаемую.
Итак, по просьбе
Teftelia попробуем собарть воедино информацию по настройке E-mu 0202 USB, E-mu 0404 USB и E-mu Tracker Pre USB для начинающих.
C чего начать:
1. Определяем, загрузился ли у нас драйвер snd-usb-audio, и под каким номером в системе зарегестрировалась карточка: в консоли набираем
$ aplay -l
вот что получилось на моем AsusX50N:
**** List of PLAYBACK Hardware Devices ****
card 0: NVidia [HDA NVidia], device 0: ALC660-VD Analog [ALC660-VD Analog]
Subdevices: 0/1
Subdevice #0: subdevice #0
card 0: NVidia [HDA NVidia], device 6: Si3054 Modem [Si3054 Modem]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: USB [E-MU 0404 | USB], device 0: USB Audio [USB Audio]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: USB [E-MU 0404 | USB], device 1: USB Audio [USB Audio #1]
Subdevices: 1/1
Subdevice #0: subdevice #0
Отсюда видим, что у нас есть карта E-mu 0404USB и она имеет индекс 1. В составе карты есть два устройсва: 0 и 1 (аналоговый и SPDIF выходы соответсвенно). Карточка HDA Nvidia под номером 0 нас не интересует в данный момент.
2. Проверяем воспроизведение посредством ALSA. Для этого подготовим wav файл стерео 16 бит/44кГц длительностью секунд 30-40 с именем foo.wav Проверять на mp3 или на моно не советую, по крайней мере для новичков, есть неочевидные ньюансы, на крайний случай пойдет ogg 16/44 стерео.
2.1. Запускаем команду
aplay -D hw:1,0 foo.wav
(hw:1,0 - означает карта №1, устройство №0 (данные по номерам берем из п.1))
в результате получаем..... правильно, тишину в колонках и сообщение об ошибке:
aplay: set_params:979: Sample format non available
(не все советы одинаково полезны ;-))
Говорит, что что-то не то с частотой дискретизации - не верьте ему, он банально врет.
Причина в том, что наш файл имеет битность 16, а карточка ожидает 24 бита. Если вас посетила мысль о грядущем переконвертировании всей своей музыкальной коллекции из 16 бит в 24, чтоб слушать её на E-mu 0x0xUSB, то это зря, достаточно вместо hw:1,0 указать plughw:1,0. Алиас plughw отличается от hw, тем, что ALSA перед отдачей аудио потка "в железо" преобразует его к "нужной" битности и кол-ву каналов (частота дискретизации остается "оригинальной").
aplay -D plughw:1,0 foo.wav
Вот теперь звук должен воспроизводиться корректно.
Следующим пунктом нашей программы - полное ингорирование положения регулятора громкости. Это связано с тем, что EMU USB не имеет аппаратного микшера, в отличие от тех же карточек на основе AC97. Но ALSA имеет достаточно гибкую архитектуру, и эту проблему можно решить объявлением программного регулятора громкости. Для этого нам нужно создать в домашнем каталоге пользователя файл ".asoundrc" (без кавычек) со следующим содержимым:
pcm.usb_sv{
type softvol
slave.pcm "plughw:1,0"
control.name "SoftMaster"
control.card 1
max_dB 0.0
min_dB -51.0
resolution 100
hint{
show on
description "EMU-0404USB Volume"
}
}
Здесь мы объявили новый алиас с именем "usb_sv", не забываем перебить индексы карты (если нужно) в 3 и 5 строках. Прелесть настроек в .asoundrc состоит в том, что изменения вступют в силу "мгновенно" после сохранения файла.
Проинициализируем наше новое виртуальное PCM устройство "usb_sv" путем вывода звука через него:
aplay -D usb_sv foo.wav
Теперь достаточно закрыть приложение микшера и открыть его заново (под Gnome'oм нужно прибить "mixer_applet2" вручную в "Системном мониторе", хотя проще сделать "Завершение сеанса", и войти в систему заново)
Открываем окно микшера, и наблюдаем новый ползунок с именем "SoftMaster". Проверим работу нашего регулятора: запускаем команду:
aplay -D usb_sv foo.wav
и двигаем ползунком "SoftMaster" - громкость, таки, регулируется, что и требовалось.
Теперь мы можем в настройках программ указывать в качестве вывода устройство usb_sv, и будет "регулироемое" счастье. Но не долгое, т.к. не все программы позволяют подобные "вольности" с алиасами. Например, Скайп без проблем переваривает виртуальные устройства, а в видео проигрывателе VLC нам предлагают на выбор либо устройство по умолчанию, либо конкретное hw устройство, а с hw мы уже проходили - 16 бит "оно" не переваривает.
Что ж, ситуация неприятная, но поправимая, мы просто переопределим ALSA устройство по-умолчанию. Для этого в файле .asoundrc заменим первую строчку и вместо "pcm.usb_sv{" пропишем:
pcm.!default{
Готово, все программы должны работать на ура! Правда, если у вас есть ещё, например, встроенная карта, то она остается "без работы" в большинстве приложений.
На первый взгляд, мы успешно настроили звуковую подсистему - по крайней мере музыка 16/44 играет без проблем. Теперь запускаем видео-проигрыватель, и получаем... ужасные хрипы, скрежет и подхрюкивание.... WTF!!! Дело в том, что большинство видео имеет 48кГц аудио дорожку, а EMU USB ожидает 44кГц. Передискретизация внутри железок EMU-USB отсутсвует, и это хорошо, по крайней мере для меломанов.
Есть несколько решений данной проблемы:
1. Объявить программный ресемплер.
2. Поставить патч для usb-mixer, и регулировать вручную частоту дискретизации. Ожидая недоверчивые возгласы, повторю ещё раз:да, есть патч; да, это то самое, чего так долго не хватало владельцам EMU-USB; да, он рабочий и обкатаный; да, теперь в alsamixer есть отдельный ползунок, регулирующий аппаратный sample rate. Установку патча я пропишу позже в "разделе" "для продвинутых", особо нетерпеливые могут пройти по:
http://ubuntuforums.org/showpost.php?p=7420874&postcount=79 и сделать всё самостоятельно. (За прорыв в создании патча делаем четыре раза "ку" нашему соотечественнику mellowman'у!)
3. Держать в VirtualBox WinXP, и оттуда переключать частоту дискретизации. (анахронизм, и вообще не труЪ).
Итак, добавление программного 44кГц ресемплера к регулятору громкости: после правок ваш файл ~/.asoundrc будет выглядеть так:
pcm.usb_44{
type plug
slave{
pcm "plughw:1,0"
format S24_3LE
rate 44100
}
}
pcm.usb_sv{
type softvol
slave.pcm "usb_44"
control.name "SoftMaster"
control.card 1
max_dB 0.0
min_dB -51.0
resolution 100
hint{
show on
description "EMU-0404USB Volume"
}
}
Для работы ресемплера должны быть установлены пакеты alsa-plugins и speex.
Не забываем корректировать индекс карты, и менять объявление "usb_sv" на "!default", если необходимо.
Запускаем видео-проигрыватель снова, и наслаждаемся. Как по мне, для 99% фильмов абсолютно не критична потеря качества при передискретизации "быстрым алгоритмом". Если данное положение дел вас несколько смущает, добавьте в начале .asoundrc объявление:
defaults.pcm.rate_converter "samplerate_best"
Вы получите более качественный ресемплинг, правда ценой немалой нагрузки на CPU.
Если вдруг вы захотите использовать SPDIF выход вместо аналогового, то достаточно поправить в .asoundrc "plughw:1,0" на "plughw:1,1".
Для новичков, я думаю достаточно.
Следующим номером нашей программы - объявление программного мишкирования нескольких звуковых потоков, "наложение" патчей, управление аппаратным sample rate. To be continued.