A scriptable environment for controlling jackdbus clients.
JavaScript Shell
Latest commit 6b92bd6 Feb 19, 2015 @psychoticmeow Releasing 0.4.0.
Permalink
Failed to load latest commit information.
bin
docs
examples
lib
packages
LICENSE
docs.md
package.json
readme.md

readme.md

Jack Sanity

A scriptable environment for controlling jackdbus clients.

Installation

Arch Linux

Arch Linux users can install Jack Sanity from the Arch User Repository. For more information about using the AUR see the Arch Linux Wiki.

From source

  1. Clone the repository using git, or download the latest archive and extract it somewhere convenient.
  2. Inside the created folder run npm install to install all of the required libraries.
  3. Then symlink bin/jack-sanity to somewhere in your path.

Usage

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.

Configuration

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.');
});

Documentation

For the full details of what it is possible to do from a configuration script, see the Public API documentation on the wiki.