MadJACK is a MPEG Audio Deck for the Jack Audio Connection Kit with an OSC based control interface. It was written as a backend for DJ music playback and is released under the GPL license.
It aims to achieve the following:
It does not do the following:
In order to segue and cross-fade between tracks I have multiple copies of MadJACK running.
Usage: madjack [options] [<filename>] -a Automatically connect JACK ports -l <port> Connect left output to this input port -r <port> Connect right output to this input port -n <name> Name for this JACK client -j Don't automatically start jackd -d <dir> Set root directory for audio files -p <port> Specify port to listen for OSC messages on -R <secs> Set duration of ringbuffer (in seconds) -v Enable verbose mode -q Enable quiet mode
→ /deck/play - Start deck playing
→ /deck/pause - Pause deck
→ /deck/stop - Stop Deck playback
→ /deck/cue [f] - Cue deck, with optional cue point (in seconds)
→ /deck/eject - Eject the current track from deck
→ /deck/load (s) - Load <filename> into deck
→ /deck/get_state - Get deck state
replies with:
← /deck/state (s)
State Strings:
PLAYING - Deck is playing
PAUSED - Deck is paused
READY - Deck is loaded and ready to play
LOADING - Starting to decode track
STOPPED - At end of track / Stopped
ERROR - Problem opening/decoding track
EMPTY - No track loaded in deck
→ /deck/get_error - Get description of error (when in state ERROR)
replies with:
← /deck/error (s)
→ /deck/get_version - Get name and version number of MadJACK
replies with:
← /deck/version (ss)
→ /deck/get_position - Get deck position (in seconds)
replies with:
← /deck/position (f)
→ /deck/get_filepath - Get path of track (as passed to /deck/load)
replies with:
← /deck/filepath (s)
→ /ping - Check deck is still there
replies with:
← /pong
Replies are send back to the port/socket that they were sent from.
Included is a minimal GUI, written with QT4, which runs as a seperate binary, and communicates with madjack backends. The QMadJACK class is designed to be reused in other applications.