Как использовать ДЖЕКА и Pulseaudio/ALSA одновременно на том же аудиоустройстве?

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

КРОМЕ ТОГО, если этого действительно невозможно достигнуть, кто-то может сказать мне, как использовать Jack на одной звуковой карте и Импульс на другом? Таким образом, я мог включить карту звука USB только, когда мне нужен ДЖЕК.

Не заставляйте меня использовать окна.

49
задан 19 March 2019 в 07:31

11 ответов

С 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.

42
ответ дан 23 November 2019 в 00:46

Это видео с Youtube: "Джек и PulseAudio вместе как друзья - Linux" похоже, есть некоторые ответы:

Ключом к решению, казалось, было убедиться, что pulseaudio-модуль-джек установлен с:

aptitude install pulseaudio-module-jack

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

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

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

21
ответ дан 23 November 2019 в 00:46

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

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

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

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

Настройте qjackctl

Settings

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

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

Options имена приемников для pactl можно найти с помощью команды:

 pacmd list-receivers
 

Есть еще один фрагмент ~ / .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"

Misc Там, «Включить интерфейс D-Bus», важный для самого Qjackctl.

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

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

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

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

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

Если не отмечен флажок «Остановить аудиосервер JACK в приложении exti», я могу закрыть Qjackctl и повторно запустить его, не мешая настройке.

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

  1. Jackd stop by Qjackctl over dbus - опция «Включить интерфейс D-bus».
  2. jack-source и jack-stream удалены из Pulseaudio автоматически по умолчанию d-bus
  3. сток в Pulse audio переключился на звуковую карту, потому что исчезновение разъема
  4. Qjackctl после того, как сценарий выключения активирует звуковую карту обратно в Pulseaudio "pactl suspend-stream alsa_output.pci-0000_00_1b.0.analog-stereo 1"

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

  1. jackd (из пакета pulseaudio-utils)
  2. jack_control (из пакета ack-audio-connection-kit-dbus)
  3. Qjackctl (из пакета pulseaudio-utils)
  4. pactl для управления Pulseaudio из sctipts (из пакета pulseaudio-utils)
9
ответ дан 23 November 2019 в 00:46
  • Проблема в том, что Hydrogen (как Ardor) запускает jackd при запуске, но не закрывает его при выходе:
    Но вы можете запустить killall jackd в терминале после выхода Hydrogen.

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

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

7
ответ дан 23 November 2019 в 00:46

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

Установить

sudo apt-get install qjackctl pulseaudio-module-jack

Открыть qjackctl. В Setup> Options>

проверьте Execute script after Startup и вставьте это:

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

Отметьте Execute script after Shutdown и вставьте это:

killall jackd

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

Вот общий вид

6
ответ дан 23 November 2019 в 00:46

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

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

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

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

  • Pulseaudio необходимо указать на разъем после запуска и запуска

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

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

В конце концов я

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

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

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

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

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

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

Удачи ..

0
ответ дан 23 November 2019 в 00:46

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

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

По сути, это устанавливает приложения из репозиториев Kxstudio. и у них есть сценарий для идеальной настройки всего при запуске.

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

0
ответ дан 23 November 2019 в 00:46

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

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

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

  3. В QSynth Setup : в Audio измените вкладку Audio Driver на pulseaudio .

  4. В QSynth Setup : в SoundFonts : Откройте ... и выберите нужный.

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

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

  6. В Настройка QJackCtl> Параметры :

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

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

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

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

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

3
ответ дан 23 November 2019 в 00:46

. Некоторое время назад я написал команду, и кто-то сообщил мне, что после попытки всех решений здесь он отключился удачи. Но это решение сработало для него, поэтому я отправлю его здесь, если кому-то еще можно помочь. NB: Я не утверждаю, что это решение является самым элегантным, но оно сработало для меня достаточно хорошо:

  • Я могу запускать / останавливать разъем, просто нажимая кнопку запуска / остановки, и переключение между pulseaudio и pavucontrol
  • он автоматически подключает все текущие игровые программы к разъему (вот почему есть этот уродливый grep, дайте мне знать, если у вас есть лучшее решение)
  • он также гарантирует, что приложение pulseaudio также может использовать микрофоны

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

Также обратите внимание, что я даю довольно много подробные инструкции по отладке таких проблем.

Мое решение (см. теорию ниже, чтобы понять, почему оно работает / не работает, и отладить любую потенциальную проблему)

Установить:

$ sudo apt install jack2 pavucontrol qjackctl pulseaudio-module-jack. 

Запустить qjackctl:

$ qjackctl

enter image description here

Щелкните Настройте и убедитесь, что выходной интерфейс правильный (например, если у вас есть выход HDMI, эта проверка может быть важной). В моем случае я просто буду использовать значение по умолчанию и вернусь сюда, если у меня возникнут проблемы позже. enter image description here

Затем на вкладке «Дополнительно» я заменил префикс сервера jackd на pasuspender - jackd . Предполагается, что это означает, что PulseAudio временно разрешил jack управлять звуковой картой. Не уверен, действительно ли это необходимо, но думаю, не повредит: enter image description here

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

pactl load-module module-jack-sink && pactl load-module module-jack-source && pactl set-default-sink jack_out && pacmd set-default-source jack_in && pacmd list-sink-inputs | grep index | sed 's/ *index: *//g' | xargs -I{} pacmd move-sink-input "{}" jack_out

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

Затем, чтобы убедиться, что pulseaudio перезапускается, когда домкрат закрыт, еще добавил в поле Выполнить скрипт после выключения :

pacmd suspend false

enter image description here

Вот и все! Теперь вам просто нужно сохранить, нажав Применить и щелкнув Пуск , чтобы запустить jack:

enter image description here Вы должны увидеть что-то подобное, если это работает (и, конечно, без ошибок ): enter image description here

Немного теории, чтобы понять, почему это работает или почему не работает.

Итак, вы не можете воспроизводить звук, потому что только одна программа может воспроизводить звук одновременно на одной звуковой карте. Итак, когда Джек играет, pulseaudio блокируется. Теперь также выясняется, что большинство настольных приложений могут общаться с pulseaudio, но не с Джеком. Поэтому, когда Джек включен, у вас просто больше нет звука. Хитрость заключается в том, чтобы направить импульсный аудио-трафик к Джеку с помощью чего-то вроде этого:

application -> pulseaudio -> Jack -> sound card

Обратите внимание, что все ссылки должны быть правильно настроены (и как побочный узел, сам Джек полагается на Alsa, то есть своего рода драйвер низкого уровня для звука. card, это будет важно позже при использовании MIDI, поскольку MIDI-устройства кажутся подключенными напрямую к Alsa, не знаю почему). Теперь мы увидим, как они настроены и как проверить, правильно ли они настроены.

Итак, чтобы создать ссылку pulseaudio -> Jack , мы собираемся загрузить модуль, который создает новый приемник pulseaudio ( то есть виртуальное устройство вывода), называемое приемником Джека : таким образом любые приложения, пишущие в этом приемнике, будут перенаправлены на Джек. У вас может быть несколько уже существующих приемников, например, для внутреннего звука, и если у вас есть Bluetooth-гарнитура, вы также можете использовать для нее одну раковину. Чтобы проверить, на каком приемнике работает приложение, установите и запустите pavucontrol ( pavucontrol в любом случае очень полезен для всех вещей, связанных со звуком, поскольку вы можете контролировать практически все из него). Вы можете увидеть список приемников на вкладке с названием Устройства ввода (извините, если перевод плохой), в моем случае у меня сейчас 2 стока (разъем еще не загружен): enter image description here

Если у вас всего одна раковина, вы можете не увидеть ничего интересного, но если у вас несколько раковин, вы можете проверить на первой вкладке, какое приложение играет на какой раковине (здесь вы видите, что firefox играет на моей bluetooth-гарнитуре ), и вы можете изменить его при необходимости:

enter image description here

Итак, если у вас есть какие-то проблемы, вы можете:

  1. ссылка pulseaudio -> jack : проверьте, что у вас есть раковина, соответствующая разъему (если нет попробуйте запустить вручную команду pactl load-module-module-jack-раковина , которая должна была запускаться автоматически. Если это не удается, убедитесь, что вы установили pulseaudio-module-jack , и в конечном итоге перезапустите pulseaudio, просто убив его killall pulseaudio . Не беспокойтесь, не нужно перезапускать pulseaudio, он возрождается автоматически.). Также убедитесь, что уровень громкости не равен 0% и канал не отключен: enter image description here
  2. ссылка приложение -> pulseaudio : проверьте, что ваши приложения пишут на этом приемнике. Если нет, вы можете вручную изменить приемник (но сценарий запуска должен был изменить приемник автоматически) следующим образом: enter image description here
  3. ссылка разъем -> звуковая карта : Если у вас все еще есть проблемы (эта часть также может быть связана с проблемами, которые у вас есть с программным обеспечением, которое записывает непосредственно на разъем, например zynaddsubfx ), проверьте из части Graph jack:

enter image description here

Вы должны начать, чтобы все узлы были упакованы вместе, но вы можете перемещать их, чтобы их было легче увидеть. Затем убедитесь, что все приложения, которые вы хотите прослушать, подключены к системе (в моем случае zynaddsubfx не подключался автоматически). NB: если у вас более старая версия QJackctl, вместо нее могут быть вкладки. Но это то же самое: у вас будут зеленые входы / выходы во вкладке «Джек», которые вы можете подключить вручную, фиолетовые будут во вкладке «Alsa», а красные - во вкладке «MIDI» ... но фактически все внешние MIDI-устройства, которые вы подключаете, появятся на вкладке Alsa, не знаю, почему «MIDI» полезен.

enter image description here

  1. Проблемы с MIDI: теоретически, чтобы получить MIDI, вы можете просто подключить фиолетовые входы к фиолетовым входам (или во вкладке Alsa в более старой версии, да, я знаю, странно, что вам нужно перейти на вкладку Alsa, а не Midi, чтобы получить Midi (!!!)). Однако оказалось, что по каким-то странным причинам zynaddsubfx имеет некоторые странные значения по умолчанию и будет отображаться как «Midi / red» вместо «Alsa / green», что делает невозможным подключение к внешнему midi-устройству. . Точнее, если вы запустите zynaddsubfx из командной строки без каких-либо параметров или с:
zynaddsubfx -I alsa -O jack

(что означает ввод из alsa, вывод через разъем), это не должно быть проблемой, вы сможете подключиться устройства MIDI:

enter image description here

Однако, если вы запустите его в графическом режиме, запись Jack по умолчанию автоматически запускает вместо этого zynaddsubfx -I jack -O jack ... И будет проблема, что zynaddsubfx вход будет создан на красной вкладке / MIDI, в то время как фактическое внешнее MIDI-устройство будет на фиолетовой вкладке / на вкладке Alsa. Это означает, что вы не сможете сопоставить свою внешнюю MIDI-клавиатуру с zynaddsubfx :

enter image description here

Поэтому решение состоит в том, чтобы запустить zynaddsubfx с помощью командной строки без параметров или с zynaddsubfx -I alsa -O midi и все должно работать!

0
ответ дан 5 January 2021 в 22:58

Ubuntu 20.04 , я обнаружил, что это смесь различных ответы

  1. Установите JACK и QJackCtl, а также приемник pulseaudio и источник для JACK
sudo apt-get install qjackctl pulseaudio-module-jack
  1. Запустите QJackCtl и в Setup ... -> Параметры -> Выполнить сценарий после запуска вставьте следующее:
pactl load-module module-jack-sink channels=2; pactl load-module module-jack-source; pacmd set-default-sink jack_out

enter image description here

  1. Запустите JACK, в QJackCtl к системе должны быть подключены PulseAudio Sink и Source. enter image description here

  2. В настройках Ubuntu выберите JACK Sink в качестве вывода

enter image description here

3
ответ дан 5 January 2021 в 22:58

Обновление 2020 г. Debian Buster. Надеюсь, применимо и к Ubuntu.

Больше не нужно использовать скрипт.

Установите pulseaudio-module-jack . Он содержит модуль, отвечающий за обнаружение, когда гнездо запускается и получает / опускается из / в него.

Вы можете проверить это в файле конфигурации pulseaudio:

/etc/pulse/default.pa

### Automatically connect sink and source if JACK server is present
.ifexists module-jackdbus-detect.so
.nofail
load-module module-jackdbus-detect channels=2
.fail
.endif

Убедитесь, что jackdbus запущен . Если для запуска jack используется qjackctl, установите флажок dbus в Setup -> Misc.

Это должно быть все, что нужно.

4
ответ дан 5 January 2021 в 22:58

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

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