Автор Тема: Установка своих звуковых настроек (готовое решение)  (Прочитано 9117 раз)

Оффлайн mentalDepression

  • Или мы остались в прошлом "настройка вручную", или мы находимся в будущем "компьютер делает сам".
  • Давно тут
  • **
  • Сообщений: 26
У меня этот способ работает только для этих каналов микшера: Headphone, Line, CD, Mic, Phone, Beep, Aux.

Допустим мне нужно чтобы после загрузки компьютера, уровни микшера были такие:
• Линейный вход включен на 50%
• CD вход выключен
• Микрофон включен на 100%

1) Узнаём номер звуковой карты и названия каналов (Line, Mic...). В терминале выполняем команду "alsamixer", далее нажимаем F6. Вы увидите звуковые карты и их номер в системе, в моём случае основная карта под номером 0. Этот номер будет использоваться с командой "amixer -с". Названия каналов удобно смотреть в программе "Alsamixer-Qt4".
2) Добавляем строки в файл ".bash_profile" или ".xprofile" (исполняемый).
amixer -c0 set Line 50% unmute
amixer -c0 set CD 0% mute
amixer -c0 set Mic 100% unmute

Примечание
Ручной способ для всех возможных каналов: записываем команды в отдельный исполняемый файл, выводим ярлык на рабочий стол и нажимаем его после загрузки.

Система
• Альт Сервер 8.2 i586 (MATE)
• Multimedia audio controller: VIA Technologies, Inc. VT8233/A/8235/8237 AC97 Audio Controller (rev 60)
• Subsystem: Micro-Star International Co., Ltd. [MSI] Device 0430
• Kernel driver in use: snd_via82xx
« Последнее редактирование: 14.10.2018 22:09:33 от mentalDepression »
Или мы остались в прошлом "настройка вручную", или мы находимся в будущем "компьютер делает сам".

Оффлайн andrew_b

  • Давно тут
  • **
  • Сообщений: 453
2) Добавляем строки в файл ".bashrc"
~/.asoundrc не пробовали поизучать?

Оффлайн mentalDepression

  • Или мы остались в прошлом "настройка вручную", или мы находимся в будущем "компьютер делает сам".
  • Давно тут
  • **
  • Сообщений: 26
Поспешил. Да, если поставить в ".bashrc", команды будут выполняться при каждом запуске терминала. Позже отредактирую пост.
Или мы остались в прошлом "настройка вручную", или мы находимся в будущем "компьютер делает сам".

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 8 882
  • UNIX System V init
Поспешил. Да, если поставить в ".bashrc", команды будут выполняться при каждом запуске терминала. Позже отредактирую пост.

Для команд выше можете использовать исполняемый $HOME/.xprofile который выполняется на входе в X-сессию.
Если файл отсутствует, при создании его, не забудьте в него добавить шебанг:
$ head -n 1 $HOME/.xprofile
#!/bin/sh
ZX Spectrum 128K
Привет от NM:  # echo -e "\n[device]\nwifi.scan-rand-mac-address=no" >> /etc/NetworkManager/NetworkManager.conf

Оффлайн mentalDepression

  • Или мы остались в прошлом "настройка вручную", или мы находимся в будущем "компьютер делает сам".
  • Давно тут
  • **
  • Сообщений: 26
Цитировать
Цитата: andrew_b
~/.asoundrc не пробовали поизучать?
С файлом .asoundrc команды не сработали. Пока не до него, .bash_profile делает всё что мне нужно, спасибо.

Цитировать
Цитата: Speccyfighter
Для команд выше можете использовать исполняемый $HOME/.xprofile
Да, .xprofile тоже работает, спасибо.
Или мы остались в прошлом "настройка вручную", или мы находимся в будущем "компьютер делает сам".

mvk

  • Гость
Это хоть для какого дистрибутива? Ничего не пойму, зачем все это.

Оффлайн mentalDepression

  • Или мы остались в прошлом "настройка вручную", или мы находимся в будущем "компьютер делает сам".
  • Давно тут
  • **
  • Сообщений: 26
Это хоть для какого дистрибутива? Ничего не пойму, зачем все это.
Только что обновил пост, там написано.
Или мы остались в прошлом "настройка вручную", или мы находимся в будущем "компьютер делает сам".

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 8 882
  • UNIX System V init
Это хоть для какого дистрибутива?

Это для любого Линукс. Начиная от консольных медиастанций (например костиного live-sysv, - специально для него и писались youtube-dl-grabber и mplayer-vc) до кедогномов.

Ничего не пойму, зачем все это.

Чтобы восстанавливать состояние контролов на входе в сессию, а Линукс полноценно это не умеет. Значит ему нужно помочь.
Например этот микрофон на момент разгрузки был в on:
$ amixer sget 'Internal Mic'
Simple mixer control 'Internal Mic',0
  Capabilities: cvolume cvolume-joined cswitch cswitch-joined
  Capture channels: Mono
  Limits: Capture 0 - 80
  Mono: Capture 0 [0%] [-74.00dB] [off]
ZX Spectrum 128K
Привет от NM:  # echo -e "\n[device]\nwifi.scan-rand-mac-address=no" >> /etc/NetworkManager/NetworkManager.conf

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 8 882
  • UNIX System V init
amixer -c0 set Line 50% unmute
amixer -c0 set CD 0% mute
amixer -c0 set Mic 100% unmute

Это далеко не всё что вы можете.
Обратите внимание на все numid у которых values в значении 2 во второй строке после numid:
$ amixer -c0 contents
...
numid=2,iface=MIXER,name='Headphone Playback Switch'
  ; type=BOOLEAN,access=rw------,values=2
  : values=on,on
numid=1,iface=MIXER,name='Headphone Playback Volume'
  ; type=INTEGER,access=rw---R--,values=2,min=0,max=74,step=0
  : values=74,74
  | dBscale-min=-74.00dB,step=1.00dB,mute=0
numid=24,iface=MIXER,name='PCM Playback Volume'
  ; type=INTEGER,access=rw---RW-,values=2,min=0,max=255,step=0
  : values=255,255
  | dBscale-min=-51.00dB,step=0.20dB,mute=0
numid=13,iface=MIXER,name='Mic Boost Volume'
  ; type=INTEGER,access=rw---R--,values=2,min=0,max=3,step=0
  : values=0,0
  | dBscale-min=0.00dB,step=12.00dB,mute=0
numid=11,iface=MIXER,name='Mic Capture Switch'
  ; type=BOOLEAN,access=rw------,values=2
  : values=off,off
numid=10,iface=MIXER,name='Mic Capture Volume'
  ; type=INTEGER,access=rw---R--,values=2,min=0,max=80,step=0
  : values=0,0
  | dBscale-min=-74.00dB,step=1.00dB,mute=0
...
numid=12,iface=MIXER,name='Internal Mic Boost Volume'
  ; type=INTEGER,access=rw---R--,values=2,min=0,max=3,step=0
  : values=0,0
  | dBscale-min=0.00dB,step=12.00dB,mute=0
...
numid=4,iface=MIXER,name='Speaker Playback Switch'
  ; type=BOOLEAN,access=rw------,values=2
  : values=on,on
numid=3,iface=MIXER,name='Speaker Playback Volume'
  ; type=INTEGER,access=rw---R--,values=2,min=0,max=74,step=0
  : values=74,74
  | dBscale-min=-74.00dB,step=1.00dB,mute=0
numid=23,iface=PCM,name='Capture Channel Map'
  ; type=INTEGER,access=r----R--,values=2,min=0,max=36,step=0
  : values=0,0
  | container
    | chmap-fixed=FL,FR

numid=22,iface=PCM,name='Playback Channel Map'
  ; type=INTEGER,access=r----R--,values=2,min=0,max=36,step=0
  : values=0,0
  | container
    | chmap-fixed=FL,FR


Это означает что вы можете регулировать баланс, включать и выключать каналы.
Например регулировка уровней головных телефонов:
$ amixer -c0 cget numid=1
numid=1,iface=MIXER,name='Headphone Playback Volume'
  ; type=INTEGER,access=rw---R--,values=2,min=0,max=74,step=0
  : values=74,74
  | dBscale-min=-74.00dB,step=1.00dB,mute=0

Вывод подсказывает, что значений два, - values=2, левый и правый канал. А также минимальное и максимальное значение для каждого канала. Здесь они оба на максимуме и это отображает третья строка.

Снизим например уровень левого канала:
$ amixer -c0 cset numid=1 64,74
numid=1,iface=MIXER,name='Headphone Playback Volume'
  ; type=INTEGER,access=rw---R--,values=2,min=0,max=74,step=0
  : values=64,74
  | dBscale-min=-74.00dB,step=1.00dB,mute=0

и выключим правый канал:
$ amixer -c0 cset numid=2 on,off
numid=2,iface=MIXER,name='Headphone Playback Switch'
  ; type=BOOLEAN,access=rw------,values=2
  : values=on,off

Восстанавливается аналогично:
$ amixer -c0 cset numid=1 74,74
numid=1,iface=MIXER,name='Headphone Playback Volume'
  ; type=INTEGER,access=rw---R--,values=2,min=0,max=74,step=0
  : values=74,74
  | dBscale-min=-74.00dB,step=1.00dB,mute=0
$ amixer -c0 cset numid=2 on,on
numid=2,iface=MIXER,name='Headphone Playback Switch'
  ; type=BOOLEAN,access=rw------,values=2
  : values=on,on

Отдельного упоминания заслуживает Auto-Mute Mode:
$ amixer -c0 cget numid=5
numid=5,iface=MIXER,name='Auto-Mute Mode'
  ; type=ENUMERATED,access=rw------,values=1,items=2
  ; Item #0 'Disabled'
  ; Item #1 'Enabled'
  : values=1

Item подсказывает, что у этого режима два состояния:
0 Disabled и  1 Enabled

values=1 в конце, говорит что Auto-Mute Mode включен.

Auto-Mute Mode, это режим, который позволяет держать спикеры ноутбука во включенном или выключенном состоянии при подключенной через джек 3.5 гарнитуре.

Выключим Auto-Mute Mode, чтобы звук шёл не только через гарнитуру, но и через спикеры ноутбука:
$ amixer -c0 cset numid=5 0
numid=5,iface=MIXER,name='Auto-Mute Mode'
  ; type=ENUMERATED,access=rw------,values=1,items=2
  ; Item #0 'Disabled'
  ; Item #1 'Enabled'
  : values=0

Стоит только помнить, что numid у вас будут свои, что само-собой разумеется.
Управление через numid и cget/cset дадут вам полную власть над звуком и дадут возможность выставить абсолютно все нужные пресеты.

Также обращайте внимание на то, что этот уровень доступа означает только чтение (см. значение access):
numid=23,iface=PCM,name='Capture Channel Map'
  ; type=INTEGER,access=r----R--,values=2,min=0,max=36,step=0
  : values=0,0
  | container
    | chmap-fixed=FL,FR
« Последнее редактирование: 15.10.2018 01:35:39 от Speccyfighter »
ZX Spectrum 128K
Привет от NM:  # echo -e "\n[device]\nwifi.scan-rand-mac-address=no" >> /etc/NetworkManager/NetworkManager.conf

Оффлайн mentalDepression

  • Или мы остались в прошлом "настройка вручную", или мы находимся в будущем "компьютер делает сам".
  • Давно тут
  • **
  • Сообщений: 26
Цитировать
Цитата: Speccyfighter
Это далеко не всё что вы можете.
Да, здорово, сохранил инфу. Мне сейчас это не нужно, но кому-то очень поможет. Спасибо.
Или мы остались в прошлом "настройка вручную", или мы находимся в будущем "компьютер делает сам".

Оффлайн ∞lan∞

  • Давно тут
  • **
  • Сообщений: 328
Есть расхождение в уровнях если сравнивать alsamixer с pnmixer.
В pnmixer ставлю 50% тут же поднимается на два пункта = 52% в alsamixer это соответствует 31%.