Using crates as a source of random tracks for auto-DJ

Registered by Steven Boswell

Most DJs have track collections that number in the tens of thousands, and have those tracks organized according to criteria, e.g. style (reggae, progressive rock, etc.), era (1950s, 1970s, etc.), purpose (dance, chill, etc.), and others.

Sometimes, it's not so important what the next track is, as much as the general category that the track should belong to. And choosing a specific track from tens of thousands of choices is daunting.

My solution is to implement the idea of adding/removing whole crates to the auto-DJ playlist. Instead of inserting the contents of the crates directly into the auto-DJ playlist, though, the crates are merely associated with the auto-DJ playlist, and become a source of random track-selections.

A new button, "Add random", has been added to the auto-DJ controls. When it's pressed, a random track from the set of associated crates is added to the auto-DJ playlist. The DJ can accept that choice, move it around, or delete it.

The set of crate-tracks to be considered for random selection tends towards tracks that haven't been played as often (as tracked by the "timesplayed" column in the "library" table). In addition, the preferences contains an "active percentage"; in the case where all of the songs have been played, at least this percentage of crate-tracks are available for random selection. (If the percentage of unplayed tracks is greater than the active percentage, all of the unplayed songs are up for random selection. The "active percentage" is a minimum.) And of course, any tracks already in the auto-DJ playlist, or loaded into a deck, aren't available for random selection.

Back in 1999, I started DJing a yearly surf contest, and since there wasn't much available at the time, I had to write my own DJ software. This "auto-DJ crates" concept was one of the central features of that software. I thought it would be useful here.

I've already implemented the vast majority of this feature; an early version of it was used recently to DJ a car show. The current version stores the active-tracks list as a temporary table in the sqlite3 database; the old version stored it in memory.

Blueprint information

Steven Boswell
Steven Boswell
Series goal:
Accepted for 2.0
Milestone target:
milestone icon 2.0.0
Started by
Steven Boswell
Completed by




Work Items

This blueprint contains Public information 
Everyone can see this information.


No subscribers.