SoundCloud. Now with added droning.
Because it's a tremendous jumble of technology, and probably shouldn't be possible.
- User adds a SoundCloud url to the playlist.
- SoundCloud JS SDK chats to SoundCloud, gets the track info.
- User decides to play the track.
- Request for SoundCloud stream url sent to Node.js proxy.
- SoundCloud redirects us around a bit, eventually chucks an MP3 back to Node.js...
- ...which chucks it back to the client.
- Track is decoded into a Web Audio API buffer.
- Web Audio API streams the decoded frames into Audiolet.
- Audiolet processes the audio in real-time...
- ...and passes it back to the Web Audio API, which plays it for the user.
- Chrome only for now 'cause Firefox won't load .mp3s, and the mobile browsers don't support the Web Audio API.
- Loading tracks is slow as hell. MediaElementAudioSourceNode isn't implemented yet, so we can't stream the tracks but have to get the whole thing in an XHR. Fine, except http://code.google.com/p/chromium/issues/detail?id=96136 means that we have to proxy the tracks first. Sheesh...
- Spent a bit longer than the time limit, as getting SoundCloud to play nicely with the Web Audio API and Audiolet was "interesting". Sorry :(
- No tags or playlist descriptions yet. Spent too much time futzing around with audio. More apologies.