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.