Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

ALSA: настройка уровней каналов сбразывается при проигрывании vlc/mplayer2

212 views
Skip to first unread message

Oleksandr Gavenko

unread,
Jan 8, 2016, 5:40:02 PM1/8/16
to
Моя встроеная звуковая карта имеет 6 разьемов.

Хотел звук разделить на 2 источника - усилитель и наушники. Усилитель иногда
выключен - альтернативно использовать наушники.

Можно мучится с Intel HDA чипами, настраивая DSP через:

$ sudo apt-get install alsa-tools-gui
$ hdajackretask

Я там нифига не понял.

Далее думал приобрести/спаять сплитер, но мне не ясно с безопасностью такого
решения.

К моему удивлению по умолчанию ALSA сконфигурирована работать в режиме стерео
и дублирует аудио сигнал по всем выходам.

Т.е. я воткнул усилитель в один разьем, наушники в другой.

Ране не понимая я подстроил уровень Master под принятный для усилителя.

В alsamixer можно независимо устанавливать уровень для каждого разьема.

Для наушников - было очень громко и я подбором определил нужный канал и
понизил уровень.

Замечаю что в наушниках все равно очень громко.

Я грешил на pulseaudio и выпилял его к чертям. Но проблема оказалось в другом.

При запуске vlc/mplayer - они сбрасывают уровни всех out каналов, оставляя
только Master нетронутым.

При работе проигрывателя настройки alsamixer применятся тут же и не
сбравываются. При изменении громкости в плеере - alsamixer отображает что
Master канал изменяет уровень соответственно.

И мне кажется что менять Master через плеер - также паганая практика.

Как можно запретить менять настройки индивидуальных каналов плеерам
(vlc/player2/браузерный HTML5)?

Можно сделать какой то софтверный/апаратный миксер - где бы мешалися звуковой
вывод программ?

pulseaudio как раз таким занимался, сохраняя настройки для каждого
"обознаного" приложения индивидуально. Но как я разбирался - он слишком
умничает, выставляя уровни каналов на все кроме Master в 100%.

На всяк случай:

$ lsmod | grep snd_

snd_usb_audio 180224 0
snd_usbmidi_lib 32768 1 snd_usb_audio
snd_hrtimer 16384 1
snd_seq_midi 16384 0
snd_seq_midi_event 16384 1 snd_seq_midi
snd_rawmidi 32768 2 snd_usbmidi_lib,snd_seq_midi
snd_seq 65536 3 snd_seq_midi_event,snd_seq_midi
snd_seq_device 16384 3 snd_seq,snd_rawmidi,snd_seq_midi
snd_hda_codec_via 20480 1
snd_hda_codec_generic 73728 1 snd_hda_codec_via
snd_hda_intel 36864 1
snd_hda_codec 131072 3 snd_hda_codec_via,snd_hda_codec_generic,snd_hda_intel
snd_hda_core 65536 4 snd_hda_codec_via,snd_hda_codec_generic,snd_hda_codec,snd_hda_intel
snd_hwdep 16384 2 snd_usb_audio,snd_hda_codec
snd_pcm_oss 49152 0
snd_mixer_oss 24576 1 snd_pcm_oss
snd_pcm 102400 5 snd_pcm_oss,snd_usb_audio,snd_hda_codec,snd_hda_intel,snd_hda_core
snd_timer 32768 3 snd_hrtimer,snd_pcm,snd_seq
snd 86016 17 snd_pcm_oss,snd_usb_audio,snd_hwdep,snd_timer,snd_hda_codec_via,snd_pcm,snd_seq,snd_rawmidi,snd_hda_codec_generic,snd_usbmidi_lib,snd_hda_codec,snd_hda_intel,snd_seq_device,snd_mixer_oss

$ lspci | grep -i Audio
00:1b.0 Audio device: Intel Corporation 5 Series/3400 Series Chipset High Definition Audio (rev 06)

================================================================

ЗЫ Порылся в

https://wiki.archlinux.org/index.php/Advanced_Linux_Sound_Architecture
man alsactl
man 7 alsactl_init
/usr/share/alsa

Яснее не стало, но заметил что при запуске преера - есть щелчек. Я попробовал
перезапускать alsamixer - при его запуске также имеется щелчек. Есть
предположение что пока нету источников звука и врдуг появляется - драйвера
через некий механизм заново инициализируют звуковую карту.

Сохнанить настройки уровней - нету такого в man alsamixer.

Кто нибудь знаком с настройкой ALSA? Всунуть бы желаемый уровень по
умолчанию...

--
http://defun.work/

Oleksandr Gavenko

unread,
Jan 8, 2016, 6:30:03 PM1/8/16
to
On 2016-01-09, Oleksandr Gavenko wrote:

> ЗЫ Порылся в
>
> https://wiki.archlinux.org/index.php/Advanced_Linux_Sound_Architecture
> man alsactl
> man 7 alsactl_init
> /usr/share/alsa
>
> Яснее не стало, но заметил что при запуске преера - есть щелчек. Я попробовал
> перезапускать alsamixer - при его запуске также имеется щелчек. Есть
> предположение что пока нету источников звука и врдуг появляется - драйвера
> через некий механизм заново инициализируют звуковую карту.
>
> Сохнанить настройки уровней - нету такого в man alsamixer.
>
> Кто нибудь знаком с настройкой ALSA? Всунуть бы желаемый уровень по
> умолчанию...

Рецепт из:

http://askubuntu.com/questions/50067/howto-save-alsamixer-settings

не срабатывает. Он заключается в запуске alsamixer, настройке в нем и пока не
закрыли, запуске:

$ sudo alsactl store

После этого соответствующие части файл /var/lib/alsa/asound.state - меняются.

Но даже после:

$ sudo alsactl store

новый запуск alsamixer/vlc/mplayer2 сбивает настройки уровня для

control.3 {
iface MIXER
name 'Surround Playback Volume'
...

Поискав по ключевой фразе: "Surround Playback Volume" в /usr/share/alsa/init/
обнаружил:

$ cat /usr/share/alsa/init/default

CTL{reset}="mixer"
CTL{name}="Surround Playback Volume",PROGRAM!="__ctl_search",GOTO=""
# if master volume control is present, turn front volume to max
ENV{has_pmaster_vol}=="true",CTL{write}=="0dB",GOTO=""
ENV{has_pmaster_vol}=="true",CTL{write}=="100%",GOTO=""
CTL{write}!="$env{pvolume}",CTL{values}="$env{ppercent}"
LABEL=""
CTL{name}="Surround Playback Switch",CTL{do_search}=="1", \
CTL{values}="on"

Нужно понять синтаксис и как внедрить свои настройки "Debian-way".


--
http://defun.work/

Oleksandr Gavenko

unread,
Jan 9, 2016, 8:10:02 PM1/9/16
to
Все же это ни при чем.

Виноватец - pulseaudio.

Я снес consolekit, а pulseaudio забыл. Без consolekit pulseaudio не
запускается:

[pulseaudio] module-console-kit.c: GetSessionsForUnixUser() call failed:
org.freedesktop.DBus.Error.ServiceUnknown: The name
org.freedesktop.ConsoleKit was not provided by any .service files

В процесах по htop не видел, думал что его нету.

Как обьяснить сброс настроек даже при запуске alsamixer (при условии наличия
pulseaudio)? Не представляю.

Пока есть клиент, который оправляет данные в ALSA - настройки не сбрасываются.

При старте нового клиента и когда нет было других - сбрасываются.

В /usr/share/alsa/alsa.conf.d/pulse.conf было:

hook_func.pulse_load_if_running {
lib "libasound_module_conf_pulse.so"
func "conf_pulse_hook_load_if_running"
}

Загруженый модуль может творить любые чудеса.

--
http://defun.work/
0 new messages