Система управления проигрыванием и записью звука в Линуксе ALSA дает очень много возможностей для настройки. Конфигурация ALSA представляет собой дерево: ее составные (compound) переменные могут включать в себя поименованные ссылки на другие переменные, которые в свою очередь также могут быть составными. Кроме составных переменных, в этом дереве еще могут быть текстовые строки, целые числа, дробные числа и 64битные целые числа (почему-то это отдельный тип). У каждой переменной есть имя внутри своего узла, поэтому на любую переменную можно сослаться выражением типа
pcm.cowbell.slave.type
Чем-то это напоминает мне SNMP.
Настройки, грубо говоря, хранятся в трех файлах:
/usr/share/alsa/alsa.conf
а на Федоре это /etc/alsa/alsa.conf
| Настройки данной версии программы ALSA
|
/etc/asound.conf
| Настройки для данной машины
|
~/.asoundrc
| Настройки пользователя. Это место не стоит использовать для описания физических устройств, но можно описать тут разные виртуальные миксеры и прочее
|
Обо всем этом хорошо написано в
http://www.volkerschatz.com/noise/alsa.html. А здесь я хочу написать вот о чем.
Разделы дерева конфигурации
/ |
pcm/
| Именованные ссылки на описания устройств, пригодных для проигрывания и записи. Например: Команды aplay -Dcowbell bang.wav или arecord -Dcowbell bang.wav говорят ALSA, что описание устройства нужно прочитать из составной переменной pcm.cowbell. Команда aplay -Dhw:0,0 ведет вот в это место файла alsa.conf
pcm.hw { @args [ CARD DEV SUBDEV ] @args.CARD { type string default { @func getenv vars [ ALSA_PCM_CARD ALSA_CARD ] default { @func refer name defaults.pcm.card } } } @args.DEV { type integer default { @func igetenv vars [ ALSA_PCM_DEVICE ] default { @func refer name defaults.pcm.device } } } @args.SUBDEV { type integer default { @func refer name defaults.pcm.subdevice } } type hw card $CARD device $DEV subdevice $SUBDEV hint { show { @func refer name defaults.namehint.extended } description "Direct hardware device without any conversions" } }
Этот код говорит, куда нужно поставить параметры, идущие после "hw:" в опции -D. Можно видеть, что устройство hw, вызываемое конструкцией -Dhw:x,y[,z] - это оболочка для встроенного типа PCM-устройств "hw".
| pcm_slave/
| Поименованные описания нижележащих устройств для конструкций, использующих нижележащие устройства. Например:
pcm_slave.bling { pcm { type hw card 0 device 0 } }
pcm.blang { type plug slave bling }
Строка "bling" в поле slave объекта pcm.blang указывает на объект в поле "blang" объекта pcm_slave.
| pcm_type
| Позволяет определять новые символические названия типов устройств, управлением которыми могут заниматься подключаемые библиотеки. Не вникал.
| ctl_type/ ctl/
| Похоже, здесь некоторые описания параметров для миксера
| rawmidi_type/ rawmidi/ seq_type/ seq/
| Это все что-то для МИДИ
| server/ pcm_scope/ pcm_scope_type/ pcm_hook/ pcm_hook_type/ hook_args/
| Вообще не понял.
|
|