LINUX.ORG.RU

А как мне громкость крутить, ммм?

 ,


0

1

Вчера загрузился в i3, понастраивать. Ну и до звука дело дошло. Назначил я, значит, его на мультимедиа клавиши:

amixer set Master 5%+ -q
amixer set Master 5%- -q
amixer sset Master toggle

А вот с mute/unmute — беда. Mute делает, а обратно нет. Проблема распространенная. Из решений какой-то башебред на страницц с запоминанием настроек, скидывание до нуля и восстановлением.. Когда я использую такие костыли, во мне умирает частичка адекватности. Хочу простого решения без костылей.


amixer get Master и однострочником сравнить значение с нулём, не?

А вообще, мют не нужен.

    <keybind key="XF86AudioMute">
      <action name="execute">
        <execute>mpc stop</execute>
      </action>
    </keybind>

    <keybind key="XF86AudioStop">
      <action name="execute">
        <execute>sats</execute>
      </action>
    </keybind>

Kalashnikov ★★★
()
Ответ на: комментарий от geekless

Поставить PA.

Да он стоит какбэ, я ничего не удалял. Вот только консольного миксера, который может его мутить/анмутить нет.

Ok
() автор топика
Ответ на: комментарий от Ok
pactl set-sink-mute $sink $status

Заглушить выход со всех звуковых карт:

sinks=$(pactl list short sinks | sed 's/^\([0-9]*\).*$/\1/')
for sink in $sinks; do
    pactl set-sink-mute $sink 1
done
gatsu
()
Ответ на: комментарий от quantum-troll

Поставить OSSv4, например.

И где там mute/unmute из коробки?

~$ ossmix 
Selected mixer 0/CMedia CMI8788
Known controls are:
pcm [<leftvol>:<rightvol>] (currently 81:81)
rear [<leftvol>:<rightvol>] (currently 0:0)
center [<leftvol>:<rightvol>] (currently 0:0)
side [<leftvol>:<rightvol>] (currently 0:0)
ext.monitor.analog ON|OFF (currently OFF)
ext.monitor.spdif ON|OFF (currently OFF)
ext.monitor.inputsrc <Line|Mic> (currently Mic)
ext.routing.spread ON|OFF (currently OFF)
ext.routing.spdif-loopback ON|OFF (currently OFF)
spdif-out.enable ON|OFF (currently OFF)
spdif-out.adc/dac ON|OFF (currently OFF)
spdif-out.pro <Consumer|Professional> (currently Consumer)
spdif-out.audio <Audio|Data> (currently Audio)
spdif-out.copy ON|OFF (currently OFF)
spdif-out.pre-emph ON|OFF (currently OFF)
spdif-out.rate <44.1KHz|48KHz|32KHz|88.2KHz|96KHz|64KHz|176.4KHz|192KHz> (currently 48KHz)
spdif-out.vbit ON|OFF (currently OFF)
vmix0-enable ON|OFF (currently ON)
vmix0-rate <decimal value> (currently 88200) (Read-only)
vmix0-channels <Stereo|Multich> (currently Stereo)
vmix0-src <Fast|High|High+|Production|OFF> (currently Production)
vmix0-outvol <monovol> (currently 25.0 dB)
vmix0-invol <monovol> (currently 0.0 dB)
vmix0.pcm1 [<leftvol>:<rightvol>] (currently 25.0:25.0 dB)
vmix0.pcm2 [<leftvol>:<rightvol>] (currently 25.0:25.0 dB)
vmix0.pcm3 [<leftvol>:<rightvol>] (currently 25.0:25.0 dB)
vmix0.pcm4 [<leftvol>:<rightvol>] (currently 25.0:25.0 dB)
В интернетах предлагают самодельные скрипты с сохранением/восстановлением параметров.

Homura_Akemi
()
Ответ на: комментарий от gatsu

Это что-то из наследия майя? Еще раз повторяю: amixer может делать mute, он не может делать unmute. Вот такие странности :3

Ok
() автор топика
Ответ на: комментарий от gatsu

Глушит front (как он будет в alsa, master?) если он включён, и включает, если заглушен.
Уровни громкости при этом остаются нетронутыми.

quantum-troll ★★★★★
()
Ответ на: комментарий от Ok

Пожалуйста.

sinks=$(pactl list short sinks | sed 's/^\([0-9]*\).*$/\1/')
for sink in $sinks; do
    pactl set-sink-mute $sink 0
done
gatsu
()

Можно же просто mixer 100:100, или там mixer pcm 75:75.

IPR ★★★★★
()
Ответ на: комментарий от quantum-troll

Неа, нужно самостоятельно указывать $sink (звуковая карта) и $status (состояние, булев). Но громкость запоминается.

Можно сделать обвязку, используя информацию, предоставляемую pactl list sinks.

Вот вывод для моей основной звуковой карты:

Sink #2
	State: RUNNING
	Name: alsa_output.pci-0000_04_01.0.analog-stereo
	Description: SB Audigy Аналоговое стерео
	Driver: module-alsa-card.c
	Sample Specification: s16le 2ch 48000Гц
	Channel Map: front-left,front-right
	Owner Module: 6
	Mute: no
	Volume: 0: 100% 1: 100%
	        0: 0,00 dB 1: 0,00 dB
	        balance 0,00
	Base Volume: 100%
	             0,00 dB
	Monitor Source: alsa_output.pci-0000_04_01.0.analog-stereo.monitor
	Latency: 104362 usec, configured 105000 usec
	Flags: HARDWARE HW_MUTE_CTRL HW_VOLUME_CTRL DECIBEL_VOLUME LATENCY 
	Properties:
		alsa.resolution_bits = "16"
		device.api = "alsa"
		device.class = "sound"
		alsa.class = "generic"
		alsa.subclass = "generic-mix"
		alsa.name = "ADC Capture/Standard PCM Playback"
		alsa.id = "emu10k1"
		alsa.subdevice = "0"
		alsa.subdevice_name = "subdevice #0"
		alsa.device = "0"
		alsa.card = "1"
		alsa.card_name = "SB Audigy 2 ZS [SB0350a]"
		alsa.long_card_name = "SB Audigy 2 ZS [SB0350a] (rev.4, serial:0x20051102) at 0xec00, irq 17"
		alsa.driver_name = "snd_emu10k1"
		device.bus_path = "pci-0000:04:01.0"
		sysfs.path = "/devices/pci0000:00/0000:00:1e.0/0000:04:01.0/sound/card1"
		device.bus = "pci"
		device.vendor.id = "1102"
		device.vendor.name = "Creative Labs"
		device.product.name = "SB Audigy"
		device.string = "front:1"
		device.buffering.buffer_size = "65536"
		device.buffering.fragment_size = "65536"
		device.access_mode = "mmap+timer"
		device.profile.name = "analog-stereo"
		device.profile.description = "Аналоговое стерео"
		device.description = "SB Audigy Аналоговое стерео"
		alsa.mixer_name = "SigmaTel STAC9750,51"
		alsa.components = "AC97a:83847650"
		module-udev-detect.discovered = "1"
		device.icon_name = "audio-card-pci"
	Порты:
		analog-output;output-amplifier-on: Аналоговый вывод / Усилитель (priority: 9910)
		analog-output;output-amplifier-off: Аналоговый вывод / Нет усилителя (priority: 9900)
		analog-output-headphones;output-amplifier-on: Аналоговые наушники / Усилитель (priority: 9010)
		analog-output-headphones;output-amplifier-off: Аналоговые наушники / Нет усилителя (priority: 9000)
	Активный порт: analog-output;output-amplifier-on
	Formats:
		pcm

Тут следует обратить внимание на Mute: no и device.string = «front:1». Немного коряво, но работать будет.

gatsu
()
Ответ на: комментарий от Homura_Akemi

Похоже на то. В ossxmix тогда тоже никаких переключателей быть не должно, по идее.
Кстати, есть ли альтернатива ossxmix?

quantum-troll ★★★★★
()
Ответ на: комментарий от quantum-troll

В ossxmix тогда тоже никаких переключателей быть не должно, по идее.

Нету, нету. Сейчас включу интеграшку, посмотрю, что там.

Кстати, есть ли альтернатива ossxmix?

xfce4-mixer. Не знаю, своя там поддержка или gstreamer, но вроде доступны все те же контролы, только интерфейс куда приятнее.

Homura_Akemi
()
Ответ на: комментарий от quantum-troll

А что-нибудь без лишних зависимостей?

Не встречались такие. Ну, то есть полноразмерные микшеры.

Homura_Akemi
()
Ответ на: комментарий от quantum-troll

Потому, что ты используешь ALSA и Pulseaudio, где ничто не бывает просто.

Я не использую алма и пульсаудио. Я поставил последнюю убунту и просто хочу включить/выключить звук. Кто там будет, алса, пульс или еще какая говняшка, мне безразлично.

Ok
() автор топика
Ответ на: комментарий от tyakos

Хочу простого решения без костылей.
KDE.

Прекратите нести чушь или я отрепорчу о вас в специальном треде для некорректных сообщений.

Ok
() автор топика
Ответ на: комментарий от Ok

Я поставил последнюю убунту

Тогда делай это мышкой, очевидно же!

quantum-troll ★★★★★
()
Ответ на: комментарий от Bad_ptr

а действитенльно, нафига этот мьют нужен-то?

Ну кнопка же есть.

Ok
() автор топика
Ответ на: комментарий от Ok

Может, и никак. Я этим не пользуюсь. Выше уже посоветовали volumeicon, там есть поддержка глобальных клавиш.

Homura_Akemi
()
Ответ на: комментарий от kernelpanic

volumeicon умеет хоткеи. Попробуй.

Да это фигня какая-то. Зачем мне всякое говнецо в трее, я лучше сделаю чтобы были няшные проценты.

Ok
() автор топика

Ъ-way. Повесить на хоткеи pulseaudio -k и start-pulseaudio-x11.

А так пиши багрепорт.

tyakos ★★★
()

Эээ я правильно понял, что set Master toggle если вызвать его один раз, не отключает звук, а если вызвать его второй раз - не включает?

Hoodoo ★★★★★
()
Ответ на: комментарий от Hoodoo

Эээ я правильно понял, что set Master toggle если вызвать его один раз, не отключает звук, а если вызвать его второй раз - не включает?

Он должен переключать, один раз нажал — выключить, второй раз — включить. Ну обычный переключатель. Он ее выключает. Но включить уже не может :3 Где-то я читал, что это как-то связано с какими-то особенностями пульсы..

Ok
() автор топика
Ответ на: комментарий от Ok

Я конечно дико извиняюсь за такой бессодержательный ответ, но УМВР. Я правда давно пользуюсь этим способом включать/выключать звук, и он работает как минимум на трёх разных нотиках, на одном из которых арчик, в котором голая альса, а на двух других изкоробочная убунта 12.04, которую даже не я ставил, просто перенёс собственные конфиги на флэшке в хомяк. Точно те же amixer set, даже с теми же значениями. Чему там ломаться и из-за чего городить какие-то костыли на bash?

Hoodoo ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.