настройка dmix
Наверное, у многих людей в своё время была такая проблема: звук проигрывался только одним приложением. Например, при прослушивании музыки не было звуков в ppracer или не было звука от jabber клиента при приходящем сообщении. Происходит это по той причине, что звуковая карта не поддерживает аппаратное микширование (например, до покупки ноутбука я об этой проблеме и не догадывался, оказывается, встроенная карточка на Asus A8N имеет аппаратное микширование).
В настоящее время практически все используют ALSA, а для софтверного микширования - dmix. О них и пойдёт речь. С настройкой звука, наверное, довольно легко разобраться, так что предположим, что звук уже работает, но только с одним приложением одновременно. Надо поставить пакет alsa-oss (по крайней мере так он называется в ArchLinux) и настроить несколько конфигурационных файлов.
/etc/asound.conf:
pcm.ossmix {
type dmix
ipc_key 1024 # must be unique!
ipc_key_add_uid false # let multiple users share
ipc_perm 0666 # IPC permissions for multi-user sharing (octal, default 0600)
slave {
pcm “hw:0,0″ # you cannot use a “plug” device here, darn.
period_time 0
period_size 2048 # must be power of 2
buffer_size 32768 # dito. It
#rate 44100
#format “S32_LE”
#periods 128 # dito.
#rate 8000 # with rate 8000 you *will* hear,
# if ossmix is used :)
}
# bindings are cool. This says, that only the first
# two channels are to be used by dmix, which is
# enough for (most) oss apps and also lets
# multichannel chios work much faster:
bindings {
0 0 # from 0 => to 0
1 1 # from 1 => to 1
}
}
pcm.dsp0 {
type plug
slave.pcm “ossmix” # use our new PCM here
}
# mixer0 like above
ctl.mixer0 {
type hw
card 0
}
# You may want to make your new ossmix the default for alsa.
# If your alsa programs are complaining that they can’t open
# your sound devices, try uncommenting this next line
pcm.default pcm.dsp0
/etc/libao.conf:
default_driver=alsa09 #может быть, alsa10, но у меня работает только с 09
Теперь два mpg321 могут использовать вывод одновременно, но некоторые приложения ещё нуждаются в дополнительной настройке. Некоторые из них я опишу:
mpd
мне потребовалось вписать в /etc/mpd.conf:
audio_output {
type “alsa”
name “My ALSA Device”
device “hw:0,0″ # потребовалось прямо указать device
# format “44100:16:2″ # optional
}
# и в секции микширования:
mixer_type “alsa”
mixer_device “dmix”
mixer_control “PCM”
приложения, использующие openal:
впишем в ~/.openalrc или в /etc/openalrc:
(define devices ‘(alsa))
(define speaker-num 2)
(define alsa-out-device “default”)
(define sampling-rate 44100)
Что касается большинства остальных приложений, достаточно просто указать в устройстве вывода ALSA. Также на сайте используемой программы обычно есть описание настройки софтверного микширования.
Говорят, что dmix понижает качество вывода звука. Поскольку в этом деле я невеликий специалист (да на ноутбуке качество звука при стандартных колонках тоже неважное), то сказать могу только то, что стало тише, но мне всё равно хватает =)
Полезные ссылки:
P.S. во второй ссылке описаны и другие способы микширования. По-хорошему, надо бы мне эту статью перевести (русскоязычное ArchWiki - в массы!), но пока нет времени.
Февраль 11, 2007 at 5:06 пп
Интересно и полезно - убунтовцы часто про это спрашивают. Спасибо!
Март 2, 2007 at 12:46 дп
Спасибо, работает :)
Март 6, 2007 at 2:25 дп
С этими настройками, если запустить проигрывание музыки, а затем запустить ioquake3, то ioquake3 одновременно пашет.
Если запустить ioquake3, а уже потом запусти проигрывание, то нет:
mpg321 foo.mp3
ALSA lib pcm_dmix.c:864:(snd_pcm_dmix_open) unable to open slave
No default libao driver available.
Март 6, 2007 at 7:35 дп
судя по ветке на LinuxQuestions.org, ioquake использует openal, то есть нужно настроить файл openalrc… У вас это исполнено?
Что-нибудь ещё, использующее openal работает? (например, последний supertux)