[LAU] What happens (or not) if one use the active d-bus interface option in QjackCtl ?

Len Ovens len at ovenwerks.net
Sat Oct 10 14:19:06 UTC 2015


On Sat, 10 Oct 2015, fred wrote:

> What happens (or not) if one use the active d-bus interface option in QjackCtl ?
> 
> Maybe, with a good luck, someone in the list will invest some time to explain,
> or point to a link that explains,
> all those options in QjackCtl that most of us leaves alone since years,
> just because doesn't know what is all about, or pass hours to test???

dbus options with jack are to do with jack2. There is a patch to allow 
jack1 to be dbus controllable as well, but I don't know that any distos 
ship it and Qjackctl is not designed for it.

jackdbus is the same jackd with the ability to use dbus to control it's 
operation. The advantage of this is that more than one program can 
interact with jackdbus. With jackd, only the program that starts it can 
stop it and the parameters can only be set at start time (with the 
exception of buffers which can be changed during run). With jackdbus, all 
parameters can be changed including audio device during runtime and can be 
changed by any program that can find the same dbus server (anything 
started since session startup). This means Qjackctl can be used to start 
jackdbus and then jack_control can be used to stop or maodify parameters.

I think what stops people from making more use of jackdbus is that all the 
documentation and help for jack is with jackd command lines. So the new 
comer will be flooded with advice that shows how to use jackd and not 
jackdbus.

To start jackd with default parameters (whatever was used last time) on 
the command line:
jackd
or:
jackd &

to start jackdbus:
jack_control start

To stop jackd the controlling terminal can use control c or if it was 
started with the & then you have to:
killall -9 jackd
With jackdbus:
jack_control stop

A typical jackd start line with parameters would be:
/usr/bin/jackd -p1024 -dalsa -dhw:M66 -r48000 -p1024 -n2

The same thing in jackdbus might be:
jack_control ds alsa dps device hw:M66 dps rate 48000 dps period 1024 \
         dps nperiods 2 start

or (if it is easier in a script):
jack_control ds alsa
jack_control dps device hw:M66
jack_control dps rate 48000
jack_control dps period 1024
jack_control dps nperiods 2
jack_control start

Now to change the device without stopping jackdbus:
jack_control dps device hw:AudioPCI  sm

An interesting side note:
I have the AudioPCI installed only so I can use its MIDI port. The MIDI 
port is available no matter which device is set with jackd/bus. I use 
a2j_control to bridge alsa MIDI to jack MIDI (a2j_control ehw start).

Documentation:
Very little. man jack_control gives nothing, but jack_control on it's own 
with give a usage message (or jack_control help). I went through using the 
"get" commands to find out more. Jack_control is written in python and so:
less /usr/bin/jack_control
will allow one to see what dbus commands jack_control is sending to dbus 
to control jackdbus.

Qjackctl does not at this time (maybe never) allow changing the jack 
server parameters on the fly. However, a jackdbus server started with 
qjackctl can be changed from command line with jack_control.

Jackdbus works much more smoothly and automatically with Pulseaudio and 
the pulse-jack bridge. Pulse can be bridged to jackd (1 or 2) manually as 
well, but it requires an extra script to be run each time jackd is 
started.

Depending which version of qjackctl you have (mine is older), it sets 
port-max lower (1024) than default (2048) and can not be set higher. Most 
desktops have no reason to run any lower than default. Embedded systems 
with limited memory might need something smaller... but probably also 
won't run qjackctl :)

I know this is much more than the qjackctl side of jackdbus, but it does 
give some of the why too.

--
Len Ovens
www.ovenwerks.net



More information about the Linux-audio-user mailing list