Звуковое устройство по умолчанию (как настроить?)

Спасибо, Natrio, всегда люблю ваши полные, развёрнутые ответы. По поводу звукоюзеров вы сильно правы (недавно ещё раз довелось пообщаться), раз заплатив за лицензию - пользователь не замечает, что за система и что в ней; он разбирается сугубо в узкоспециализированной программе, - работает и ладно, зачем что-то менять? Тем более, как выяснилось, на рабочей машине кроме рабочего набора программ ничего более нет, так же, как нет смысла менять в ней что-то, поэтому машина до сих пор жива без переустановок и прочих радостей уже порядком 6 лет. По словам пользователя он будет оставаться на прежней рабочей конфигурации пока железо не исчерпает себя, а там... "там видно будет, откуда ветер дует", ага :-)
/offtop
root@vpupkin# cat /dev/ass > /dev/head
Natrio
akorop, то, о чём вы говорите – уже вторичная настройка "логических" устройств ALSA, которая НЕ действует на "физические".

А вот тот метод, что я описал – назначает порядок именно "физических" устройств, и потому действует на всех уровнях,
Э... а что это за уровни такие, реально? С моей юзерской позиции все уровни, расположенные ниже ALSA, как бы и не существуют. В смысле, мне про них знать не надо. Вообще, мне кажется правильным все настройки делать на самом высоком уровне, на котором их сделать можно. А глубже без необходимости не лазить.
Natrio
akorop
так что этот метод как раз ДОСТАТОЧНЫЙ, в отличии от вашего. Если "физические" устройства настроены правильно, менять порядок "логических" уже не требуется.
Единственный случай, для которого этого НЕ достаточно – это назначение порядка для устройств, использующих один и тот же модуль. В таком случае в опциях модулей надо ещё добавлять ID каждой карточки, чтобы они не путались.
Так у меня ж именно этот случай и был - какой-то интегрированный realtek с аналоговым каналом (обычный jack) и цифровым каналом (SPDIF), оба - snd_hda_intel. Собственно, оно практически на любой нынешней мамке так, но на той почему-то при установке системы первым встал цифровой звук, а не аналоговый, как обычно.
(Вообще, меня поражает, почему ни один установщик линукса не спрашивает, какое звуковое и какое видеоустройство сделать основным. В результате в установленной системе нередко получается не только тишина, но и чёрный экран.)
akorop
Э... а что это за уровни такие, реально? С моей юзерской позиции все уровни, расположенные ниже ALSA, как бы и не существуют.
Видите ли, используемым вами программам глубоко безразлична ваша позиция, и они могут использовать ЛЮБОЙ из доступных им уровней, незнание которых никак не поможет вам в настройке.

Есть устройства ALSA уровня ядра, обычно обозначаются hw:0, hw:1 и т.д. – они отличаются высоким быстродействием (минимальными задержками), их порядок зависит только от описанных мною опций загрузки модулей, и не меняется никаким другим способом.

Есть устройства эмуляции OSS, тоже на уровне ядра, выглядят как /dev/dsp* – их порядок тот же, что и у основных hw устройств ALSA.

И есть устройства уровня alsa-lib, "логические". Их первичный порядок так же соответствует hw устройствам, но может быть переопределён через конфиги asoundrc. Называются обычно словами вида default, front, rear и т.д..

Некоторые программы умеют работать только с устройствами alsa-lib, некоторые только с hw ALSA, некоторые только с OSS, некоторые работают с разными устройствами, в зависимости от настроек.

А некоторые вообще не имеют настроек звука, и работают всегда только с первым устройством из списка, и вовсе не обязательно это будет устройство default из alsa-lib.

Что касается инсталляторов – вопрос не ко мне. Я их не пишу и не пользуюсь ими. Спросите лучше Нафаню, он как раз делает почти графический установщик для Арч :)
Вообще, меня поражает, почему ни один установщик линукса не спрашивает, какое звуковое и какое видеоустройство сделать основным.

Спросите лучше Нафаню, он как раз делает почти графический установщик для Арч :)
отвечаю: мой установщик спрашивает какой саунд сделать главным ;), а как настроить главную видюху или выход я и сам не знаю, встречал в инете рецепты, но они какие-то слишком шаманские ))), а то бы уже давно сделал!

Natrio, дело говорит, самый простой способ прописать в /etc/modprobe.d/alsa-base.conf
если у кого проблемы с несколькими саундами можете попробовать такой скрипт. он сгенерирует заготовку конфига.
#!/bin/sh
get_sounds()
{
	local CARD
	local CARD_ID
	local MODULE
	[[ ! -e /proc/asound/cards ]] && return 1
	for CARD in $(awk '$1 ~ /^[0-9]{1,2}/{print $1}' /proc/asound/cards)
	do
		MODULE="$(awk '$1 ~ /^'${CARD}'/{print $2}' /proc/asound/modules)"
		CARD_ID="$(cat /proc/asound/card${CARD}/id)"
		echo "${CARD},${CARD_ID},${MODULE}"
	done
}
get_sounds \
	| while read CARDS
	do
		eval "$(awk -F ',' '{print "CARD="$1"; CARD_ID="$2"; MODULE="$3";"}' <<< "${CARDS}")"
		echo ''
		echo "## -- ${MODULE} --"
		echo "alias snd-card-${CARD} ${MODULE}"
		echo "alias snd-slot-${CARD} ${MODULE}"
		echo "options ${MODULE} index=${CARD} id=${CARD_ID}"
	done
что то на подобии этого
## -- snd_hda_intel --
alias snd-card-0 snd_hda_intel
alias snd-slot-0 snd_hda_intel
options snd_hda_intel index=0 id=NVidia
## -- snd_bt87x --
alias snd-card-1 snd_bt87x
alias snd-slot-1 snd_bt87x
options snd_bt87x index=1 id=Bt878
## -- snd_es1938 --
alias snd-card-2 snd_es1938
alias snd-slot-2 snd_es1938
options snd_es1938 index=2 id=ES1938Solo1

и все что останется сделать это изменить циферки, например нужно сделать последнюю карту главной, меняем
## -- snd_es1938 --
alias snd-card-0 snd_es1938
alias snd-slot-0 snd_es1938
options snd_es1938 index=0 id=ES1938Solo1

## -- snd_hda_intel --
alias snd-card-2 snd_hda_intel
alias snd-slot-2 snd_hda_intel
options snd_hda_intel index=2 id=NVidia

должно работать, при условии что никакие другие настройки алсы не изменялись!!!

НУЖЕН ТЕСТ, КОГДА ДВЕ КАРТЫ С ОДИНАКОВЫМИ МОДУЛЯМИ!!!
Псевдографический инсталлятор Arch Linux ver. 3.8.2
Благодарности принимаются на ЯД 410012815723874
nafanja, есть тест, мой случай:
bob@arch:~/.bin$ get-sounds
## -- snd_hda_intel --
alias snd-card-0 snd_hda_intel
alias snd-slot-0 snd_hda_intel
options snd_hda_intel index=0 id=Intel
## -- snd_hda_intel --
alias snd-card-1 snd_hda_intel
alias snd-slot-1 snd_hda_intel
options snd_hda_intel index=1 id=NVidia
## -- saa7134_alsa --
alias snd-card-2 saa7134_alsa
alias snd-slot-2 saa7134_alsa
options saa7134_alsa index=2 id=SAA7134

PS.
cat /etc/modprobe.d/alsa-base.conf
options snd_hda_intel index=0,1 id=Intel,NVidia
nafanja
Вообще, меня поражает, почему ни один установщик линукса не спрашивает, какое звуковое и какое видеоустройство сделать основным.

Спросите лучше Нафаню, он как раз делает почти графический установщик для Арч :)
отвечаю: мой установщик спрашивает какой саунд сделать главным ;), а как настроить главную видюху или выход я и сам не знаю, встречал в инете рецепты, но они какие-то слишком шаманские ))), а то бы уже давно сделал!
У меня эта проблем реально есть: к VGA-выходу подключён монитор (с ним и надо работать), а к HDMI-выходу - телевизор в другой комнате (на него надо кино пускать иногда). Если при загрузке системы телевизор физически включён, то в зависимости от версии ядра или иксов наблюдаются разнообразные глюки. Например, монитору устанавливается суммарный размер двух экранов . В результате - чёрный экран, по которому бегает "Out of sync". Драйвер radeon.

Я эту проблему решаю при помощи лома: в скрипт autostart openbox вставил следующее:
xrandr --newmode "1280x1024"  135.00  1280 1296 1440 1688  1024 1025 1028 1066 +hsync +vsync
xrandr --addmode VGA-0 1280x1024
xrandr --output VGA-0 --mode 1280x1024
xrandr --output HDMI-0 --off
xrandr -s 1280x1024
Работает независимо от того, что накрутили в очередной версии автоинициализации иксов.
Как это сделать в общем случае - не знаю.
nafanja
НУЖЕН ТЕСТ, КОГДА ДВЕ КАРТЫ С ОДИНАКОВЫМИ МОДУЛЯМИ!!!
У меня выход get_sounds такой:
0,SB,snd_hda_intel
1,HDMI,snd_hda_intel
Потенциальная проблема в том, что карта SB на самом деле содержит не один, а ДВА выхода - аналоговый и цифровой:
ak@s2 ~ % aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: SB [HDA ATI SB], device 0: ALC889 Analog [ALC889 Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: SB [HDA ATI SB], device 1: ALC889 Digital [ALC889 Digital]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: HDMI [HDA ATI HDMI], device 3: HDMI 0 [HDMI 0]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
На нынешней мамке умолчательным становится аналоговый выход, что мне и нужно, а на предыдущей становился цифровой. И то же самое я видел (и чинил через конфиг алсы) у одного знакомого на ноутбуке с Убунту.
Так вот, мне кажется, что изменение порядка карт никак эту проблему решить не поможет.
Выходы ОДНОЙ звуковой карты местами не меняются. Они имеют жестко закреплённые номера, и изменить их порядок скорей всего не выйдет, если только звуковая карта (или её драйвер) не предоставляет специальных переключателей в микшере для коммутации выходов.

Переназначение логических устройств в alsa-lib поможет, но только для программ, использующих alsa-lib.
bobart, для чистоты эксперимента нужно временно удалить свой конфиг, перезагрузиться, что бы система сама расставила все как она может, а уж потом запустить скрипт, сгенерить конфиг и расставить циферки как нужно.
система считает главным саундом тот который самый первый с индексом "0" если нигде дальше не было переназначения например по id.

akorop, вообще то, по умолчанию у тебя и на старой мамке должен был первым становиться аналог (наоборот даже не логично). я не встречал случаев когда это было на оборот на чистой системе и без иксов.
Псевдографический инсталлятор Arch Linux ver. 3.8.2
Благодарности принимаются на ЯД 410012815723874
А почему никто не предложил простой способ с ~/.asoundrc?
defaults.ctl.card 1
defaults.pcm.card 1
Цифирку подставляете нужную из вывода
cat /proc/asound/cards
У меня две звуковухи (встроенная Intel и USB колонки Logitech) - на комбинацию кнопок повесил скрипт, который в цикле их переключает, записывая в .asoundrc нужную цифру. И не парюсь в каком порядке их ядро проинициализировало при загрузке. В проигрывателях настроен звук на default pcm device (или что-то аналогичное) - поэтому звук идет на то устройство, которое "default" в .asoundrc.
Единственный минус - при переключении звуковух надо перезапускать проигрыватель, так как альса не умеет перебрасывать звуковые потоки для уже запущенных приложений (как это может делать пульсаудио).
И да, я знаю что .asoundrc вроде как давно deprecated, но меня это не сильно волнует, пока всё работает.

ЗЫ. давно меня здесь не было.
 
Зарегистрироваться или войдите чтобы оставить сообщение.