Как сохранить настройки громкости для цифрового выхода (S/PDIF)?
В Sound Settings
Я могу выбирать между аналоговым и цифровым выходом. Когда я выбираю "Цифровой выход (S/PDIF)", мне приходится уменьшать громкость каждый раз после загрузки. Что я могу сделать для автоматического сохранения этих настроек (при выключении)?
Это настройки, когда я выключаюсь:
И это выглядит так после загрузки:
Что автоматически сохраняется, так это то, выбрал ли я аналоговый или цифровой выход, а также настройки громкости аналогового выхода.
Карта и чип, Настройки
Я не использую дополнительную звуковую карту; У меня есть плата ASRock M3N78D и lshw
печатает следующее:
*-multimedia
Beschreibung: Audio device
Produkt: MCP72XE/MCP72P/MCP78U/MCP78S High Definition Audio
Hersteller: NVIDIA Corporation
Physische ID: 7
Bus-Informationen: pci@0000:00:07.0
Version: a1
Breite: 32 bits
Uhr: 66MHz
Fähigkeiten: pm bus_master cap_list
Konfiguration: driver=snd_hda_intel latency=0 maxlatency=5 mingnt=2
Ressourcen: irq:21 memory:fbd78000-fbd7bfff
начало alsamixer
показывает мне "Чип: VIA VT1718S".
Это выход из aplay -l
:
**** Liste der Hardware-Geräte (PLAYBACK) ****
Karte 0: NVidia [HDA NVidia], Gerät 0: VT1718S Analog [VT1718S Analog]
Sub-Geräte: 1/1
Sub-Gerät #0: subdevice #0
Karte 0: NVidia [HDA NVidia], Gerät 1: VT1718S Digital [VT1718S Digital]
Sub-Geräte: 0/1
Sub-Gerät #0: subdevice #0
Karte 0: NVidia [HDA NVidia], Gerät 2: VT1718S HP [VT1718S HP]
Sub-Geräte: 1/1
Sub-Gerät #0: subdevice #0
Это вывод из pactl stat
:
Server-Name: pulseaudio
Server-Version: 1.1
Standard-Sample-Angabe: s16le 2ch 44100Hz
Standard-Kanalzuordnung: front-left,front-right
Standard-Sink: alsa_output.pci-0000_00_07.0.iec958-stereo
Standard-Quelle: alsa_input.pci-0000_00_07.0.analog-stereo
Это выход из amixer
:
Simple mixer control 'Master',0
Capabilities: pvolume pvolume-joined pswitch pswitch-joined penum
Playback channels: Mono
Limits: Playback 0 - 42
Mono: Playback 0 [0%] [-63.00dB] [on]
Simple mixer control 'Headphone',0
Capabilities: pvolume pswitch penum
Playback channels: Front Left - Front Right
Limits: Playback 0 - 42
Mono:
Front Left: Playback 42 [100%] [0.00dB] [on]
Front Right: Playback 42 [100%] [0.00dB] [on]
Simple mixer control 'PCM',0
Capabilities: pvolume penum
Playback channels: Front Left - Front Right
Limits: Playback 0 - 255
Mono:
Front Left: Playback 253 [99%] [0.40dB]
Front Right: Playback 253 [99%] [0.40dB]
Simple mixer control 'PCM Loopback',0
Capabilities: pvolume pswitch penum
Playback channels: Front Left - Front Right
Limits: Playback 0 - 31
Mono:
Front Left: Playback 24 [77%] [1.50dB] [off]
Front Right: Playback 24 [77%] [1.50dB] [off]
Simple mixer control 'Front',0
Capabilities: pvolume pswitch penum
Playback channels: Front Left - Front Right
Limits: Playback 0 - 42
Mono:
Front Left: Playback 39 [93%] [-4.50dB] [on]
Front Right: Playback 39 [93%] [-4.50dB] [on]
Simple mixer control 'Front Mic',0
Capabilities: pvolume pswitch penum
Playback channels: Front Left - Front Right
Limits: Playback 0 - 31
Mono:
Front Left: Playback 31 [100%] [12.00dB] [off]
Front Right: Playback 31 [100%] [12.00dB] [off]
Simple mixer control 'Front Mic Boost',0
Capabilities: volume penum
Playback channels: Front Left - Front Right
Capture channels: Front Left - Front Right
Limits: 0 - 3
Front Left: 3 [100%] [30.75dB]
Front Right: 3 [100%] [30.75dB]
Simple mixer control 'Surround',0
Capabilities: pvolume pswitch penum
Playback channels: Front Left - Front Right
Limits: Playback 0 - 42
Mono:
Front Left: Playback 42 [100%] [0.00dB] [on]
Front Right: Playback 42 [100%] [0.00dB] [on]
Simple mixer control 'Center',0
Capabilities: pvolume pvolume-joined pswitch pswitch-joined penum
Playback channels: Mono
Limits: Playback 0 - 42
Mono: Playback 42 [100%] [0.00dB] [on]
Simple mixer control 'LFE',0
Capabilities: pvolume pvolume-joined pswitch pswitch-joined penum
Playback channels: Mono
Limits: Playback 0 - 42
Mono: Playback 42 [100%] [0.00dB] [on]
Simple mixer control 'Side',0
Capabilities: pvolume pswitch penum
Playback channels: Front Left - Front Right
Limits: Playback 0 - 42
Mono:
Front Left: Playback 42 [100%] [0.00dB] [on]
Front Right: Playback 42 [100%] [0.00dB] [on]
Simple mixer control 'Line',0
Capabilities: pvolume pswitch penum
Playback channels: Front Left - Front Right
Limits: Playback 0 - 31
Mono:
Front Left: Playback 0 [0%] [-34.50dB] [off]
Front Right: Playback 0 [0%] [-34.50dB] [off]
Simple mixer control 'CD',0
Capabilities: pvolume pswitch penum
Playback channels: Front Left - Front Right
Limits: Playback 0 - 31
Mono:
Front Left: Playback 0 [0%] [-34.50dB] [off]
Front Right: Playback 0 [0%] [-34.50dB] [off]
Simple mixer control 'IEC958',0
Capabilities: pswitch pswitch-joined penum
Playback channels: Mono
Mono: Playback [on]
Simple mixer control 'IEC958 Default PCM',0
Capabilities: pswitch pswitch-joined penum
Playback channels: Mono
Mono: Playback [on]
Simple mixer control 'Capture',0
Capabilities: cvolume cswitch penum
Capture channels: Front Left - Front Right
Limits: Capture 0 - 31
Front Left: Capture 28 [90%] [25.50dB] [on]
Front Right: Capture 28 [90%] [25.50dB] [on]
Simple mixer control 'Capture',1
Capabilities: cvolume cswitch penum
Capture channels: Front Left - Front Right
Limits: Capture 0 - 31
Front Left: Capture 0 [0%] [-16.50dB] [on]
Front Right: Capture 0 [0%] [-16.50dB] [on]
Simple mixer control 'Digital',0
Capabilities: cvolume penum
Capture channels: Front Left - Front Right
Limits: Capture 0 - 120
Front Left: Capture 60 [50%] [0.00dB]
Front Right: Capture 60 [50%] [0.00dB]
Simple mixer control 'Dynamic Power-Control',0
Capabilities: enum
Items: 'Disabled' 'Enabled'
Item0: 'Disabled'
Simple mixer control 'Independent HP',0
Capabilities: enum
Items: 'OFF' 'ON'
Item0: 'OFF'
Simple mixer control 'Input Source',0
Capabilities: cenum
Items: 'Front Mic' 'Rear Mic' 'Line' 'CD' 'Stereo Mixer'
Item0: 'Front Mic'
Simple mixer control 'Input Source',1
Capabilities: cenum
Items: 'Front Mic' 'Rear Mic' 'Line' 'CD' 'Stereo Mixer'
Item0: 'Stereo Mixer'
Simple mixer control 'Loopback Mixing',0
Capabilities: enum
Items: 'Disabled' 'Enabled'
Item0: 'Disabled'
Simple mixer control 'Rear Mic',0
Capabilities: pvolume pswitch penum
Playback channels: Front Left - Front Right
Limits: Playback 0 - 31
Mono:
Front Left: Playback 31 [100%] [12.00dB] [off]
Front Right: Playback 31 [100%] [12.00dB] [off]
Simple mixer control 'Rear Mic Boost',0
Capabilities: volume penum
Playback channels: Front Left - Front Right
Capture channels: Front Left - Front Right
Limits: 0 - 3
Front Left: 0 [0%] [0.00dB]
Front Right: 0 [0%] [0.00dB]
Странности
Когда я переключаюсь на "Аналоговый выход" во время прослушивания музыки, колонки, подключенные к цифровому выходу, тоже можно использовать, но тогда громкость на 100%, и я не могу отрегулировать ее - только когда я снова переключаюсь на "Цифровой". Вывод "или если я использую alsamixer
и тусклый "PCM".
Когда я выбираю "Цифровой выход" в настройках аудио и запускаю alsamixer
Изменение громкости Master не оказывает никакого влияния. "S / PDIF" и "S / PDIF D" также показаны там, но оба установлены на "00", и я не могу их изменить...
Когда я регулирую громкость до нормального уровня (то есть 40%) и запускаю sudo alsactl store
и перезагрузите, значок громкости на панели не показывает 100%, но звук идет со 100% - пока я не прокручиваю вниз над значком: затем он сразу скачет до 39%.
5 ответов
У меня такая же проблема. Аналог сохраняется / восстанавливается, но после запуска SPDIF всегда работает на полную мощность. Мне не особенно нравится обходной путь установки громкости на ноль или на низком уровне при входе в систему, так как меня больше всего раздражает звук запуска на экране входа в систему, который выбивает мои окна. Я не нашел решения, но все стало лучше. Вот что я сделал:
- Я подумал, что, возможно, проблема в том, что аналоговым выходом является устройство 0 карты 0, а цифровым - устройство 1 (карты 0). (Чип XiFi или что-то) и процедура сохранения / восстановления сохраняет только первый. Однако alsactl store/restore (re) сохраняет состояние "Complete" со всеми уровнями громкости.
- Я пришел к выводу, что alsa не сохраняет / восстанавливает состояние вывода spdif (карта:0, устройство:1), так как "alsactl store" / "... restore" не влияет на канал spdif. Он остается там, где его.
- запуск alsactl store после выбора SPDIF на панели управления звуком дает мне другой файл /var/lib/alsa/asouns.state. Не уверен, к чему это приводит, но, возможно, alsa видит разные регуляторы громкости в зависимости от того, какой выход выбран на панели управления?
- Магазин alsactl -f /var/lib/alsa/asound.state, кажется, работает (дает мне новый asouns.state)
- Восстановление alsactl -f /var/lib/alsa/asound.state дает мне: "alsactl: set_control:1464: невозможно записать элемент управления" 2:0:0: воспроизведение по умолчанию IEC958:0': операция не разрешена "
- Я понял, что IEC958 - это действительно цифровой выход.
- Остановился мой музыкальный проигрыватель: ошибка исчезла
- установлен pavucontrol, выбран выход по умолчанию
- удалено /var/lib/alsa/asound.state
- перезагружать
- ползунок громкости теперь восстанавливается при перезагрузке, реальная громкость не кажется
Может быть, это кому-то поможет.. хотя бы удалите asound.state и посмотрите, поможет ли это.
Я не знаю ни одного способа сделать это "должным образом", но вы можете добавить сценарий запуска, чтобы сделать эту работу. Используя программу "amixer", я могу произвести вывод, в котором перечислены настройки звуковых выходов от 0 до 64, включая канал "Master". Непосредственно перед выключением это можно проанализировать (возможно, с помощью регулярных выражений?), Чтобы сохранить том в файле. Когда система загружается снова, можно выполнить команду "amixer set CHANNEL VALUE", чтобы установить громкость на сохраненное значение.
Добавив это в сценарий оболочки (обычно это стартовое задание в /etc/init.d), вы можете сделать это автоматически, что должно сделать его бесшовным. Я использовал эти сценарии запуска раньше, чтобы делать другие вещи, и я не вижу никакой причины, почему это не могло решить и вашу проблему.
Подробности:
Первым шагом будет создание сценария оболочки, способного изменять громкость. В настоящее время у меня нет ни времени, ни всех подробных знаний, чтобы написать это для вас, но если вы немного разбираетесь в скриптах или можете найти хороший учебник, это не должно быть так сложно. Я буду рад помочь, если у вас возникнут проблемы. Ниже приведен шаблон, который вы можете использовать.
#! /bin/sh
start(){
# This function is called on startup
# This is where you will need to read the volume from a file and call amixer
}
stop(){
# This function is called on shutdown
# This is where amixer is called and the volume is saved to file
}
case "$1" in
start)
start
;;
stop)
stop
;;
*)
echo "Usage: avolumesaver {start|stop}"
exit 1
esac
exit 0
В основном, функция запуска вызывается при каждом запуске системы, а функция остановки вызывается перед выключением. Вы можете делать все, что вам нужно внутри этих функций. Вы должны открыть редактор как root ("sudo gedit" в терминале), а затем сохранить файл как "/etc/init.d/avolumesaver". После этого вам нужно будет выполнить следующие команды:
chmod a+x /etc/init.d/avolumesaver
update-rc.d avolumesaver defaults
Первая строка сделает скрипт исполняемым. Вторая строка превращает его в выскочку работы. Технически это просто означает, что созданы некоторые символические ссылки, но это хорошая идея использовать update-rc.d, а не пытаться добавлять ссылки самостоятельно.
После этого вы можете редактировать /etc/init.d/avolumesaver, пока не добьетесь того, чего хотите. Вы можете протестировать функциональность без фактической перезагрузки, выполнив следующую команду (после того, как сделаете это выскочкой):
service avolumesaver start
service avolumesaver stop
Я задал похожий вопрос здесь. Может быть, это может помочь.
Он устанавливает уровень громкости для определенного значения после каждого входа в систему. Работает с PulseAudio и цифровым выходом.
Скопируйте файл конфигурации импульсов по умолчанию в ваше домашнее местоположение:
cp /etc/pulse/default.pa ~/.pulse
В вашем конфигурационном файле найдите следующую строку:
load-module module-always-sink
Сразу после вышеуказанной строки добавьте следующую строку:
set-sink-volume 0 {your-volume-level-here}
Уровень громкости - это число в диапазоне 0..65535. Например:
set-sink-volume 0 32768
Я надеюсь, что это поможет кому-то. У меня всегда была эта проблема, и я просто исправил ее в Ubuntu 13:10 (Pear Os 8). Внутри файла /etc/pulse/default.pa есть строка для выбора alsa sink. Это ключ для меня. Это то, что мне пришлось изменить, чтобы сохранить объемы...
### Load audio drivers statically
### (it's probably better to not load these drivers manually, but instead
### use module-udev-detect -- see below -- for doing this automatically)
load-module module-alsa-sink
load-module module-alsa-sink device=hw:0,1
#load-module module-oss device="/dev/dsp" sink_name=output source_name=input
#load-module module-oss-mmap device="/dev/dsp" sink_name=output source_name=input
#load-module module-null-sink
#load-module module-pipe-sink
Теперь в строке load-module module-alsa-sink device=hw:0,1 вам, возможно, придется изменить местоположение вашего PCM с помощью примеров aplay -l здесь https://wiki.archlinux.org/index.php/PulseAudio/Examples
ваши номера будут hw:X(номер карты),X(номер устройства)
Я надеюсь, что другие прочитают это и получат свое звучание, так как это годами было для меня огромной болью.
Попробуйте закомментировать следующие строки в /etc/pulse/default.pa
:
load-module module-device-restore
load-module module-stream-restore
load-module module-card-restore