ALSA doesn't speak to JACKD

View: New views
12 Messages — Rating Filter:   Alert me  

ALSA doesn't speak to JACKD

by HamRadio :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi,
I've recently bought an Edirol FA66 firewire sound interface and it
works fine with FFADO 2.0-rc2 on my 64 bit Debian testing box.
However I just can use it with jackd-aware software, whilst all other
programs, first of all web browsers with (Adobe's) flash plugin etc.
etc., continue to play only through my onboard AC97 soundcard via
ALSA.
I've googled searching a solution to route alsa output to jackd,
setting an .asoundrc like in:
http://alsa.opensrc.org/index.php/Jack_(plugin)
or also in:
http://ubuntuforums.org/showthread.php?t=644667
but with no result until now.
Anyone here have perhaps some more hints to get alsa route its output to jackd?
Thanks in advance for answering.


--
toglimi.hamradio@...
ANTI-SPAM: please cut "toglimi." for my real e-mail address.
Pentium4 3.00GHz, Linux 2.6.30.8-2-x86_64 on Debian GNU/Linux squeeze/sid
Registered Linux user #291116 http://counter.li.org
_______________________________________________
Linux-audio-user mailing list
Linux-audio-user@...
http://lists.linuxaudio.org/mailman/listinfo/linux-audio-user

Re: ALSA doesn't speak to JACKD

by Ray Rashif :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

2009/10/25 HamRadio <hamradio64@...>
Hi,
I've recently bought an Edirol FA66 firewire sound interface and it
works fine with FFADO 2.0-rc2 on my 64 bit Debian testing box.
However I just can use it with jackd-aware software, whilst all other
programs, first of all web browsers with (Adobe's) flash plugin etc.
etc., continue to play only through my onboard AC97 soundcard via
ALSA.
I've googled searching a solution to route alsa output to jackd,
setting an .asoundrc like in:
http://alsa.opensrc.org/index.php/Jack_(plugin)
or also in:
http://ubuntuforums.org/showthread.php?t=644667
but with no result until now.
Anyone here have perhaps some more hints to get alsa route its output to jackd?
Thanks in advance for answering.

 Could you paste the .asoundrc you have?

For eg., mine is standard because I don't use the plugin when I'm using external interface:

pcm.!default {
type plug
slave { pcm "jack" }
}

pcm.jack {
type jack
playback_ports {
0 alsa_pcm:playback_1
1 alsa_pcm:playback_2
}
capture_ports {
0 alsa_pcm:capture_1
1 alsa_pcm:capture_2
}
}

ctl.mixer0 {
type hw
card 0
}

And also ensure that the plugin exists:

~$ locate libasound_module_pcm_jack.so

_______________________________________________
Linux-audio-user mailing list
Linux-audio-user@...
http://lists.linuxaudio.org/mailman/listinfo/linux-audio-user

Re: ALSA doesn't speak to JACKD

by Jonathan E. Brickman-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Greetings, HamRadio.

Anyone here have perhaps some more hints to get alsa route its output to jackd?
Thanks in advance for answering.
I decided to try to figure out a good way, because my live performance hardware is also my all-purpose PC :-)  So far it seems to be working very well, and because of some of the below, I think my latency has not suffered. 

My first step was to identify the alphanumeric name (as opposed to the number!) of the sound device I want to use for everything.  This is done thusly:
$ cat /proc/asound/cards
I received the following from the above:
 0 [HD2            ]: Prodigy71HD2 - Audiotrak Prodigy HD2
                      Audiotrak Prodigy HD2 at 0xef80, irq 10

You should have at least two items, because both your motherboard and your Edirol are active.  If not, your Edirol is not configured completely to work with ALSA, and I'm afraid I cannot help :-)  Anyway, providing that both your motherboard sound and your Edirol are visible as items in /proc/asound/cards, you will have one alphanumeric name per sound system; the ones you want are in the square brackets [].  So my card's ALSA name is "HD2".

My second step was to test Jack applications using this alphanumeric name.  In qjackctl setup, in the "Interface:" field, usually it reads either (default) or a numeric device number, e.g., hw:0.   In my case, I set this field to read hw:HD2.  Suddenly all sound on the machine began behaving a bit better.  I don't know entirely why, but I suspect the numeric-to-alphanumeric translation in ALSA either runs slow or gets confused or both.  No matter; alphanumeric is far better, the numerics do definitely get confused when USB audio is plugged in et cetera.  I ran in AVLinux just like this for a while; AVLinux gives me an MPlayer which will do Jack, which is nice, but some annoyances remained.

My third step was to get the ALSA2Jack plugin in.  This is a module for ALSA, which permits it to send output to Jack.  The idea is that I need two audio data paths.  The first is for general latency-irrelevant applications, jack-incompatible, which will run App-->ALSA-->Jack-->ALSAdevice.  The second is for latency-critical applications, which will run App-->Jack--ALSAdevice.  If we set up the ALSA2Jack plugin's virtual device, as default audio device, and tell Jack to run all of its output direct to the ALSA sound device of explicit choice, we should get the best of both worlds.

So.  This being AVLinux (Debian), I had to install package "libasound2-plugins", to get the ALSA2Jack plugin in.

The last step was to vary Ray's .asoundrc a bit.  I am using the below.  The only significant change, is the ALSA mixer is set to point to the alphanumeric name of my ALSA sound device.  Probably should reboot after changing it, just in case.  On the other hand I use it as an /etc/asound.conf, which is just a bit different; I don't like the idea of sound configs changing at login, I want them nailed to the wall at boot :-)

J.E.B.

pcm.!default {
    type plug
    slave { pcm "jack" }
}

pcm.jack {
    type jack

    playback_ports {
    0 alsa_pcm:playback_1
    1 alsa_pcm:playback_2
    }

    capture_ports {
    0 alsa_pcm:capture_1
    1 alsa_pcm:capture_2
    }
}

ctl.mixer0 {
    type hw
    card HD2
}



_______________________________________________
Linux-audio-user mailing list
Linux-audio-user@...
http://lists.linuxaudio.org/mailman/listinfo/linux-audio-user

Re: ALSA doesn't speak to JACKD

by Pablo Fernandez-6 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message



On Sun, Oct 25, 2009 at 10:54 PM, Jonathan E. Brickman <jeb@...> wrote:
Greetings, HamRadio.

Anyone here have perhaps some more hints to get alsa route its output to jackd?
Thanks in advance for answering.

Hi! Another hint:

In Linux Mint 7 / ubuntu jaunty, I compiled (configure and make only) the alsa-plugins that I got from the alsa project page.
(First I installed libasound2-dev from the ubuntu repos).

Then I copied these two files (the .so alone was not enough) to /usr/lib/alsa-lib:
.../jack/libasound_module_pcm_jack.la
.../jack/.libs/libasound_module_pcm_jack.so

I created the .asoundrc file with this content:

  pcm.!default {
        type plug
        slave { pcm "jack" }
    }

    pcm.jack {
        type jack
        playback_ports {
            0 system:playback_1
            1 system:playback_2
        }
    }

It works for me to hear to youtube videos, jamendo and the like.

See

https://bugs.launchpad.net/ubuntu/+source/alsa-plugins/+bug/84900

Cheers, Pablo

_______________________________________________
Linux-audio-user mailing list
Linux-audio-user@...
http://lists.linuxaudio.org/mailman/listinfo/linux-audio-user

Re: ALSA doesn't speak to JACKD

by Jonathan E. Brickman-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Pablo, many thanks; you have just solved a problem for me :-)  A few of my system-generic audio was coming out distorted.  So here is what I have now.  So far, I have not been able to detect any reduction in latency or other performance, when compared to using jack-only audio.

My first step was to identify the alphanumeric name (as opposed to the number!) of the sound device I want to use for everything.  This is done thusly:
$ cat /proc/asound/cards
I received the following from the above:
 0 [HD2            ]: Prodigy71HD2 - Audiotrak Prodigy HD2
                      Audiotrak Prodigy HD2 at 0xef80, irq 10

You should have at least one item representing your sound card.  If not, your card is not configured completely to work with ALSA, and I'm afraid I cannot help :-)  Anyway, providing that your desired device is listed in /proc/asound/cards, it will have an alphanumeric name; the one you want is in the square brackets [].  So my card's ALSA name is "HD2".

My second step was to test Jack applications using this alphanumeric name.  In qjackctl setup, in the "Interface:" field, usually it reads either (default) or a numeric device number, e.g., hw:0.   In my case, I set this field to read hw:HD2.  Suddenly all sound on the machine began behaving a bit better.  I don't know entirely why, but I suspect the numeric-to-alphanumeric translation in ALSA either runs slow or gets confused or both.  No matter; alphanumeric is far better, the numerics do definitely get confused when USB audio is plugged in et cetera.  I ran in AVLinux just like this for a while; AVLinux gives me an MPlayer which will do Jack, which is nice, but some annoyances remained.

My third step was to get the ALSA2Jack plugin in.  This is a module for ALSA, which permits it to send output to Jack.  The idea is that we need two audio data paths.  The first is for general latency-irrelevant applications, jack-incompatible, which will run App-->ALSA-->Jack-->ALSAdevice.  The second is for latency-critical applications, which will run App-->Jack-->ALSAdevice.  If we set up the ALSA2Jack plugin's virtual device, as default audio device, and tell Jack to run all of its output direct to the ALSA sound device of explicit choice, we should get the best of both worlds.

So.  This being AVLinux (Debian), I then had to install package "libasound2-plugins", to get the ALSA2Jack plugin in.  Found it in Synaptic.

The last step was to implement an ALSA configuration file handling ALSA2Jack and also the Jack device IDs.  I am now using the below.  The only significant change you will need, is the ALSA mixer should be set to point directly to the alphanumeric name of my ALSA sound device.  Probably should reboot after changing it, just in case.  On the other hand, unlike many who use ~/.asoundrc, I use it as an /etc/asound.conf, which is just a bit different; I don't like the idea of sound configs changing at login, I want them nailed to the wall at boot :-)

J.E.B.

pcm.!default {
    type plug
    slave { pcm "jack" }
}

pcm.jack {
        type jack
        playback_ports {
            0 system:playback_1
            1 system:playback_2
        }
        capture_ports {
            0 system:capture_1
            1 system:capture_2
        }
}

ctl.mixer0 {
    type hw
    card HD2
}


_______________________________________________
Linux-audio-user mailing list
Linux-audio-user@...
http://lists.linuxaudio.org/mailman/listinfo/linux-audio-user

Re: ALSA doesn't speak to JACKD

by HamRadio :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Many thanks to everyone for your valuable suggestions.
My problem was due to missing libasound2-plugins package.
Now alsa output is correctly routed to jack, but the perfect setup
should be having in alsamixer (and equivalent mixers) one control for
feeding one soundcard and another control for feeding the other.
I wonder if this could be achieved...
_______________________________________________
Linux-audio-user mailing list
Linux-audio-user@...
http://lists.linuxaudio.org/mailman/listinfo/linux-audio-user

Re: ALSA doesn't speak to JACKD

by Esben Stien :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Pablo Fernandez <pablo.fbus@...> writes:

> Anyone here have perhaps some more hints to get alsa route its output
> to jackd?

Yes, you use pulseaudio, which can exit through JACK. The ALSA JACK
plugin has a very bad reputation and has never really worked great.

Pulseaudio will then show up as a JACK client so all your ALSA apps will
transmit to pulseaudio, which then exits in JACK land.

--
Esben Stien is b0ef@e     s      a            
         http://www. s     t    n m
          irc://irc.  b  -  i  .   e/%23contact
           sip:b0ef@   e     e
           jid:b0ef@    n     n
_______________________________________________
Linux-audio-user mailing list
Linux-audio-user@...
http://lists.linuxaudio.org/mailman/listinfo/linux-audio-user

ALSA to pulseaudio

by Jonathan E. Brickman-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message


Anyone here have perhaps some more hints to get alsa route its output
to jackd?
    

Yes, you use pulseaudio, which can exit through JACK. The ALSA JACK
plugin has a very bad reputation and has never really worked great. 

Pulseaudio will then show up as a JACK client so all your ALSA apps will
transmit to pulseaudio, which then exits in JACK land.

  
Well, it is clear that I have to do something different than pure Jack/ALSA.  I'll try Pulse, although Pulse's reputation for low latency isn't exactly stellar.  What should my asound.conf (.asoundrc) look like, to route all ALSA apps' output through Pulse?

J.E.B.


_______________________________________________
Linux-audio-user mailing list
Linux-audio-user@...
http://lists.linuxaudio.org/mailman/listinfo/linux-audio-user

Re: ALSA doesn't speak to JACKD

by Jonathan E. Brickman-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message


Anyone here have perhaps some more hints to get alsa route its output
to jackd?
    

Yes, you use pulseaudio, which can exit through JACK. The ALSA JACK
plugin has a very bad reputation and has never really worked great. 

Pulseaudio will then show up as a JACK client so all your ALSA apps will
transmit to pulseaudio, which then exits in JACK land.
  
Well.  I tried three different configurations cited in various places on the WWW; nothing worked.  Can you recommend a nonvague step-by-step? 

J.E.B.


_______________________________________________
Linux-audio-user mailing list
Linux-audio-user@...
http://lists.linuxaudio.org/mailman/listinfo/linux-audio-user

Re: ALSA to pulseaudio

by Paul Davis :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On Tue, Oct 27, 2009 at 7:15 PM, Jonathan E. Brickman
<jeb@...> wrote:

> Well, it is clear that I have to do something different than pure
> Jack/ALSA.  I'll try Pulse, although Pulse's reputation for low latency
> isn't exactly stellar.

the ALSA jack plugin has poor latency too. anything that has to
intermediate between a "push" model API (where the app gets to decide
when and how much data to read/write) and a "pull" mode (where
something other than the app makes those decisions) has to have enough
buffering to deal with the app's intentional and unintentional
behaviour. it probably isn't as latency inducing as pulse's default,
but its not a replacement for using JACK directly.

> What should my asound.conf (.asoundrc) look like, to
> route all ALSA apps' output through Pulse?

if you distro didn't set this up and you want it to work, i suggest
you switch distros to one that does. you may get advice from this or
other lists about how to do this, but configuring PulseAudio to be the
default audio I/O system is a challenge most for distro packagers, not
users. if you then add in the fact that you actually want pulse to
talk to JACK ... now you're out of even distro packaging territory.

what you are trying to do is just not recommended practice. JACK
targets pro-audio/music creation workflows. it is not intended to be a
desktop sound server.
_______________________________________________
Linux-audio-user mailing list
Linux-audio-user@...
http://lists.linuxaudio.org/mailman/listinfo/linux-audio-user

Re: ALSA to pulseaudio

by Fons Adriaensen-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On Tue, Oct 27, 2009 at 10:29:10PM -0400, Paul Davis wrote:

> On Tue, Oct 27, 2009 at 7:15 PM, Jonathan E. Brickman
> <jeb@...> wrote:
>
> > Well, it is clear that I have to do something different than pure
> > Jack/ALSA.  I'll try Pulse, although Pulse's reputation for low latency
> > isn't exactly stellar.
>
> the ALSA jack plugin has poor latency too. anything that has to
> intermediate between a "push" model API (where the app gets to decide
> when and how much data to read/write) and a "pull" mode (where
> something other than the app makes those decisions) has to have enough
> buffering to deal with the app's intentional and unintentional
> behaviour. it probably isn't as latency inducing as pulse's default,
> but its not a replacement for using JACK directly.

If ALSA gets its part right, the resulting latency will
just depend on how the app uses the ALSA interface, as it
does for a normal ALSA device. If the app does so in the
same way as e.g. Jack's backend, there should not be any
additional latency at all.

If ALSA can make a low-latency interface on top of an
interrupt routine or thread that runs every period and
is triggered by the soundcard, then (as a Jack client)
it should be able to provide the same low-latency
interface on top of the process callback which just
looks like a soundcard interrupt handler in user space.
There is no essential difference between the two.

Ciao,

--
FA
_______________________________________________
Linux-audio-user mailing list
Linux-audio-user@...
http://lists.linuxaudio.org/mailman/listinfo/linux-audio-user

Re: ALSA to pulseaudio

by Esben Stien :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

"Jonathan E. Brickman" <jeb@...> writes:

> What should my asound.conf (.asoundrc) look like, to route all ALSA
> apps' output through Pulse?

This is like the first line in the pulseaudio documentation.

http://www.pulseaudio.org/wiki/PerfectSetup#ALSAApplications

--
Esben Stien is b0ef@e     s      a            
         http://www. s     t    n m
          irc://irc.  b  -  i  .   e/%23contact
           sip:b0ef@   e     e
           jid:b0ef@    n     n
_______________________________________________
Linux-audio-user mailing list
Linux-audio-user@...
http://lists.linuxaudio.org/mailman/listinfo/linux-audio-user