A scriptable environment for controlling jackdbus clients.
Arch Linux users can install Jack Sanity from the Arch User Repository. For more information about using the AUR see the Arch Linux Wiki.
- Clone the repository using git, or download the latest archive and extract it somewhere convenient.
- Inside the created folder run
npm install
to install all of the required libraries. - Then symlink
bin/jack-sanity
to somewhere in your path.
To start a Jack Sanity session simply run:
jack-sanity --config your-session.js
When you make changes to the configuration file, jack-sanity will close the running session and start a new one with your configuration changes.
Create a new JavaScript file and save it somewhere handy, this will be your session configuration file. You can use it to watch JACK clients and ports:
var hardware = session.createClient('system'),
effects = session.createClient('my-effects');
effects.on('online', function() {
// Auto-connect a client to the hardware output:
effects.connect(hardware);
});
You can also start and stop processes:
var effectsHost = session.createProcess('calfjackhost', [
'--client', 'my-effects'
]);
session.on('open', function() {
// Start the effects host when the session opens:
effectsHost.open();
});
session.on('close', function() {
// Stop the effects host when the session closes:
effectsHost.close();
});
effectsHost.on('close', function() {
// Restart the effects host when it closes (or crashes):
effectsHost.open();
});
To make life easier, you can combine the client and the process under one name:
var effects = session.combine(
session.createClient('my-effects'),
session.createProcess('calfjackhost', [
'--client', 'my-effects'
])
);
session.on('open', function() {
// Start the effects host when the session opens:
effects.open();
// Connect the effects:
if (effects.canConnect(hardware)) {
effects.connect(hardware);
}
});
You can also log events to the terminal:
session.on('open', function() {
log('Session is ready...');
});
session.on('close', function() {
log('Session closed.');
});
For the full details of what it is possible to do from a configuration script, see the Public API documentation on the wiki.