Is there a Mixxx plugin/extension API similar to Virtual DJ's plugin API?
Is there a Mixxx plugin/extension API similar to Virtual DJ's plugin API? I was doing some research on DJ application APIs, and I came across Virtual DJ's plugin API here (https:/
I found the Mixxx control system here (https:/
If so, how would I go about writing a plugin, framework, or other construct that allows me to query information from the Mixxx control system and pass it to another application? If not, where might I look in the Mixxx source to add a patch to the same effect?
Background: I am starting a project to rewrite my sequenced light controller (similar to Vixen [http://
Right now, my program uses LibVLC for the audio playback. It loads a light sequence from a file (written by Vixen 2), determines which audio file to play, and tells LibVLC to load and play that audio file. While the song is playing, the program checks VLC's playhead position on a high-frequency loop (it needs to query the playhead position at least every 25ms to match control resolution with DMX), calculates a position in the sequence from LibVLC's playhead information, and outputs the data at the calculated position to DMX, effectively using VLC as a stopwatch to time out the file. That way, the sequence is always pointing at the same place the audio player is and they never go out of sync.
Since the sequence execution engine only requires minimal (if high frequency) integration with the audio engine, it would be easy to use different audio APIs as plugins in my program. My idea for integration with Mixxx is for the plugin on Mixxx's side to push the current file metadata (artist, track, filename), playposition, track_samples, and volume (including crossfader) for each deck over a pipe or socket to my program, which would determine which sequence file to run based on the metadata, and sync to Mixxx using playposition and track_samples (it's basically the same thing I already do with VLC, except this time it's communicating with Mixxx instead). To reduce the data and processing footprint, the metadata and track_samples would get pushed on deck changes, and the playposition would get pushed to or queried by my program every loop. Because my program does not rely on internal timers to calculate sequence position, it could keep lock-step with Mixxx, even if the audio is being scratched, spun backward, or having its speed mangled.
Ever since I discovered light sequencing, I have always wanted to develop a method of integrating some sort of a DJ control into it.
Love the project, keep up the amazing work!
Question information
- Language:
- English Edit question
- Status:
- Solved
- For:
- Mixxx Edit question
- Assignee:
- RJ Skerry-Ryan Edit question
- Solved by:
- Daniel Schürmann
- Solved:
- Last query:
- Last reply: