scripted auto dj

Bug #1199105 reported by Jan Lodrovic
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Mixxx
Confirmed
Wishlist
Unassigned

Bug Description

An option to get auto-dj to query an external script for the file to be loaded into the deck, instead of getting it from the internal auto-dj queue. When enabled, the specified user defined external script would be executed whenever the auto-dj needs to load a new file into a deck. Whatever the script prints to stdout would be treated as a full path and if the file exists would be loaded into the deck. If the file does not exist or fails to load, the auto-dj should disable itself. It would be up to the external script to ensure its output is a valid path to a supported file.

ezstream has a similar feature, and it allows me to create web interfaces to manage the queue and then have a script simply query this queue whenever ezstream finishes streaming the current track and needs a new one. Although Mixxx itself could eventually provide tools to manage its auto-dj queue externally (e.g. through command line options), i think it would be much more effective to simply execute a user defined script and use its output to load the next track, just like ezstream does.

With this feature, users can developed their own web interface, allowing for the auto dj queue to be controlled remotely, even from a mobile phone, while keeping Mixxx in the background (i.e. not directly exposed to the network), behind the web server.

Tags: autodj
Changed in mixxx:
status: New → Confirmed
importance: Undecided → Wishlist
Revision history for this message
Daniel Schürmann (daschuer) wrote :

Hi Jan,

thank you for your grate proposal.

I would be realy happy If we make Mixxx more felxible in how to sellect new tracks. While a scripting interface is surely the most powerfull solution, it will be also most dificult to use. But IHMO it is a fine addition to the other approches curently under development.

There is:
* auto-dj-crates, a random selector from cennected crates. https://github.com/mixxxdj/mixxx/pull/18
* intelligent track suggestions feature: http://gsoc2013-mixxxtracksuggestions.blogspot.de/
* Advanced autodj: http://www.mixxx.org/wiki/doku.php/gsoc2012_autodj_features https://github.com/daschuer/mixxx/tree/advanced_autodj_2

For now this would be fit the best ontop of auto-dj-crates.

It sound you have the skills to do important pats of the project yourselfe. If so and you can offer some of your spare time, I would be happy to give you helping Hand to start. So do not hasitate to asks your yestions at mixxx-devel or at #mixxx on freenode. http://www.mixxx.org/get-involved/

It sound that you have the right.

Kind regards,

Daniel

Revision history for this message
Jan Lodrovic (lodrovic) wrote :

Hi Daniel,

Although i do not have enough spare time for engaging with the project, i will take a closer look to learn more and maybe then see if i can help and how.

I haven't seen any of the code as of yet, so this is just a guess on how it could work. In preferences there could be a field to set the full path to the external script. Then, next to the 'enable auto-dj' button, there could be a toggle button to enable/disable the external script usage. When enabled, the auto-dj would execute the script whenever it needs to load a deck and use the script's output as a full path to the file to load, thus bypassing any other means of finding a file to load into the deck.

So my guess is that an if statement checking if scripted feeding of decks is enabled should suffice. If *not* enabled, it continues to any other ways of loading the deck, but if enabled it executes the external script instead, gets the file path from the script's output and loads the file into the deck. If the path is invalid or if it fails to load, the external script option should be disabled (turn the toggle button off), thus going back to feeding the decks through any other means available (i.e. crates, library, etc) to prevent entering an endless loop where it keeps executing the script and failing to load a file.

Of course, this may not be that simple to implement because of the different platforms and how scripts are executed on each of them.

Best regards,
Jan

jus (jus)
tags: added: autodj
Revision history for this message
Daniel Schürmann (daschuer) wrote :
Revision history for this message
Swiftb0y (swiftb0y) wrote :

Mixxx now uses GitHub for bug tracking. This bug has been migrated to:
https://github.com/mixxxdj/mixxx/issues/7102

lock status: Metadata changes locked and limited to project staff
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.