I’ve solved part of the problem: Subsonic can stream music to my Android phone, iPad, and computer (via a website). They have a native Linux client, as the software is written in Java it must have been simple to provide cross platform support.
They provide:
- Cross platform server software (written in Java)
- Live transcoding of audio
- Apps for iOS, Android, and Windows Phone
- A web interface using a flash player
No matter how large your music collection, you can stream it to your mobile device in real time over the cellular network.
While they claim to be an Open Source project, Subsonic is really open source donationware. Ads are displayed in the web interface and streaming to mobile devices is given as a 30 day trial until you make a donation of at least 10 euros (which at least is a reasonable price). I should note that the license is for the server software, not the client, so once you have the server software installed any number of clients can connect.
The licensing issue
While I think it’s a good idea to donate to open source projects, I don’t like how Subsonic forces people to donate. So three minutes into the source code, I found this:
public boolean isLicenseValid(String email, String license) {
if (email == null || license == null) {
return false;
}
// Little point in doing anything more fancy, since there are
// easier ways to disable the nag messages.
return license.equalsIgnoreCase(StringUtil.md5Hex(email.toLowerCase()));
}
So basically, take the md5 hash of any email address, and you have the license code.
echo -n any.email@address.com | md5sum
529df0963c44d1ee53d2d574fa311e01
Wrapup
The interface could use some work, but the base of the software seems pretty solid. I’ll be testing it out for the next few weeks for sure.