Years ago, I DJed an annual surf contest.  At the time, I couldn't find any 
decent, reliable DJ software, so I wrote my own in 3 weeks.  The interface was 
simple -- I used telnet to connect to my "djserver" program and I would issue 
it text commands.  Most of the work writing it involved making sure that the 
sound would never, never, NEVER underflow and pop.  I did that with careful 
threading, careful buffering, and a realtime-priority thread keeping the sound 
hardware's output buffer full.  I could rip new CDs, encode MP3s, etc. on the 
machine, and the sound would never be affected. (And this is with circa-1998 
hardware!)


I could give it individual songs to play, and I could also add and remove 
playlists.  However, my handling of playlists was different than Auto DJ's...if 
there were no individual songs scheduled to play, it would pick a random song 
out of the totality of loaded playlists.  Removing a playlist would take all 
those songs out of consideration for random selection (unless some of its songs 
appeared in other loaded playlists, of course).  And it would try to play songs 
that hadn't been played as often -- I gave it a minimum percentage of the total 
songs available to consider for random selection, so that already-played songs 
would only be considered if the total number of available songs dropped below 
that minimum.  That would tend to keep more-often-played songs out, but would 
allow them in so that it wouldn't just play all the songs in the same order.

In Mixxx, it seems like this could be implemented by allowing crates to be 
added to the Auto DJ queue, but as whole entities.  If there are no individual 
songs in the Auto DJ queue, a song will be picked at random from the loaded 
crates, with the above-described de-prioritization of already-played songs.

Any thoughts on this?  I intend to implement this sooner rather than later, if 
I can keep finding the time and energy to work on this, since it's mostly how I 
intend to use AutoDJ.  I won't be DJing ultra-hip ravefests any time soon; I'll 
be doing pedestrian stuff like birthday parties, happy hours, and car shows.

Steven Boswell
------------------------------------------------------------------------------
Precog is a next-generation analytics platform capable of advanced
analytics on semi-structured data. The platform includes APIs for building
apps and a phenomenal toolset for data science. Developers can use
our toolset for easy data analysis & visualization. Get a free account!
http://www2.precog.com/precogplatform/slashdotnewsletter
_______________________________________________
Get Mixxx, the #1 Free MP3 DJ Mixing software Today
http://mixxx.org


Mixxx-devel mailing list
Mixxx-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mixxx-devel

Reply via email to