alsa
Розбіжності
Тут показані розбіжності між вибраною ревізією та поточною версією сторінки.
| Порівняння попередніх версійПопередня ревізіяНаступна ревізія | Попередня ревізія | ||
| alsa [2012/12/12 18:45] – [Результирующий файл] wombat | alsa [2013/06/04 14:22] (поточний) – [Эквалайзер] wombat | ||
|---|---|---|---|
| Рядок 1: | Рядок 1: | ||
| + | ====== ALSA ====== | ||
| + | Все пользовательские настройки устройств хранятся в файле // | ||
| + | |||
| + | ===== Маршрутизация каналов ===== | ||
| + | |||
| + | Простая конфигурация маршрутов для четырёх каналов, | ||
| + | |||
| + | pcm.torear { | ||
| + | type route # Route & Volume conversion PCM | ||
| + | #slave STR # Slave name | ||
| + | # or | ||
| + | slave { # Slave definition | ||
| + | pcm " | ||
| + | # or | ||
| + | #pcm { } # Slave PCM definition | ||
| + | #[format STR] # Slave format | ||
| + | channels 4 # Slave channels | ||
| + | } | ||
| + | ttable { | ||
| + | 0 { # Таблица коэффициентов передачи канала №0 (передний левый) в другие каналы: | ||
| + | 0 0.0 # в передний левый с коэффициентом 0 | ||
| + | 1 0.0 # в передний правый с коэффициентом 0 | ||
| + | 2 1.0 # в тыловой левый с коэффициентом 1 (т.е. 100%) | ||
| + | 3 0.0 # в тыловой правый с коэффициентом 0 | ||
| + | } | ||
| + | 1 { # Таблица коэффициентов передачи канала №1 (передний правый) в другие каналы: | ||
| + | 0 0.0 # в передний левый с коэффициентом 0 | ||
| + | 1 0.0 # в передний правый с коэффициентом 0 | ||
| + | 2 0.0 # в тыловой левый с коэффициентом 0 | ||
| + | 3 1.0 # в тыловой правый с коэффициентом 1 (т.е. 100%) | ||
| + | } | ||
| + | } | ||
| + | } | ||
| + | |||
| + | Такая запись в файле ~/.asoundrc создаст ALSA-устройство под названием " | ||
| + | |||
| + | mplayer -ao alsa: | ||
| + | |||
| + | aqualung --device=torear | ||
| + | |||
| + | | ||
| + | | ||
| + | ===== Микшеры ===== | ||
| + | |||
| + | Для того, чтобы несколько приложений могли использовать аудиоустройства одновременно, | ||
| + | |||
| + | ==== Воспроизведение ==== | ||
| + | |||
| + | Для микшера воспроизведения используется плагин ALSA под названием " | ||
| + | |||
| + | pcm.dmixer { | ||
| + | type dmix | ||
| + | ipc_key 234885 | ||
| + | slave { | ||
| + | pcm " | ||
| + | period_time 0 | ||
| + | buffer_time 0 | ||
| + | period_size 1024 | ||
| + | buffer_size 8192 | ||
| + | # rate 44100 | ||
| + | # channels 6 | ||
| + | } | ||
| + | # | ||
| + | # 0 0 | ||
| + | # 1 1 | ||
| + | # 2 2 | ||
| + | # 3 3 | ||
| + | # 4 4 | ||
| + | # 5 5 | ||
| + | # } | ||
| + | } | ||
| + | |||
| + | ==== Запись ==== | ||
| + | |||
| + | Для совместного доступа приложений к устройству записи (захвата звука) используем ALSA-плагин " | ||
| + | |||
| + | pcm.dsnooper { | ||
| + | type dsnoop | ||
| + | ipc_key 234886 | ||
| + | ipc_perm 0660 | ||
| + | slave.pcm " | ||
| + | } | ||
| + | |||
| + | ==== Дуплекс ==== | ||
| + | |||
| + | Чтобы приложения могли использовать одно устройство для записи и воспроизведения звука, нам нужно " | ||
| + | |||
| + | pcm.duplexasym { | ||
| + | type asym | ||
| + | | ||
| + | | ||
| + | } | ||
| + | | ||
| + | pcm.duplex { # plug and play on all speakers | ||
| + | type plug | ||
| + | | ||
| + | } | ||
| + | |||
| + | ===== Шумоподавитель ===== | ||
| + | |||
| + | Примитивный шумодав (написан правильно, | ||
| + | |||
| + | pcm.noise_gate { | ||
| + | type plug | ||
| + | slave.pcm " | ||
| + | } | ||
| + | | ||
| + | pcm.ladspa_noise_gate { | ||
| + | type ladspa | ||
| + | slave.pcm " | ||
| + | | ||
| + | path "/ | ||
| + | plugins [{ | ||
| + | label hard_gate | ||
| + | input { | ||
| + | controls [ 0.1 ] | ||
| + | } | ||
| + | }] | ||
| + | } | ||
| + | |||
| + | ===== Эквалайзер ===== | ||
| + | |||
| + | Сначала необходимо установить плагин для ALSA, реализующий функции эквалайзера. В качестве этого плагина зачастую выбирают плагин [[http:// | ||
| + | |||
| + | В Gentoo для этого достаточно выполнить команду | ||
| + | |||
| + | # emerge -va alsaequal | ||
| + | |||
| + | которая установит пакет **media-plugins/ | ||
| + | |||
| + | После этого в пользовательский файл настроек ALSA ( // | ||
| + | |||
| + | pcm.equalplug { | ||
| + | # Or if you want the equalizer to be your | ||
| + | # default soundcard uncomment the following | ||
| + | # line and comment the above line. | ||
| + | # pcm.!default { | ||
| + | type plug; | ||
| + | slave.pcm equal; | ||
| + | } | ||
| + | | ||
| + | pcm.equal { | ||
| + | type equal; | ||
| + | slave.pcm " | ||
| + | } | ||
| + | | ||
| + | ctl.equal { | ||
| + | type equal; | ||
| + | } | ||
| + | |||
| + | Теперь после перезапуска звуковой подсистемы ALSA | ||
| + | |||
| + | # / | ||
| + | |||
| + | появится возможность использовать эквалайзер. Настроить его можно при помощи утилиты | ||
| + | |||
| + | $ alsamixer | ||
| + | |||
| + | Эквалайзер в // | ||
| + | |||
| + | {{: | ||
| + | |||
| + | после чего ввести в поле названия звуковой карты " | ||
| + | |||
| + | {{: | ||
| + | |||
| + | Поле этого на экране появятся настройки 10-полосного эквалайзера | ||
| + | |||
| + | {{: | ||
| + | |||
| + | Настроив эквалайзер, | ||
| + | |||
| + | mplayer -ao alsa: | ||
| + | |||
| + | или | ||
| + | |||
| + | aqualung -d equalplug | ||
| + | |||
| + | ===== Устройство по умолчанию (default) ===== | ||
| + | |||
| + | Не все программы позволяют пользователю указать в явном виде, какое аудиоустройство использовать. Вместо этого почти все они ищут в системе устройство по умолчанию (" | ||
| + | |||
| + | pcm.!default { | ||
| + | type plug | ||
| + | slave.pcm " | ||
| + | #slave.pcm " | ||
| + | } | ||
| + | |||
| + | ===== Результирующий файл ====== | ||
| + | |||
| + | <file txt .asoundrc> | ||
| + | pcm.noise_gate { | ||
| + | type plug | ||
| + | slave.pcm " | ||
| + | } | ||
| + | |||
| + | pcm.ladspa_noise_gate { | ||
| + | type ladspa | ||
| + | slave.pcm " | ||
| + | |||
| + | path "/ | ||
| + | plugins [{ | ||
| + | label hard_gate | ||
| + | input { | ||
| + | controls [ 0.1 ] | ||
| + | } | ||
| + | }] | ||
| + | } | ||
| + | |||
| + | pcm.dsnooper { | ||
| + | type dsnoop | ||
| + | ipc_key 234886 | ||
| + | ipc_perm 0660 | ||
| + | slave.pcm " | ||
| + | } | ||
| + | |||
| + | pcm.dmixer { | ||
| + | type dmix | ||
| + | ipc_key 234885 | ||
| + | slave { | ||
| + | pcm " | ||
| + | period_time 0 | ||
| + | buffer_time 0 | ||
| + | period_size 1024 | ||
| + | buffer_size 8192 | ||
| + | # rate 44100 | ||
| + | } | ||
| + | # | ||
| + | # 0 0 | ||
| + | # 1 1 | ||
| + | # } | ||
| + | } | ||
| + | |||
| + | pcm.duplexasym { | ||
| + | type asym | ||
| + | | ||
| + | | ||
| + | } | ||
| + | |||
| + | pcm.duplex { # plug and play on all speakers | ||
| + | type plug | ||
| + | | ||
| + | } | ||
| + | |||
| + | pcm.!default { | ||
| + | type plug | ||
| + | slave.pcm " | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | <file txt .asoundrc> | ||
| + | pcm.amp3db { | ||
| + | type plug | ||
| + | slave.pcm " | ||
| + | } | ||
| + | |||
| + | pcm.ladspa_amp3db { | ||
| + | type ladspa | ||
| + | #slave.pcm " | ||
| + | slave.pcm " | ||
| + | #slave.pcm " | ||
| + | #slave.pcm " | ||
| + | path "/ | ||
| + | plugins [{ | ||
| + | label amp_stereo | ||
| + | input { | ||
| + | # gain, dB | ||
| + | controls [3.0] | ||
| + | } | ||
| + | }] | ||
| + | } | ||
| + | |||
| + | |||
| + | pcm.amp6db { | ||
| + | type plug | ||
| + | slave.pcm " | ||
| + | } | ||
| + | |||
| + | pcm.ladspa_amp6db { | ||
| + | type ladspa | ||
| + | #slave.pcm " | ||
| + | slave.pcm " | ||
| + | #slave.pcm " | ||
| + | #slave.pcm " | ||
| + | path "/ | ||
| + | plugins [{ | ||
| + | label amp_stereo | ||
| + | input { | ||
| + | # gain, dB | ||
| + | controls [6.0] | ||
| + | } | ||
| + | }] | ||
| + | } | ||
| + | |||
| + | pcm.amp9db { | ||
| + | type plug | ||
| + | slave.pcm " | ||
| + | } | ||
| + | |||
| + | pcm.ladspa_amp9db { | ||
| + | type ladspa | ||
| + | #slave.pcm " | ||
| + | slave.pcm " | ||
| + | #slave.pcm " | ||
| + | #slave.pcm " | ||
| + | path "/ | ||
| + | plugins [{ | ||
| + | label amp_stereo | ||
| + | input { | ||
| + | # gain, dB | ||
| + | controls [9.0] | ||
| + | } | ||
| + | }] | ||
| + | } | ||
| + | |||
| + | |||
| + | pcm.amp12db { | ||
| + | type plug | ||
| + | slave.pcm " | ||
| + | } | ||
| + | |||
| + | pcm.ladspa_amp12db { | ||
| + | type ladspa | ||
| + | #slave.pcm " | ||
| + | slave.pcm " | ||
| + | #slave.pcm " | ||
| + | #slave.pcm " | ||
| + | path "/ | ||
| + | plugins [{ | ||
| + | label amp_stereo | ||
| + | input { | ||
| + | # gain, dB | ||
| + | controls [12.0] | ||
| + | } | ||
| + | }] | ||
| + | } | ||
| + | |||
| + | pcm.amp15db { | ||
| + | type plug | ||
| + | slave.pcm " | ||
| + | } | ||
| + | |||
| + | pcm.ladspa_amp15db { | ||
| + | type ladspa | ||
| + | #slave.pcm " | ||
| + | slave.pcm " | ||
| + | #slave.pcm " | ||
| + | #slave.pcm " | ||
| + | path "/ | ||
| + | plugins [{ | ||
| + | label amp_stereo | ||
| + | input { | ||
| + | # gain, dB | ||
| + | controls [15.0] | ||
| + | } | ||
| + | }] | ||
| + | } | ||
| + | |||
| + | |||
| + | |||
| + | pcm.!default{ | ||
| + | type plug | ||
| + | slave.pcm " | ||
| + | } | ||
| + | |||
| + | pcm.duplex { | ||
| + | type asym | ||
| + | playback.pcm " | ||
| + | capture.pcm " | ||
| + | } | ||
| + | |||
| + | |||
| + | # | ||
| + | # type hw | ||
| + | # card 0 | ||
| + | #} | ||
| + | |||
| + | pcm.dmixplug { | ||
| + | type plug | ||
| + | slave.pcm " | ||
| + | } | ||
| + | |||
| + | pcm.dmixer { | ||
| + | type dmix | ||
| + | ipc_key 1024 | ||
| + | slave { | ||
| + | pcm " | ||
| + | period_time 0 | ||
| + | period_size 1024 | ||
| + | buffer_size 8192 | ||
| + | #periods 128 | ||
| + | rate 44100 | ||
| + | } | ||
| + | | ||
| + | 0 0 | ||
| + | 1 1 | ||
| + | } | ||
| + | } | ||
| + | |||
| + | ctl.dmixer { | ||
| + | type hw | ||
| + | card 0 | ||
| + | } | ||
| + | |||
| + | pcm.mixin { | ||
| + | type dsnoop | ||
| + | ipc_key 5978293 # must be unique for all dmix plugins!!!! | ||
| + | ipc_key_add_uid yes | ||
| + | slave { | ||
| + | pcm " | ||
| + | channels 2 | ||
| + | period_size 1024 | ||
| + | buffer_size 4096 | ||
| + | rate 44100 | ||
| + | periods 0 | ||
| + | period_time 0 | ||
| + | } | ||
| + | bindings { | ||
| + | 0 0 | ||
| + | 0 1 | ||
| + | } | ||
| + | } | ||
| + | |||
| + | |||
| + | # playback PCM device: using loopback subdevice 0,0 | ||
| + | pcm.amix { | ||
| + | type dmix | ||
| + | ipc_key 219345 | ||
| + | slave.pcm " | ||
| + | } | ||
| + | | ||
| + | # capture PCM device: using loopback subdevice 0,1 | ||
| + | pcm.asnoop { | ||
| + | type dsnoop | ||
| + | ipc_key 219346 | ||
| + | slave.pcm " | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ====== Тест возможностей звуковой карты ====== | ||
| + | |||
| + | arecord -c 2 -f FLOAT_LE -r 192000 test.wav | ||
| + | |||
| + | pcm.hard { | ||
| + | type plug | ||
| + | slave { | ||
| + | pcm " | ||
| + | } | ||
| + | } | ||
| + | |||
| + | aplay -Dhard test.wav | ||
| + | |||
| + | mplayer -ao alsa: | ||
