Saturday, December 11, 2004

Streaming mp3 servers


I have been trying to find a solution to fulfill all of my needs to listen to my music. I have about 40Gb of Music on my linux computer at home. I have netjuke installed there in order to allow me to listen to my music on my computers when I am at work, as well as listening to my music on my TiVo at home, using NetjukeTiVo.


Normally, I would just create a m3u for a collection of music that I have an urge to listen to now, and I would add that playlist of music to iTunes. This doesn't allow me to use the main feature of iTunes, where it can do a very good job at organizing music, and creating smart playlists.


What I want to be able to do is to play all of my music randomly, skipping over the Children's and Holiday music and the comedy tracks.


One way to solve this is to copy all of the music on the linux computer to my PowerBook, but I don't have enough space on my laptop. Also, I really don't want to have two copies of my music.





Netjuke/iTunes

My first solution was to create a m3u file with all of my music, and then imported this into iTunes. There are a couple of problems with this:


  1. iTunes does not load the id3 tag information for streams until the track has been played once. This means that I would have to go and press play on the several thousand tracks after they have been loaded. If I don't do this, once iTunes starts playing a track that it hasn't loaded the information for, but it shouldn't be playing, iTunes just stops.

  2. I would love to be able to use iTune's Party Shuffle feature (which give a weighted random shuffle for you music), but it will not select streams


The first problem could be solved by putting the id3 tag information into the m3u file. The EXTINF tag allows meta data to be put into the m3u file, but players do not interpret this the same as id3 tags.


Netjuke

It looks like Netjuke doesn't do exactly what I want either. It looks like I can do a search for music within a certain genre, but it doesn't appear that I can to a search for all music not in a a genre. (I am sure that I could do it by listing all of the genres that I wanted). Also when ever I wanted to add music, it would have to regenerate this play list.


SlimServer

I then installed the SlimServer from Slim Devices. This looks it could potentially do what I want it to. The main thing that I like about it is that it creates a single stream for the music that you play on it. There are a few of downsides to it though:


  1. The web interface seems a slow

  2. Since the mp3 player is only playing one mp3 stream, pressing "next track" doesn't actually change the tracks

  3. The java application looks like it will solve the above problem, but it sent some bad data that caused my connection (tunneled through ssh) to be broken. I am sure that if I opened these ports in my router, this would work fine.


The SlimServer does implement one of my other desires. When I am listening to music on my TiVo with the NetjukeTiVo software, I wanted the ability to add songs to the end of the playlist, and not stop the currently playing song. Now, I have that ability. I added a track in Netjuke for the stream.mp3 file from SlimServer, and then added that track to a shared playlist. Now, I can have the TiVo play that track, and then use the SlimServer interface add songs for that device. The one downside of this is that the TiVo does not display the track information that is in the stream. (If you want to try this, you will have to get the latest version from cvs. I just fixed a bug that prevented this from working)


Conclusion

I think that right now, I will stick to adding all of the streams from netjuke to iTunes, and play music that way. I am going to look into making iTunes play streams when it does its Party Shuffle.