Crowd Sourced DJ
Google Voice SMS powered music DJ! Install this app on an Android device. It will pick a set of five? random songs from a selected precompiled playlist. Users then send short commands over SMS to the Google Voice number assigned to the device to vote on the next song, or change the song, or even vote the song up or down to make the song show up more or less often.
- LIST = sends a text to that user containing the list of five? random songs to vote for.
- TALLY = sends a text to that user of the last set of songs and the number of votes each song received.
- UP = gives the currently playing song a vote up.
- DOWN = gives the currently playing song a vote down.
- HATE = if a song receives enough HATEs large fraction of the total number of votes averaged over the previous sets of votes it will be removed from the playlist.
- INFO = sends a text to that user with the song title, artist, album and other song info?
The plan is to leverage this API: http://code.google.com/p/google-voice-java/ The whole thing will be an Android app that uses the internal music audio player API for all the playing of the music. It should be able to run on just WiFi or cellular data network to pick up and send the SMS commands and results. Another idea is to somehow let the crowd pick from more than 5 songs at a time by letting them request NEXT and it will pick another set of 5 to pick from so they can vote on all the songs in the entire playlist instead of waiting for it to pick 5 at random each time. However this would require it to keep track of an ID number (1 - x where ID is just index in the playlist) which would be the number the app sends to the user and the number they send back in order to vote on that song.
Make sure to let me know if you have better ideas to make this work. Feel free to rip apart my ideas too. Constructive criticism is highly encouraged.
High Level Design
User starts the app on the android device. User picks the playlist (or all songs) to use for this session. App picks one song to start. App picks 5 songs from the playlist at random for the first set of 5 to pick from. (Main loop) While current song is playing, App checks its Google Voice SMS queue for messages every 1-5 seconds. If SMS is a 1 digit number it adds 1 to the current tally for that song for this set of 5. If SMS is LIST then it sends the current set of 5 song list to that phone number. If SMS is UP then it adds one to the currently playing song's thumbups. If SMS is DOWN then it adds one to the currently playing song's thumbdowns. If SMS is TALLY then it replies to that phone number with the tally totals for last set of 5. If SMS is INFO then it replies to that phone number with the current song title, artist, etc. If SMS is HATE the app adds 1 to the current song's totalHates. End while When song is finished playing, Pick the song from the current set of 5 with the highest tally. If a tie then pick the song with the most thumbups. If a tie then pick the song with the least thumbdowns. If a tie then avoid songs with any totalHates. If a tie then pick from one of the set of 5 at random. Update the current previousTally info to send to users that request TALLY Pick 5 more songs at random with bias towards songs with thumbups and avoiding songs with thumbdowns and avoiding songs with totalHates. Set the tally to 0 for these 5 songs in the new set. Start playing the song picked above. Go to the main loop above while the song is playing. End when