In some applications, like headless or embedded systems, it can be helpful to autostart the jack server, followed by additional programs for sound processing. In this way, a system can boot into the desired configuration without additional user interaction. There are several ways of achieving this. The following example uses systemd services for a user named student.
The JACK Service
The JACK service needs to be started before the clients. It is a system service and needs just a few entries. This is a minimal example - depending on the application and hardware settings, the arguments after ExecStart=/usr/bin/jackd need to be adjusted.
[Unit] Description=Jack audio server [Install] WantedBy=multi-user.target [Service] Type=simple PrivateTmp=true Environment="JACK_NO_AUDIO_RESERVATION=1" ExecStart=/usr/bin/jackd -d alsa User=student
The above content needs to be placed in the following file (root privileges are required for doing that):
Afterwards, the service can be started and stopped via the command line:
In order to start the service on every boot, it needs to be enabled:
If desired, the service can also be deactivated:
The Client Service(s)
Once the JACK service is enabled, client software can be started. A second service is created, which is executed after the JACK service. This is ensured by the additional entries in the [Unit] section. The example service launches a Puredata patch without GUI:
[Unit] Description=Synthesis Software After=jack.service Requires=jack.service [Install] WantedBy=multi-user.target [Service] Type=idle PrivateTmp=true ExecStartPre=/bin/sleep 1 ExecStart=/usr/bin/puredata -nogui -jack ~/PD/test.pd User=student
The above content needs to be placed in the following file:
The service can now be controlled with the above introduced systemctl commands. When enabled, it starts on every boot after the JACK server has been started: