On 12/1/21 10:27 AM, Florent Peyraud wrote:
Hi everyone.

I'm trying to streamline the integration of Rivendell 4 on lubuntu or other debian based distros using modern tools such as systemd and DBus. Now, qjackctl and the packages jackd2 uses Dbus to launch jack daemon by default. This provides some cool features, notably the handshaking with pulseaudio in order to release the alsa device from pulse and let jack use it instead, and also the automatic connection of pulseaudio into jack as a client.

The way qjackctl launches jack is by issuing the "/usr/bin/jackdbus auto", then setups and actually starts jack through the DBUS interface with /usr/bin/jack_control

I would like to mimic this behavior in order to make rivendell service (well... caed) start Jack this way with an external scirpt, but it fails when trying to connect jack. The logfile says "Unable to communicate with JACK server". Obviously, the actual jack server may take too much time to launch and it is not ready when caed tries to connect. DBus provides a way to check the status of jack. Maybe just a pause could be sufficient to allow jack to start before trying to connect to it.

Would it be possible to take this way of launching jack through DBus into account so that it can be started at boot time with caed instead of waiting for a user session to begin ?

By the way, I tweaked systemd service for rivendell (sudo systemctl edit rivendell) in order to start the daemons with another user (actually the user who starts the session afterwards to use Rivendell tools) so that I can launch qjackctl or other tools with this user and modify the patching of clients without being forced to connect as root, which is not recommended on ubuntu/debian. Maybe, it could be useful to be able to select the user for each sub-service in rd.conf, and drop privileges while starting rivendell service according to this.

Thanks a lot for your answers/ideas. Take care

Florent

The way I do works just like a charm to me, where everything integrates an inter-operates to perfection: I'm using the jackd2 PROMISCUOUS MODE feature to create a single, system-wide, user-interoperable, jackd service, that act as a hub to any jack client, of any user (thus Rivendell) on the whole system, allowing each user (the workstation user) to manage their GUI clients and/or applications using GUI tools and send/get audio to/from any other audio clients on the system.

In this mode, Rivendell automatically connects to the system-wide jackd server.

In the same way, qjackctl (or any other GUI applications, jack manager/client, etc... for instance, I use Ardour as Rivendell's mixer, and jamin as DSP) by means of X11/dbus does automatically detect and bind to the system-wide, shared, running jackd server... automatically.

I had posted specific setup details (Debian) before in this list if you're interested on.

Best regards.


_______________________________________________
Rivendell-dev mailing list
Rivendell-dev@lists.rivendellaudio.org
http://caspian.paravelsystems.com/mailman/listinfo/rivendell-dev
_______________________________________________
Rivendell-dev mailing list
Rivendell-dev@lists.rivendellaudio.org
http://caspian.paravelsystems.com/mailman/listinfo/rivendell-dev

Reply via email to