Yeah, the way I did it for testing the bitrate function, was to actually create a .dll of the mp3header reader class, which I could then access from visual basic, within your app

. This was easier than converting the C# code to VB.
I found the mp3 header class from here : , but I created an overload for it to accept a filestream object, because otherwise I was having problems with getting "The file is in use by another process" exceptions, even after closing the file. .Net seems to do that sometimes :p. Oh, and I also changed it a bit so it doesn't close the filestream once it's done. I'll upload the modified class soon.
After that, I just put a try...catch block in your download loop, and within that, first called ReadMp3Information with the filestream object, then if intBitrate was not 0, we have downloaded enough of the file to read the header, and get the bitrate

. I made a sample application in C#, which takes a playlist ID, and prints out a text file of all the songs in the playlist. Of course, I based it off your grooveshark API

.
(Link to my program coming soon)
Unfortunately it will never find the bitrate for some songs, maybe because the header info is stuffed up, who knows. In this case I have added a timeout which sets the bitrate to 0.
It is unrealistic to poll every song in the download list for it's bitrate, but maybe if the user could poll selected songs?