jack with pulseaudio

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

jack with pulseaudio

by Patrick Shirkey :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi,

I have been researching the issues with pulse and jack working together
seamlessly.

I have found some interesting info and am happy to see that jackdbus
already has support for notifying pulseaudio to suspend itself and allow
jack to access the default sound card or assigned device.

I have also been informed that there is a useful set of api functions in
pulseaudio that can be called directly to suspend PA, unload a
sink/source and load a new sink/source. I am wondering if there is any
specific reason other than no one having bothered to do it, that this
has not been included as a compile time option for jack



Cheers.

--

Patrick Shirkey
Boost Hardware Ltd


_______________________________________________
Jack-Devel mailing list
Jack-Devel@...
http://lists.jackaudio.org/listinfo.cgi/jack-devel-jackaudio.org

Re: jack with pulseaudio

by Stéphane Letz :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message


Le 27 mai 09 à 20:10, Patrick Shirkey a écrit :

> Hi,
>
> I have been researching the issues with pulse and jack working  
> together seamlessly.
>
> I have found some interesting info and am happy to see that  
> jackdbus already has support for notifying pulseaudio to suspend  
> itself and allow jack to access the default sound card or assigned  
> device.


This is not "jackdbus" by itself, but the fact that the ALSA JACK  
backend now uses some D-Bus based "reservation" code (defined by  
PulseAudio developers). When the ALSA JACK backend starts, it ask for  
the card and PA has to release it. When the ALSA driver stops, it  
gives back the card.

So yes this reservation code is activated when JACK2 in compiled with  
D-Bus, but it is not coded in the "jackdbus" executable.

>
> I have also been informed that there is a useful set of api  
> functions in pulseaudio that can be called directly to suspend PA,  
> unload a sink/source and load a new sink/source. I am wondering if  
> there is any specific reason other than no one having bothered to  
> do it, that this has not been included as a compile time option for  
> jack

Please be more specific on what could be done.

Stephane
_______________________________________________
Jack-Devel mailing list
Jack-Devel@...
http://lists.jackaudio.org/listinfo.cgi/jack-devel-jackaudio.org

Re: jack with pulseaudio

by Patrick Shirkey :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message


Patrick Shirkey
Boost Hardware Ltd


On 05/28/2009 03:22 AM, Stéphane Letz wrote:

>
> Le 27 mai 09 à 20:10, Patrick Shirkey a écrit :
>
>> Hi,
>>
>> I have been researching the issues with pulse and jack working
>> together seamlessly.
>>
>> I have found some interesting info and am happy to see that jackdbus
>> already has support for notifying pulseaudio to suspend itself and
>> allow jack to access the default sound card or assigned device.
>
>
> This is not "jackdbus" by itself, but the fact that the ALSA JACK
> backend now uses some D-Bus based "reservation" code (defined by
> PulseAudio developers). When the ALSA JACK backend starts, it ask for
> the card and PA has to release it. When the ALSA driver stops, it
> gives back the card.
>
> So yes this reservation code is activated when JACK2 in compiled with
> D-Bus, but it is not coded in the "jackdbus" executable.
>
>>
>> I have also been informed that there is a useful set of api functions
>> in pulseaudio that can be called directly to suspend PA, unload a
>> sink/source and load a new sink/source. I am wondering if there is
>> any specific reason other than no one having bothered to do it, that
>> this has not been included as a compile time option for jack
>
> Please be more specific on what could be done.
>

Basically I'm thinking of adding a couple of calls to remove the
existing pulse sink/source modules and insert jack sink/source modules
when started and vice versa if jack is stopped.

It would mean anyone wanting to keep pulseaudio alive and streaming
while jack is running wouldn't have to jump through hoops, run shell
scripts or setup any pa config files.



--
Patrick Shirkey
Boost Hardware Ltd.

_______________________________________________
Jack-Devel mailing list
Jack-Devel@...
http://lists.jackaudio.org/listinfo.cgi/jack-devel-jackaudio.org

Re: jack with pulseaudio

by Lee Revell :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On Wed, May 27, 2009 at 5:28 PM, Patrick Shirkey
<pshirkey@...> wrote:
> Basically I'm thinking of adding a couple of calls to remove the existing
> pulse sink/source modules and insert jack sink/source modules when started
> and vice versa if jack is stopped.
>
> It would mean anyone wanting to keep pulseaudio alive and streaming while
> jack is running wouldn't have to jump through hoops, run shell scripts or
> setup any pa config files.

Just out of curiosity, what's the use case you had in mind?  I would
not expect that many JACK users want to hear system sounds once they
fire up JACK.

I would certainly hope this auto-patching would be disabled by default.

Lee
_______________________________________________
Jack-Devel mailing list
Jack-Devel@...
http://lists.jackaudio.org/listinfo.cgi/jack-devel-jackaudio.org

Re: jack with pulseaudio

by Patrick Shirkey :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message


On 05/28/2009 08:02 AM, Lee Revell wrote:
On Wed, May 27, 2009 at 5:28 PM, Patrick Shirkey
pshirkey@... wrote:
  
Basically I'm thinking of adding a couple of calls to remove the existing
pulse sink/source modules and insert jack sink/source modules when started
and vice versa if jack is stopped.

It would mean anyone wanting to keep pulseaudio alive and streaming while
jack is running wouldn't have to jump through hoops, run shell scripts or
setup any pa config files.
    

Just out of curiosity, what's the use case you had in mind?  I would
not expect that many JACK users want to hear system sounds once they
fire up JACK.

  

IMO anyone who runs pulse and jack at the same time wants to hear system sounds through master i/o or at least a default jack-pulse i/o. If they don't then they can: mute the pulse stream, disable the system sounds, run with out pulse support or kill pulse completely. Anyone who doesn't want pulse support will have a good reason for that and already has many options to get the job done.

However for the larger majority of normal desktop users who want to have a seamlessly functioning audio system that doesn't make them jump through hoops to for example use a jack'ed app and still receive skype phone calls and email notifications then the current situation is a complete mess.



I would certainly hope this auto-patching would be disabled by default.

  

I actually think we should enable it by default as "normal" user should not be expected to enable pulse to have seamless integration but my main concern is that jack can handle signalling to PA to auto disconnect existing sink/source and reconnect to jack sink/source and vice versa. The api calls are available and the dbus system already accomplishes half of the functionality so I believe it should be a relatively trivial step to implement the rest.

ex.

if(pulse flag is set && pulse is running)
{
    pasuspend
    pactl disconnect existing sink/source
    pactl connect jack sink/source
}


If (jack is closing && pulse flag is set)
{
    pactl disconnect jack sink/source
    pactl connect  default pulse sink/source
    paunsuspend
}


Please note that Lennart has now said that pulseaudio api calls will eventually be discarded in favor of dbus control so I guess that implementing them directly to jack will cause breakage at some point. Another option I have suggested is a "pajackcontrol" applet that could be compiled with pulseaudio and provide a simple api for jack to access directly to be called by jack at startup. I prefer for core jack not to be tied to dbus when the existing api calls already work but Lennart prefers to use dbus instead.

I assume that means he will also implement dbus support into the existing control applets in the future.


Cheers.


Patrick Shirkey
Boost Hardware Ltd




_______________________________________________
Jack-Devel mailing list
Jack-Devel@...
http://lists.jackaudio.org/listinfo.cgi/jack-devel-jackaudio.org