MadJACK
Nicholas J. Humfrey <njh@ecs.soton.ac.uk>
For the latest version of MadJACK, please see: http://www.ecs.soton.ac.uk/~njh/madjack/
What is MadJACK ?
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 licence.
It aims to achieve the following:
- Lightweight
- Talk natively to JACK
- Easy to script / remote control
- High Quality audio
- Skip free playback
- Responsive / Low Latency
- Reliable / Not Crash
It does not do the following:
- Have pitch control on playback (yet!)
- Decode metadata/ID3 tags
- Queue up multiple tracks
- Have playlists
In order to segue and cross-fade between tracks I have multiple copies of MadJACK running.
Terminal Interface
MadJACK accepts the following keys on
h: Display help message
p: Play/Pause Deck
l: Load a Track
e: Eject current track
s: Stop Deck
c: Cue deck to start of track
C: Cue to specified time
q: Quit MadJack
Command Line Interface
madjack_remote <command>
play, pause, stop, cue [<cuepoint>], eject, load <filename>, status, position, filepath, ping
OSC Interface
/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_duration - Get track duration (in seconds)
replies with:
/deck/duration (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.
