Re: Jack Problems
Holger Marzen <[email protected]>
| Newsgroups | gmane.comp.audio.jackit |
|---|---|
| Message-ID | <[email protected]> |
On Fri, 22 Mar 2019, [email protected] wrote: > Holger, I have a question regarding your very good instructions below. > > As far as I know Alsa handles all the 1818VSL and other USB interface > connections.. > How is that going to influence my abilty to use audio interfaces as now alsa > wont be able to access the usb ports directly when I follow the link advice > you included in your message. If I understand it right ALSA has "2 levels": The low level stuff, "the driver", and high level stuff "the API for clients". If you have an USB interface then jackd uses the ALSA driver, iow "backend": jackd -dalsa ... Without Pulseaudio you can redirect ALSA clients to jackd via ~./asoundrc or system wide files: -- snip --- pcm.!default { type plug slave { pcm "rawjack" } } pcm.rawjack { type jack playback_ports { 0 system:playback_1 1 system:playback_2 } capture_ports { 0 system:capture_1 1 system:capture_2 } } pcm.jack { type plug slave { pcm "rawjack" } hint { description "JACK Audio Connection Kit" } } -- snap -- So jackd can "own" the card and ALSA-clients can use the ALSA-API. When Pulseaudio is installed there will be a similar redirection installed, systemwide. All ALSA-clients are redirected to Pulseaudio. If Pulseaudio outputs to jackd then all clients can output their sound. jack-client -> jackd -> audio interface pulseaudio-client -> Pulseaudio -> jackd -> audio interface ALSA-client -> Pulseaudio -> jackd -> audio interface You have all the benefits and you can record the sound of Youtube videos or SoundClout with Audacity if you choose the correct jackd-port. You can even have several jack_thru instances to have "fixpoints" where you can tap the signal. I run a jack_thru named "main" (1st arg) as central point where I can tap the signal. Here an example with a running Qtractor: http://marzen.de/tmp/jack_flow_simple.png This way I have ALWAYS that central point regardless if and how many audio applications are running. To maintain the connections of started applications I have jack-plumbing active with the following ruleset ~/.jack-plumbing As you can see in the last lines: Whenever I start ebumeter it gets automagically connection to "main" (a jack_thru instance) and processes every client's audio since every client will be redirected to "main". If you have more questions that might not be of interest for the whole mailing list you can email me directly. My other PC in the home studio has a more complicated setup since I use 2 jackd instances: one with a big latency for Qtractor sessions and one with a small latency for Guitarix, which sends its analog output to the first. -- snip -- (connect "main:output_1" "system:playback_1") (connect "main:output_2" "system:playback_2") (disconnect "system:capture_.*" "main:input_.*") (connect "alsa-jack\..*jackP\..*:out_000" "main:input_1") (connect "alsa-jack\..*jackP\..*:out_001" "main:input_2") (disconnect "alsa-jack\..*jackP\..*:out_.*" "system:playback_.*") (connect "Clementine:out_jackaudiosink-.*_1" "main:input_1") (connect "Clementine:out_jackaudiosink-.*_2" "main:input_2") (disconnect "Clementine:out_jackaudiosink-.*" "system:playback_.*") (connect "Qtractor:Master/out_1" "main:input_1") (connect "Qtractor:Master/out_2" "main:input_2") (disconnect "Qtractor:Master/out_.*" "system:playback_.*") (connect "ardour:Master/audio_out 1" "main:input_1") (connect "ardour:Master/audio_out 2" "main:input_2") (disconnect "ardour:Master/audio_out.*" "system:playback_.*") (connect "MPlayer.*:out_0" "main:input_1") (connect "MPlayer.*:out_1" "main:input_2") (disconnect "MPlayer.*:out_.*" "system:playback_.*") (connect "PortAudio:out_.*[13579]" "main:input_2") (connect "PortAudio:out_.*[02468]" "main:input_1") (disconnect "PortAudio:out_.*" "system:playback_.*") (connect "PulseAudio.*:front-left" "main:input_1") (connect "PulseAudio.*:front-right" "main:input_2") (disconnect "PulseAudio.*:.*" "system:playback_.*") (connect "netjack:capture_1" "main:input_1") (connect "netjack:capture_2" "main:input_2") (connect "main:output_1" "ebumeter:in.L") (connect "main:output_2" "ebumeter:in.R") -- snap --