วิธีการใช้ JACK และ Pulseaudio / ALSA ในเวลาเดียวกันบนอุปกรณ์เสียงเดียวกัน


30

เมื่อใดก็ตามที่ฉันเปิดตัวไฮโดรเจนมันจะแยกเสียงของฉันในแอปพลิเคชันอื่น ๆ ทั้งหมดที่ใช้ Pulse ตัวอย่างเช่นฉันจะไม่สามารถเล่นวิดีโอใน Chrome ได้หลังจากเปิดตัวไฮโดรเจนหนึ่งครั้งจนกว่าฉันจะรีสตาร์ทพีซีหรือโหลด sudo alsa force-reload ฉันพบคนที่มีปัญหาที่คล้ายกัน แต่ไม่มีคู่มือที่แท้จริงในการแก้ไขปัญหานี้มักจะมีลิงก์ไปยังhttp://jackaudio.org/pulseaudio_and_jack (ซึ่งย้ายไปที่http://jackaudio.org/faq/pulseaudio_and_jack.html ) ฉัน กำลังใช้ Ubuntu Studio 14.04 64 บิต

ทางเลือกถ้าเป็นไปไม่ได้ที่จะบรรลุอย่างแท้จริงใครบางคนสามารถบอกฉันถึงวิธีการใช้แจ็คกับการ์ดเสียงหนึ่งและพัลส์อีกอันหนึ่งได้หรือไม่? วิธีนี้ฉันสามารถเสียบการ์ดเสียง USB ได้เฉพาะเมื่อฉันต้องการ JACK

โปรดอย่าทำให้ฉันใช้ windows


หลังจากการวิจัยเพิ่มเติมดูเหมือนว่าจะมีวิธีการบางอย่างในการทำงานให้ดูที่นี่: github.com/jackaudio/jackaudio.github.com/wiki/แต่ในกรณีของฉันสิ่งเหล่านี้ฆ่าเอาต์พุตเสียงทั้งหมดอย่างถาวร
Andreas Hartmann

คำตอบ:


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 -> "ความล้มเหลว: ไม่มีเอนทิตี้ดังกล่าว"
Karl Morrison

1
สิ่งนี้ใช้ได้สำหรับฉันเมื่อโซลูชันอื่นไม่ได้ขอบคุณมาก!
malte

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 answer
naktinis

17

วิดีโอ Youtube นี้: "Jack และ PulseAudio Together as Friends - Linux"ดูเหมือนจะมีคำตอบ:

กุญแจสำคัญในการแก้ปัญหาดูเหมือนจะทำให้แน่ใจว่าแจ็ค pulseaudio-module-module ได้รับการติดตั้งด้วย:

aptitude install pulseaudio-module-jack

จากนั้น sudo แก้ไขไฟล์ /etc/pulse/default.pa เพื่อรวมสองบรรทัดภายใต้ส่วนโหลดเสียงไดรเวอร์ด้วยตนเอง:

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

ถ้าอย่างนั้น - ฉันคิดว่า - รีสตาร์ท pulseaudio ฉันเพิ่งรีสตาร์ทเครื่อง PC (ขี้เกียจฉันรู้) และมันทำงานได้ดี ... ทำให้ Ardor ไม่ได้ฆ่า pulseaudio อีกต่อไปพวกเขาเล่นด้วยกันอย่างมีความสุข


BTW คุณสามารถเพิ่มโมดูลได้ทันทีโดยใช้pactl load-module ...
0__

9

แค่แสวงหารางของ Jack และ Pulse อยู่ร่วมกับ 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"

ตัวเลือก ชื่อ sink สำหรับ 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

มันทำงานอย่างไร

ตอนนี้ใน boot PC ทำงานร่วมกับ PulseAudio เท่านั้น การทำงานอัตโนมัติทั้งหมดโดยไม่มีแจ็ค

หลังจากเปิดตัว Qjackctl

  1. สคริปต์เริ่มต้น Qjackctl ระงับการ์ดเสียงหลักใน Plseuaudio และอนุญาตให้ Jackj เข้าถึง "pactl suspend-sink alsa_output.pci-0000_00_1b.0.analog-stereo 1"
  2. แจ็คเริ่มต้นกับ d-bus "jack_control start"
  3. พัลส์ตรวจจับแจ็คโดยอัตโนมัติเริ่มต้นที่ D-Bus และโหลดแจ็คซิงค์และแหล่งแจ็ค
  4. Qjackctl หลังจากสคริปต์เริ่มต้นเปลี่ยน sink เริ่มต้นใน Pulse เป็น jack_out (ฉันพบว่ามันไม่ได้ทำเอง) "pactl set-default-sink jack_out" (ตอนแรกมันดูไม่จำเป็นเพราะไคลเอนต์ที่ทำงานอยู่ PA ทั้งหมดเปลี่ยนไปเป็น sink ใหม่ แต่แอพใหม่ติดอยู่ที่ sink ที่ถูกระงับโดยไม่มีคำสั่งนี้)

ดังนั้นระบบกำหนดค่าใหม่ให้ใช้ "Pulse ด้านบนของ Jack" (ที่นั่นฉันข้ามการระงับฮาร์ดแวร์ชั่วคราวเพราะฉันไม่ได้ใช้มัน)

หากไม่ได้ทำเครื่องหมาย "หยุด JACK audio server บน application exti" ฉันสามารถปิด Qjackctl และรันใหม่อีกครั้งโดยไม่รบกวนการตั้งค่า

หลังจากหยุด Jack โดย Qjackctl ทุกคนกลับไปที่ Pulse ที่กระจัดกระจาย!

  1. Jackd หยุดโดย Qjackctl บน dbus - ตัวเลือก "Enable D-bus interface"
  2. jack-source และ jack-sink ถูกลบออกจาก Pulseaudio โดยอัตโนมัติโดย d-bus
  3. ซิงค์เริ่มต้นใน Pulse Audio เปลี่ยนเป็นการ์ดเสียงเนื่องจากแจ็คเอาต์หายไป
  4. Qjackctl หลังจากสคริปต์ Shutdown เปิดใช้งานการ์ดเสียงกลับมาใน Pulseaudio "pactl suspend-sink 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)

คำตอบนี้ไม่ชัดเจนเกี่ยวกับวิธีการกำหนดค่า มันทำผ่านเพียงอย่างเดียวQjackctl? หากเป็นเช่นนั้นไฟล์ใดบ้างที่มีการตั้งค่าคอนฟิกและพวกเขาจะตั้งค่าอย่างไร
Faheem Mitha

การกำหนดค่าเริ่มต้นทำผ่านตัวจัดการแพคเกจ jackg start / stop reconfiguration ผ่านสคริปต์ jack-audio-connection-kit-dbus และสคริปต์ Qjackctl
mmv-ru

ฉันเห็น. รายละเอียดบางอย่างในบรรทัดเหล่านั้นจะเป็นประโยชน์อย่างยิ่ง รายละเอียดเหล่านี้จะหายไปจากคำตอบอื่น ๆ และข้อมูลในเน็ต ฉันไม่ต้องการกำหนดค่าสิ่งต่าง ๆ ผ่านทาง GUI ถ้าเป็นไปได้ ปกติคุณอยู่ในการแชทของ AU หรือไม่? ถ้าเป็นเช่นนั้นเราสามารถพูดคุยได้ที่นั่น
Faheem Mitha

Qjackctl สามารถกำหนดค่าผ่าน gui เป็นภาพหน้าจอที่แสดง ในการตอบกลับฉันแสดงส่วนของ. config / rncbc.org / QjackCtl.conf เพื่อแสดงสคริปต์เต็มบรรทัด
mmv-ru

ชื่อเสียงไม่เพียงพอที่จะเชิญให้แชท เชิญฉัน.
mmv-ru

7
  • ปัญหาคือ Hydrogen (as Ardor) เปิดตัว jackd เมื่อเริ่มต้น แต่อย่าปิดมันที่ exit:
    แต่คุณสามารถทำงานkillall jackdใน terminal หลังจาก Hydrogen exit

  • วิธีที่ซับซ้อนในการใช้ซอฟต์แวร์ Jack และ pulseaudio ในเวลาเดียวกันคือการติดตั้ง "pulseaudio-module-jack" (เช่นติดตั้ง qjackctl (gui สำหรับ jackd) และ pavucontrol หากไม่มี) เริ่มต้นใหม่ pulseaudio -kPulseAudio
    ตอนนี้ปิดแอปเสียง (แจ็คและพูลซีสตูดิโอ)
    เรียกใช้แจ็คโดยใช้ qjackctl (คลิกปุ่มเริ่ม) ( ต้องเลือกตัวเลือก dbus ในการตั้งค่า qjackctl แท็บสุดท้าย )
    ในแท็บ "อุปกรณ์เอาท์พุท" ของ Pavucontrol ปุ่ม "อุปกรณ์เริ่มต้น" ของ
    clic green ใกล้กับ "แจ็คซิงก์" ตอนนี้ซอฟต์แวร์ pulseaudio และ Hydrogen ควรทำงานในเวลาเดียวกัน

  • ใช้ qjackctl ในแท็บ "การตั้งค่า" แรกคุณสามารถเปลี่ยนอุปกรณ์เสียง Jackd ได้


3

มันอาจจะง่ายกว่าตอนนี้ สิ่งที่ได้ผลสำหรับฉันในวันนี้เพื่อตอบสนองความต้องการขั้นพื้นฐานของฉันหลังจากการติดตั้ง Linux Mint 18.2 ใหม่ (ฐานแพ็กเกจ Ubuntu 16.04) คือ:

  1. ใช้ Synaptic เพื่อติดตั้ง QSynth และ QJackCtl

  2. คัดลอกแบบอักษรเสียงที่ต้องการลงในโฟลเดอร์ที่เหมาะสมเช่น /usr/share/sounds/sf2/

  3. ในการติดตั้ง QSynth : ภายใต้เสียงการเปลี่ยนแปลงแท็บDriver Audioเพื่อPulseAudio

  4. ในการตั้งค่า QSynth : ภายใต้SoundFonts : เปิด ... และเลือกหนึ่งรายการตามต้องการ

  5. ในการตั้งค่า QJackCtl> การตั้งค่า> ขั้นสูง :

    คำนำหน้าเซิร์ฟเวอร์: pasuspsender - /usr/bin/jackd

  6. ในการตั้งค่า QJackCtl> ตัวเลือก :

    เรียกใช้งานสคริปต์หลังจากเริ่มต้น:

    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 และเปิดการตั้งค่าเสียงของคุณ คุณจะพบพอร์ตเอาต์พุตเสียงพัลส์แจ็คของพัลส์ เลือกและระบบทั้งหมดจะซิงค์ หากคุณหยุดแจ็คเซิร์ฟเวอร์ / แจ็คแจ็คเสียงจะกลับไปที่พอร์ตเริ่มต้นของคุณอีกครั้ง

นี่คือมุมมองโดยรวม


0

แน่นอนว่าคนหนึ่งจะต้องการทั้ง pulseaudio และแจ็คหากพวกเขามาถึงจุดที่พวกเขาต้องการแจ็คเพราะผู้เล่นสื่อเบราว์เซอร์ส่วนใหญ่ไม่รู้จักแจ็ค! ..น่าเสียดาย.

ฉันยังคงเห็นข้อเสนอแนะของการมีเพียงหนึ่งของพวกเขาทำงานในเวลาที่ดูเหมือนว่าฉันจะประนีประนอมสาหัส เป็นเรื่องที่น่าเศร้าในความคิดของฉันที่ว่าบริการทั้งสองอย่างนี้คือแจ็คและ pulseaudio แม้ว่าทั้งสองฟังก์ชั่นของพวกเขาจะได้รับการจัดการอย่างไม่ดีโดย kxstudio อย่างน้อยก็เป็นสิ่งที่ฉันใช้

ดังนั้นจะเกิดอะไรขึ้น:

  • แจ็คไม่สามารถเริ่มในขณะที่ pulseaudio กำลังทำงาน (และใช้ไดรเวอร์การ์ดเสียงที่ต้องการใช้ซึ่งมีความยุติธรรมเพียงพอ) ดังนั้นจึงต้องเริ่มต้นก่อน

  • pulseaudio จะต้องชี้ไปที่แจ็คทั้งคู่และวิ่ง

ค่อนข้างง่าย .. ด้วยเหตุผลบางอย่างฉันรู้สึกเศร้าไม่รู้จบเพราะมัน ..

ครั้งแรกที่ฉันคิดว่าเพราะ pulseaudio 4.0 ดูเหมือนจะบั๊กกี้และเลอะไดรเวอร์ alsa ดังนั้นในบางสถานการณ์มันจะถูกล็อกและดังนั้นแจ็คจึงไม่สามารถเริ่มได้แม้ว่า pulseaudio จะไม่ทำงาน (กล่าวว่าล้มเหลวในการตั้งค่าพารามิเตอร์การจับภาพหรือ smtg เช่นนั้น)

สิ่งที่ฉันทำในที่สุดคือ

  • ลบทั้งแจ็คและ pulseaudio อย่างสมบูรณ์ (ด้วย find และ rm -rf: D หลังจาก apt-get purge)
  • ติดตั้ง pulseaudio 11 (จากแหล่งที่มา)
  • แจ็คที่ติดตั้งแล้วและเป็น libs (libjack-dev)

ตามลำดับนี้และในที่สุดฉันก็ให้พวกเขาทำงานตามปกติผ่าน qjackctl ซึ่งทำให้แน่ใจว่าพวกเขาเริ่มต้นในลักษณะที่ถูกต้อง (โหลดแจ็คซิงค์ใน pulseaudio และตั้งเป็นค่าเริ่มต้น)

Btw ฉันเห็นจังหวะแนะนำแทนและฉันไม่เข้าใจว่าทำไมฉันถึงดูเหมือนขยะเมื่อเทียบกับ qjackctl

อย่างไรก็ตามปัญหาคือการเริ่มต้นแจ็คโดยใช้ qjackctl ใช้เวลาสักครู่และเพื่อหลีกเลี่ยงเวลารอในการบู๊ตแต่ละครั้งคุณสามารถใช้คุณสมบัติช่วยชีวิตนี้ของ kde ซึ่งเป็นการโหลดเซสชันก่อนหน้า ตรวจสอบให้แน่ใจว่าคุณไม่มี qjackctl ในการเริ่มระบบอัตโนมัติเนื่องจากคุณจะจบลงด้วยอีกหนึ่งอินสแตนซ์ในแต่ละการรีบูตโดยไม่คำนึงถึงการตั้งค่า singleton = true (buggy buggy ตลอดทั้งคืน)

นี่เป็นเพราะฉันไม่ได้รู้สึกยุ่งกับมันอีกต่อไปเช่นการเขียนสคริปต์แบบสมาร์ทที่จะทำให้แน่ใจว่าแจ็คเริ่มต้น pulseaudio ลง (หรือหยุดชั่วคราว) และตรวจสอบว่าเริ่มต้นอย่างถูกต้องจากนั้นเริ่ม pulseaudio โมดูลโหลดเป็นต้น

มิฉะนั้นการพึ่งพาระบบปฏิบัติการเพื่อเริ่ม daemons และโหลดการกำหนดค่าอย่างถูกต้องจะเป็นสถานการณ์ปกติ (สุขภาพดี) แต่ดูเหมือนจะไม่เกิดขึ้น

มีความสุข..


0

ฉันใช้งาน Linux Mint 19.1 หลังจากลองใช้วิธีแก้ปัญหาต่าง ๆ ทั้งหมดสิ่งต่าง ๆ ยังคงไม่ทำงานอย่างราบรื่นสำหรับฉัน

ในที่สุดฉันก็สามารถแก้ไขปัญหาทั้งหมดของฉันได้โดยทำตามขั้นตอน / คำแนะนำในวิดีโอ: ลิงก์

โดยทั่วไปจะติดตั้งแอปพลิเคชันจากที่เก็บ Kxstudio และมีสคริปต์เพื่อกำหนดค่าทุกอย่างอย่างสมบูรณ์เมื่อเริ่มต้น

เป้าหมายสุดท้ายของฉันคือสามารถบันทึกอินพุตผ่านอินเทอร์เฟซของฉัน (Scarlett solo) ในขณะที่สามารถเรียกใช้ / บันทึกเสียงจากแอปพลิเคชันอื่น (เดสก์ท็อปเบราว์เซอร์)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.