Will try to create a CLI for Mixxx, let's talk about ideas

Hi, I’m a software engineer and DJ. For a long time I’ve wanted to be able to DJ from the command line, mostly for playback and music selection controls, and leaving mixing either to external software or hardware, but if mixing and effects is desirable as well then maybe I can make that work too. I’m making this thread because as I’m planning out how I’m going to do this, I’d love to hear any feedback on the idea and to have a discussion about what would be useful for the end user (you) and for developers to make this happen.

I’ve looked over the launchpad for the project and I can’t find any requests for this feature (which do exist) that have gained traction. If there truly isn’t anyone working on this then I’d like to give it a try for myself, but of course will welcome anyone that wants to help in any capacity.

If there are any feature ideas or requests, or developer suggestions for how best to work with mixxx, particularly with regards to how I should interface with the core of the program so that I can programmatically interact with it without having to launch the GUI, or any other relevant discussions like it I would love to hear about it.

My first idea, besides becoming more familiar with the codebase and documentation which I’m already doing, is to make use of the control system to create a controller in software. A program that uses some ncurses-like library that runs separately from Mixxx, maybe one program instance for each deck so software tools like tmux or window managers like i3wm can be used to keep the user on the keyboard but still allow easy and fast deck switching for controls, all inside separate terminals. At first I think I’m just going to keep some fairly minimal features like play/cues, tempo +/-, loop, browse tracks, select & load track, and basic display of info maybe something reminiscent of older CDJs like the 1000. But if that’s successful I’ll probably move onto some more fun stuff, like maybe auto-cues, mixing controls, fx controls, maybe even plugin controls if things go really well, who knows.

Cheers, and let’s have a good discussion.

Definitely interested in this! My use would be for a DVS box to connect to an external mixer allowing people to use vinyl (or CDJ) control to play back the music from a connected USB key. The core would be running on a project board like the Raspberry Pi or Beaglebone Black (both have multiple audio add-on boards available) and so reducing resources for GUI etc would be greatly beneficial. Looking at other apps which have decently navigationable textual interfaces I was thinking that making a program to interact with the database using ncurses may be a reasonable starting point. Personally not got any prior experience with this and quite a lot else on my plate at the moment though…