5

После переключения с Unity на XFCE у меня возникли трудности с настройкой звука. В моей системе несколько звуковых карт, и я хочу использовать последнюю, загружаемую ядром. ALSA, кажется, использует первый по умолчанию.

Кроме того, я не могу использовать звук более чем в одном приложении одновременно, я получаю ошибки, такие как "используется звуковое устройство" и т.д. Может ли кто-нибудь дать мне некоторое представление об архитектуре ALSA, инструментах, которые мне нужно использовать, чтобы исследовать Система и советы о том, как структурировать файл конфигурации.

1 ответ1

12

Общесистемный файл конфигурации хранится в /etc/asound.conf, все совместимые с ALSA приложения будут читать этот файл при каждом запуске. Лучшее место, где можно получить представление о ваших текущих звуковых устройствах, находится здесь, в '/proc /asound /'. Если у вас нет файла конфигурации, приложения ALSA будут использовать /proc /asound /card0 в качестве звукового устройства по умолчанию. Вы можете проверить, какую версию ALSA вы используете здесь /proc /asound /version.

Каждое звуковое устройство имеет связку "pcms", связанную с ним. Каждый PCM в основном является выходным каналом: "front", "Rear", "Surround41", "Surround51" и т.д. Вы можете увидеть, какие каналы PCM доступны с помощью этой команды:

aplay -L | grep CARD

Некоторые из этих каналов pcm не соответствуют физическим аудиовыходам, но являются программными каналами, предоставляемыми ALSA. Тот, который нас интересует, называется «dmix». Канал 'dmix' - это программный микшер, предоставляемый ALSA для обработки нескольких одновременных входных потоков.

Стоит отметить, что для идентификации конкретного звукового устройства используется несколько соглашений. Файл конфигурации будет использовать card0, card1 и т.д. Или просто 0, 1 и т.д. Также можно ссылаться на карту по имени, например, Creative, Nvidia и т.д. Эти имена определены как программные ссылки в каталоге процессов ALSA: 'ls -l /proc /asound'. Как правило, при обращении к каналу PCM в файле конфигурации, формат выглядит следующим образом: «имя-канала: индекс-карты, суб-индекс». Так, например, «dmix: 2,0» относится к каналу dmix pcm на карте 2, подустройство 0. Вы видите вспомогательные устройства, связанные с каждой звуковой картой, используя эту команду:

aplay -l

Последний шаг - это сам файл конфигурации, расположенный здесь /etc/asound.conf. В этом файле нам нужно 2 компонента: определение канала 'pcm' и определение канала 'ctl'. Канал 'pcm' определяет наш выход и отвечает за мультиплексирование нескольких звуковых потоков в один аппаратный выходной канал. Канал 'ctl' используется для микшера и отвечает за управление громкостью.

ALSA использует программный канал PCM, называемый «плагин», который обрабатывает мультиплексирование. Это программный интерфейс для подчиненного канала вывода PCM. Выходной канал подчиненного ПКМ должен сам по себе быть способным к микшированию. Ниже приведен пример файла конфигурации:

pcm.custom
{
    type plug
    slave
    {
        pcm "dmix:2,0"
    }
}

ctl.custom
{
    type hw
    card Creative
}

pcm.!default pcm.custom
ctl.!default ctl.custom

В этом случае я использую выходной канал 'dmix' для 3-го звукового устройства в системе "dmix:2,0". Третий индекс равен 2, потому что он начинается с 0 (card0, card1, card2). Кроме того, схема 'ctl' ссылается на ту же карту, но на этот раз, используя ее мягко связанное имя 'Creative'.

Я надеюсь, что это полезно для других.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .