Snowball is aweb app that automatically generates hype for a new release by aggregating relevant blog emails and requiring that downloaders help spread the word. Online here with a somewhat long-winded demo video here.
For many new artists, it's much more important to develop a fan base than to monetize music. It's often said that the internet is a democratizing force for music distribution, but few distribution systems take full advantage of its social nature. Snowball attempts to create an avalanche of hype for a new release with a two-pronged approach. Recognizing that “taste-makers” are often the first people to turn listeners on to new music, Snowball starts by collecting emails of bloggers who frequently post about similar music. Each blogger gets an email with a unique download link and information about the album and its distribution method. Simultaneously, a download page is created which allows anyone to obtain the music “for free”, but only after they carry out some action which will help generate hype for the album. Ideally, as more people download the album, even more learn about it, creating a snowball effect.
On a technical level, the artist first needs to set up a MySQL database and register for API keys with bit.ly, echonest, twitter, soundcloud, and last.fm. Then, a few PHP scripts can be uploaded to a server and the main script (index.php) starts out as a configuration utility. This allows the musician to specify the name of the album, the cover art, upload a .zip of the audio files, etc. Also on the configuration page are optional fields for the variety of APIs which can be used as hype generation engines. In order to link up with last.fm, the musician needs to have the album entered in last.fm's metadata database with the same artist and album name. For SoundCloud, the tracks need to be uploaded and in a set and publicly viewable/streamable (and ideally not downloadable!). Finally, in order to harvest blogger emails, the app connects to Echonest's huge music brain. One aspect of echonest's database is an aggregation system of blog posts, which are linked with the artists they discuss. In order to find relevant blog posts, the musician enters three artists they consider similar. A variable number of blog posts for each artist are retrieved, and some robust regular expression and link following is done on all of the blog posts that are returned in order to find emails. Once a list of emails is obtained, the PHP script sends out a (user-definable) message which includes some basic information about the release, how the average joe can download it, and a unique per-blogger link.
Once the configuration has been run, index.php acts as the central hub for handling downloads. At the most, there are five ways to obtain the music. The first simply requires that the downloader post a link to the download site (or the bit.ly alias that gets generated automatically) at any publicly accessible web location - on their blog, forum, non-private twitter, etc. Once a link has been posted, the downloader provides the URL and a script determines if a link exists on the page, and if it's a new link (hasn't been used to download before). If the link is new, a unique download code is generated for the new fan. The second possible method automatically scrobbles all of the tracks on last.fm and adds them to the user's loved tracks. This simply requires that the downloader clicks a link and logs in to last.fm if necessary; the rest is automatic. If the tracks are all scrobbled and loved successfully, a download code is generated. The third method simply uses Twitter's API to automatically tweet a link to the download site - this is probably useful for fans who have their twitter accounts private or are having trouble with the link-posting method. The last two options are based on SoundCloud-the first is nearly identical to the last.fm method, in that it favorites tracks, and the final option is simply a streaming player of the music if the listener doesn't want to bother with posting any links. Any of these methods which involve APIs or external sites can be disabled on configuration - the only two that are on by default are link-posting and twitter.
Because the installation process isn't fully automated (the user has to create the DB and sign up for the APIs), I'm not going to post the code just yet… but because it's entirely database-based, it could work for any artist (or basically for distributing any file(s) - doesn't have to be music).