Как использовать JACK и Pulseaudio / ALSA одновременно на одном аудио устройстве?

30

Всякий раз, когда я запускаю водород, он ломает звук во всех других приложениях, использующих, например, Pulse, я больше не могу воспроизводить видео в Chrome после однократного запуска Hydrogen, пока я не перезагружу свой компьютер или не выполню принудительную перезагрузку sudo alsa. Я нашел людей со схожими проблемами, но нет реального руководства, чтобы исправить это, часто есть ссылки на http://jackaudio.org/pulseaudio_and_jack (который был перемещен на http://jackaudio.org/faq/pulseaudio_and_jack.html ) I Я использую Ubuntu Studio 14.04 64bit.

АЛЬТЕРНАТИВНО, если это действительно невозможно, может кто-нибудь сказать мне, как использовать Джек на одной звуковой карте и Pulse на другой? Таким образом, я мог подключить звуковую карту USB только тогда, когда мне нужен JACK.

Пожалуйста, не заставляйте меня использовать окна.

Андреас Хартманн
источник
После дальнейших исследований, кажется, есть несколько способов заставить это работать, см. Здесь: github.com/jackaudio/jackaudio.github.com/wiki/… Однако в моем случае все они навсегда уничтожают весь аудио выход.
Андреас Хартманн

Ответы:

24

С 16.04 все становится намного проще :)

Просто установите qjackctlи pulseaudio-module-jackмодуль:

apt-get install qjackctl pulseaudio-module-jack

Затем настройте qjackctlзапуск следующей команды после запуска. Скопируйте его в «Настройка ...»> «Параметры»> «Выполнить сценарий после запуска»:

pacmd set-default-sink jack_out

Вот и все. Pulseaudio распознает (через D-Bus), что JACK запустился, и автоматически направит аудио на него. Когда JACK остановлен, Pulseaudio вернется к нормальной маршрутизации и снова начнет отправлять аудио прямо на карту.

Таким образом (почти) по умолчанию Pulseaudio реализует настройку, описанную выше в mmv-ru.

Хосе Мико
источник
Это самое простое решение, которое я видел до сих пор! Наконец я могу использовать домкрат, не отключая все остальное! Спасибо.
kapcom01
8
pactl set-default-sink jack_out -> "Отказ: нет такого объекта"
Карл Моррисон
1
это работало для меня, когда другие решения не, большое спасибо!
Мальте
2
Правильная команда: «pacmd set-default-sink jack_out». К сожалению, я не могу исправить ответ, потому что редактирование должно содержать более 6 символов! :-(
Тодд Чаффи
2
@KarlMorrison, вам, вероятно, нужно выполнить, pactl load-module module-jack-sink channels=2а pactl load-module module-jack-sourceдо этого смотрите ответ @ kim-tucker.
naktinis
17

У этого видео на Youtube: «Джек и PulseAudio вместе как друзья - Linux», похоже, есть ответы на некоторые вопросы:

Ключом к решению, как оказалось, было обеспечение того, чтобы Pulse-Audio-Module-jack был установлен с:

aptitude install pulseaudio-module-jack

затем sudo отредактировал файл /etc/pulse/default.pa, добавив две строки в раздел загрузки драйверов аудио:

load-module module-jack-sink
load-module module-jack-source

тогда - я думаю - перезапуск пульсаудио. Я только что перезапустил компьютер (я знаю, что он ленивый), и это сработало… угроза «Ардора» больше не убивала pulseaudio, они счастливо играли вместе.

RobinsSea
источник
Кстати, вы также можете добавлять модули на лету, используяpactl load-module ...
0__
9

Только что прошел квест о сосуществовании Джека и Пульса на Fedora. Вообще я доволен Pulseaudio, но иногда нужен аудио Джек.

Мое решение работает на Fedora 23.

dnf install jack-audio-connection-kit jack-audio-connection-kit-dbus qjackctl

Не трогайте /etc/pulse/default.pa!

Настроить qjackctl

настройки

Там соответствующий фрагмент ~ / .config / rncbc.org / QjackCtl.conf

[Settings]
Server=jack_control start
Driver=alsa
InDevice="hw:PCH,0"
OutDevice="hw:PCH,0"

Опции Названия раковин для pactl можно найти по команде:

pacmd list-sinks

Есть еще один фрагмент ~ / .config / rncbc.org / QjackCtl.conf, чтобы показать полные команды

[Options]
...
StartupScript=true
StartupScriptShell=pactl suspend-sink alsa_output.pci-0000_00_1b.0.analog-stereo 1
PostStartupScript=true
PostStartupScriptShell=pactl set-default-sink jack_out
ShutdownScript=false
ShutdownScriptShell="pactl unload-module module-jack-sink; pactl load-module module-jack-source"
PostShutdownScript=true
PostShutdownScriptShell="pactl suspend-sink alsa_output.pci-0000_00_1b.0.analog-stereo 0; pactl set-default-sink alsa_output.pci-0000_00_1b.0.analog-stereo"

Разное Там "Включить интерфейс D-Bus" важно для самого Qjackctl.

Как это работает

Теперь на загрузочном ПК работают только с PulseAudio. Все автоматические работают как без Джека.

После запуска Qjackctl,

  1. Сценарий запуска Qjackctl приостанавливает основную звуковую карту в Plseuaudio и позволяет Джеку получить к ней доступ "pactl suspend-sink-alsa_output.pci-0000_00_1b.0.analog-stereo 1"
  2. Джек начал через D-Bus
  3. Импульс автоматически обнаруживает запуск разъема через шину D-Bus и нагрузку приемника и источник сигнала.
  4. Qjackctl после запуска скрипта меняет приемник по умолчанию в Pulse на jack_out. (Я встречаю это сам не сделал) "pactl set-default-sink jack_out" (сначала это выглядит ненужным, поскольку все запущенные клиенты PA переключились на новый приемник, но новые приложения застряли на приостановленном приемнике без этой команды)

Поэтому система перенастроена на использование «Импульса поверх Джека». (Там я пропускаю аппаратный ввод приостановить, потому что я не использую его в любом случае)

Если «Stop JACK audio server on exti приложения» не установлен, я могу закрыть Qjackctl и перезапустить его, не нарушая настройки.

После остановки Джека с помощью Qjackctl, все возвращаются к простому незагроможденному Пульсу!

  1. Отключение джека с помощью Qjackctl через dbus - опция «Включить интерфейс D-bus».
  2. jack-source и jack-раковина автоматически удаляются из Pulseaudio по шине d-bus
  3. приемник по умолчанию в Pulse Audio переключен на звуковую карту из-за исчезновения домкрата
  4. Qjackctl после завершения работы скрипта активирует звуковую карту обратно в Pulseaudio "pactl suspend-раковина alsa_output.pci-0000_00_1b.0.analog-стерео 1"

Используемые инструменты

  1. jackd (из пакета pulseaudio-utils)
  2. jack_control (из пакета ack-audio-connection-kit-dbus)
  3. Qjackctl (из пакета pulseaudio-utils)
  4. Pactl для управления Pulseaudio из sctipts (из пакета pulseaudio-utils)
ммв-ру
источник
Этот ответ не является явным о том, как выполняется конфигурация. Это сделано исключительно через Qjackctl? Если да, то в каких файлах находятся настройки конфигурации и как они установлены?
Фахим Митха
Начальная настройка производится через менеджер пакетов. изменение конфигурации запуска / остановки jackg с помощью сценариев jack-audio-connection-kit-dbus и Qjackctl.
mmv-ru
Понимаю. Некоторые детали в этом направлении были бы чрезвычайно полезны. Эти детали особенно отсутствуют в других ответах и ​​информации в сети. Я предпочел бы не настраивать вещи через графический интерфейс, если это возможно. Вы обычно в AU чате? Если это так, мы можем обсудить это там.
Фахим Митха
Qjackctl может быть настроен через графический интерфейс, как показано на скриншотах. В ответ я показываю части .config / rncbc.org / QjackCtl.conf, чтобы показать полные строки скрипта.
mmv-ru
Не хватает репутации, чтобы пригласить в чат. Пригласи меня.
mmv-ru
7
  • Проблема в том, что при запуске запускается запуск водорода (как Ardor), но не закрывайте его при выходе:
    но вы можете запустить killall jackdв терминале после выхода из водорода.

  • Сложный способ одновременно использовать программное обеспечение Jack и pulseaudio - это установить «pulseaudio-module-jack» (также установить qjackctl (gui для jackd) и pavucontrol, если его нет). Перезапустите pulseaudio pulseaudio -k.
    Теперь закройте аудио приложения (Jack и pulseaudio),
    запустите jackd с помощью qjackctl (нажмите кнопку запуска) ( опция dbus должна быть выбрана в последней вкладке настроек qjackctl ).
    На вкладке Pavucontrol «устройство вывода» нажмите зеленую кнопку «устройство по умолчанию» рядом с «стоком разъема».
    Теперь программное обеспечение pulseaudio и Hydrogen должны работать одновременно.

  • Используя qjackctl, на первой вкладке «Настройки» вы можете изменить аудиоустройство Jackd.

laugeo
источник
3

Теперь это может быть намного проще. То, что сработало для меня сегодня, чтобы удовлетворить мои действительно базовые потребности, после новой установки Linux Mint 18.2 (базовый пакет Ubuntu 16.04) было:

  1. Используйте Synaptic для установки QSynth и QJackCtl.

  2. Скопируйте необходимые звуковые шрифты в соответствующую папку, например /usr/share/sounds/sf2/

  3. В программе настройки QSynth : под аудио изменения вкладки Audio Driver в PulseAudio .

  4. В QSynth Setup : под SoundFonts : Open ... и выберите один из них по необходимости.

  5. В QJackCtl Setup> Настройки> Дополнительно :

    Префикс сервера: pasuspsender - /usr/bin/jackd

  6. В QJackCtl Setup> Options :

    Выполнить скрипт после запуска:

    pactl load-module module-jack-sink channels=2; pactl load-module module-jack-source; pacmd set-default-sink jack_out
    
  7. В QJackCtl Connect: ALSA : присоедините запись клавиатуры слева к FLUID Synth справа.

  8. В основных настройках системы для звука выберите необходимое устройство вывода.

Теперь я могу играть на клавиатуре во время просмотра видео (например, на YouTube с использованием Firefox) - раньше я мог делать только один из них за раз без большого количества настроек, которые я редко мог отследить.

Надеюсь, что это поможет кому-то или побудит их попробовать еще раз :-).

Ким Такер
источник
2

Самый простой способ направить всю систему для работы с домкратом:

устанавливать

sudo apt-get install qjackctl pulseaudio-module-jack

Откройте qjackctl. В Настройка> Параметры>

Установите флажок Выполнить скрипт после запуска и вставьте это:

pacmd load-module module-jack-source channels=2; pacmd load-module module-jack-sink channels=2;

Установите флажок Выполнить скрипт после завершения работы и вставьте это:

killall jackd

Теперь запустите qjack и откройте настройки звука. Вы найдете выходной порт Pulse Audio Jack Sink. Выберите его, и вся система будет синхронизирована. Если вы остановите Jack server / qjack, звук снова вернется к вашему порту по умолчанию.

Вот общий вид

Фахад Хасан Патик
источник
0

Конечно, нужно будет работать и pulseaudio, и jack, если они дойдут до точки, где они нуждаются в jack, так как большинство медиаплееров в браузере не знают jack! ..к несчастью.

Я продолжал видеть предложение о запуске только одного из них одновременно, что мне кажется таким ужасным компромиссом. На мой взгляд, немного трагично, что эти две службы, то есть jack и pulseaudio, хотя оба функционируют самостоятельно, по крайней мере, так плохо управляются kxstudio, что я и использую.

Итак, что происходит:

  • Гнездо не может запуститься во время работы pulseaudio (и с помощью драйвера звуковой карты, который он хочет использовать, что достаточно справедливо), поэтому его нужно запустить в первую очередь

  • pulseaudio должен быть направлен на домкрат после запуска и запуска

Довольно просто .. да? По определенным причинам у меня было бесконечное горе с этим, потому что ..

Сначала я думаю, потому что pulseaudio 4.0, кажется, глючит и портит драйвер alsa, так что в некоторых ситуациях он оставляет его заблокированным, и поэтому jack не может запуститься, даже если pulseaudio не работает. (Говорит, что не удалось установить параметры захвата или SMTG, как это)

То, что я сделал в конце концов, было

  • полностью удалил jack и pulseaudio (с помощью команды find и rm -rf: D после очистки apt-get)
  • установлен Pulseaudio 11 (из источников)
  • установленный джек и его библиотеки (libjack-dev)

в этом порядке, а затем я наконец-то заставил их нормально работать через qjackctl, который гарантирует, что они запускаются правильным образом (загружает приемник jack в pulseaudio и устанавливает его по умолчанию).

Кстати, я видел, что вместо этого рекомендуется Cadence, и я не понимаю, почему для меня это кажется мусором по сравнению с qjackctl.

В любом случае, проблема в том, что запуск jack с использованием qjackctl занимает некоторое время, и чтобы избежать времени ожидания при каждой загрузке, вы можете использовать эту функцию спасения kde, которая заключается в загрузке предыдущего сеанса. Убедитесь, что у вас нет qjackctl в автозапуске, поскольку при каждой перезагрузке у вас будет еще один экземпляр, независимо от значения параметра singleton = true (глючит всю ночь).

Это связано с тем, что я больше не чувствовал, что с ним возиться, например, при написании интеллектуального сценария, который проверяет, что pulseaudio выключил (или приостановил) пусковое гнездо и проверил, правильно ли он запустился, затем запустил pulseaudio, модуль нагрузочного джека и т. Д.

Иначе полагаться на ОС для правильного запуска демонов и загрузки конфигурации было бы нормальным (здоровым) сценарием, однако, похоже, этого не происходит.

Повеселись..

Негру Вода
источник
0

Я использую Linux Mint 19.1. После того, как я попробовал все возможные решения, у меня все не получилось.

Наконец, я смог решить все свои проблемы, выполнив шаги / инструкции в видео: Ссылка

По сути, он устанавливает приложения из репозиториев Kxstudio. и у них есть скрипт, чтобы все идеально настроить при запуске.

Моя конечная цель состояла в том, чтобы иметь возможность записывать ввод через мой интерфейс (Scarlett solo), а также запускать / записывать звук из других приложений (рабочий стол, браузер)

joe_maya
источник