Есть ли способ управления громкостью на выходе JACK через клемму или получить вход PulseAudio?

У меня есть немного специфический вопрос:

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

Для этой цели в настоящее время я использую EasyStroke с командами amixer -D pulse sset Master 5%+ (колесо мыши вверх) и amixer -D pulse sset Master 5%- (колесо мыши вниз), что отлично работает.

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

Пока программное обеспечение использует выходной сигнал PulseAudio JACK Sink, я могу управлять выходной громкостью с помощью колесика мыши, но когда программное обеспечение не использует PulseAudio, оно напрямую подключается к JACK и всегда на максимальной громкости.

Если вы ссылаетесь на снимок экрана: я могу управлять общей громкостью выхода с красной меткой (PulseAudio JACK Sink), но мне действительно нужен доступ к зеленой пометке для управления всем звуком (выход системы) ).

К сожалению, я не могу управлять своей основной громкостью ALSA через amixer -q sset Master X, потому что ALSA не предлагает никаких элементов управления для моей единственной звуковой карты USB.

Есть ли способ управления громкостью JACK Output через терминал, на который я мог бы заменить команды кнопок мыши?

Или, в качестве альтернативы, есть ли способ добавить модуль ввода PulseAudio к правой стороне соединений JACK, чтобы подключить Reaper и все остальное программное обеспечение JACK и направить их через приемник PulseAudio JACK? (Источник PulseAudio JACK используется только для микрофонов и не воспроизводит вход.)

enter image description here

6
задан 16 July 2019 в 15:07

3 ответа

На основе этого примера мы можем решить проблему.

Если Ваша звуковая карта не может управлять объемом на аппаратной стороне, или драйвер не поддерживает эту функцию Вашей звуковой карты, возможное обходное решение должно определить новое виртуальное pcm устройство в ~/.asoundrc файл, который управляет объемом на стороне программного обеспечения.

Сначала мы должны знать название нашей звуковой карты, таким образом

 aplay -L

полезная команда здесь. Фактическое имя карты будет отображено после CARD= и имя устройства (число) после DEV=.

Мы можем протестировать устройство с

speaker-test -D <card name> -c <channel count> -twav

Теперь мы создаем новое softvol устройство путем добавления

pcm.softvol {
    type            softvol
    slave {
    pcm         "<card name>,<device name>"
    }
    control {
        name        "<control name>"
        card        "<card name>"
    }
}

кому: ~/.asoundrc. (Если файл не существует, мы должны создать файл),

В этом случае должен быть Master, посмотрите дополнительную информацию об именах элементов управления в ссылке выше.

Теперь мы тестируем новое устройство с

speaker-test -D softvol -c <channel count> -twav

Откройте alsamixer, необходимо видеть новое управление Master теперь и должен смочь изменить объем с помощью alsamixer.

Может быть необходимо дополнительно установить устройство по умолчанию в /etc/asound.conf с:

pcm.!default {
    type   hw
    card   <card name>
}
ctl.!default {
    type   hw
    card   <card name>
}

Обратите внимание, что это отличается от предложения в ссылке выше, но это - то, о чем OP сообщила для работы.

Теперь мы должны установить устройство интерфейса Jack на softvol и может использовать, например.

amixer -q sset Master 5%+
amixer -q sset Master 5%-
amixer -q sset Master 50%

увеличить или уменьшить выходной объем на 5% соответственно или установить на 50%, зафиксированных.

Так как amixer должен "открыть" устройство сначала, прежде чем команды Общей громкости будут доступны, добавить aplay -D softvol ~/softvol-wakeup.wav & Вашему ДЖЕКУ предварительно запускают сценарий (файл WAV может быть секундой тишины).

1
ответ дан 23 November 2019 в 07:58

Обновление 21 июля 2019

С профессионального музыкального веб-сайта для Linux:

Извините за регистрацию вопроса о непыле, но мне нужно Ваше руководство. Когда Jack берет на себя управление над аудио, многими приложениями, включая flashplayer, очень громкое действие, т.е. в VLC у меня есть набор томов к 5%. Я хотел бы управлять общей громкостью как в alsamixer вместо того, чтобы установить уровни для каждого приложения индивидуально. Как я могу сделать это?

Существует два отправленные ответа, и этот является самым полезным:

нет такого понятия. ДЖЕК разработан для рабочих процессов проаудио и создания музыкальных произведений. Не настольный звуковой сервер, даже при том, что часть использования это таким образом. При необходимости в такой вещи необходимо будет направить все клиенты ДЖЕКА через смесительный клиент, который мог быть чем-то так же просто как JackMix или столь же сложный как Пыл. ДЖЕК самостоятельно не предоставляет эту услугу и полностью из объема ее дизайна.

Простое решение затем состоит в том, чтобы установить JackMix:

"Когда-нибудь боролся со многими приложениями разъема на Вашем рабочем столе все использующие его собственный регулятор громкости общей громкости, но не одно общее место для всех непосредственно доступных объемов?"

"Решением Вашей проблемы является JackMix, приложение для микшера для разъема, который точно походит на микшер, который Вы использовали бы, если бы необходимо было подключить аналоговое оборудование".

Существуют другие приложения для Jack, которого можно найти перечисленным здесь.


Исходный ответ

Я должен признаться, чтобы быть музыкально оспариваемым, но я думаю, что этот сценарий - то, куда Вы направляетесь:

Можно получить список всех приемников с pacmd list-sinks, and set the volume withобъем приемника набора pacmd', таким образом, необходимо сделать что-то как

VOLUME='+5%'
for SINK in `pacmd list-sinks | grep 'index:' | cut -b12-`
do
  pacmd set-sink-volume $SINK $VOLUME
done

где $VOLUME может быть абсолютные (150%) или родственник (+5%,-5%), и возможно другие форматы, также.

Большинство менеджеров окон может быть настроено для запуска сценариев или программ, вместе с аргументами при нажатии клавиш. Это - лучший метод, но если Ваш WM не делает, существуют инструменты как xbindkeys. Таким образом, можно настроить всегда, Вы хотите.

Обратите внимание, что Pulseaudio начнет использовать аппаратные микшеры, если объем приемника пробежится через 100%, и это может исказить звук.

Также обратите внимание, что Pulseaudio позволяет регулировать громкость для каждого приложения ("аудиопоток") с pamcd set-sink-input-volume. Можно перечислить их с pacmd исходными данными приемника списка и установить их похожим способом.

Это позволяет Вам, имеют объемы приемника на фиксированном уровне, таким образом, они о равном, не используя аппаратные микшеры, и когда Вы переключите приемники, он будет автоматически иметь "правильный" объем. Это - установка, которую я предпочитаю.

2
ответ дан 23 November 2019 в 07:58

ОБНОВЛЕНИЕ 1

Именно так я могу дать быстрое объяснение, прежде чем более длинное опишет.

Даже если PCM не доступен (не только невидимый в amixer) затем, мы можем все еще использовать PulseAudio для управления ДЖЕКОМ, потому что dbus обнаружит его.

Перед чем-либо еще удостоверяются, что Вам загрузили модули ядра для Вашей карты звука USB с:

sudo modprobe snd-usb-audio

потому что это могло бы быть то, почему Ваши средства управления звуковой картой не обнаруживаются в amixer. Только для подтверждения выполнитесь aplay -l и aplay -L и отправьте вывод этих двух команд.

Затем, мы запускаем путем установки соответствующих pulseaudio пакетов:

sudo apt-get update && sudo apt-get install pulseaudio-module-jack

и затем загружая его соответствующий модуль:

pactl load-module module-jack-sink channels=2

и наконец устанавливая приемник по умолчанию на ДЖЕКА

pacmd set-default-sink jack_out


До sudo pactl load-module module-alsa-sink control=PCM, эта строка позволяет pulseaudio создать новый источник приемника, который обрабатывает уровень громкости импульсно-кодовой модуляции на уровне звуковой карты API ALSA. Звуковая карта OP должна быть способна к преобразованию потока цифрового аудио к аналоговому посредством импульсной модуляции, поскольку существует аудио выход из системы и через динамики.


Необходимо сначала добавить приемник, который управляет pcm устройством как выводом с:

sudo pactl load-module module-alsa-sink control=PCM

затем (только для перепроверения посмотрите, видите ли Вы новый вывод, видимый через pavucontrol т.е. регулятор громкости pulseaudio GUI)

можно управлять выходным объемом приемника PCM непосредственно с

pactl set-sink-volume [pcm-sink-name likely something along the lines of alsa.default] 50%

1
ответ дан 23 November 2019 в 07:58

Другие вопросы по тегам:

Похожие вопросы: