mixtape 001

Please enjoy jwz mixtape 001.

I've tested it in iTunes and it seems to work fine (e.g., you'll see the song titles as the songs change) but I would be interested to know if that's all working sensibly in things that are not iTunes.

Update: Earlier, there was a bug that in some players, the audio would chirp (those players did not understand the kind of metadata I'm sending; they made that noise when they interpreted track names as audio data.) That bug should be fixed now: those players should now play the audio fine, but won't have metadata. I thought all the popular players supported Shoutcast-style inline metadata ("icy-metaint"), but apparently not. I guess the others want the Icecast-style UDP metadata ("x-audiocast-udpport"). That is, if they support metadata at all. The UDP version sounds hard (and dumb) and I'm not going to implement that. Use iTunes.

(Incidentally, the source is here, at the bottom.)

(And I think it's kind of sad that you all want to talk about Winamp and none of you wan to talk about music.)

Tags: , ,
Current Music: as noted

82 Responses:

  1. xrayspx says:

    Seems to work as expected in Amarok (on OSX), in fact, the meta info seems to update better than iTunes. The Artist and Title tags both end up in the "title" column in Amarok (as opposed to separate Artist and Title columns), but in iTunes it seems to just show "jwz mixtape 001" in the title, though it does rotate "artist -- title" in the progress area at the top.

    It seems like it should work in anything that takes m3u's.

    Relatedly, I highly recommend seeing Tanya Donelly and/or Kristin Hersh.

  2. netik says:

    In iTunes, scrubbing the audio stream isn't supported, but successive clicks advance by 2-4 seconds as you eat through the stream's buffer.

    Anyway to support that, or is this against the RIAA again?

    • jwz says:

      I believe that would be illegal, as well as kind of a pain in the ass to implement in this case, since my data is spread across multiple files.

      If I weren't saying Accept-Ranges: none then I believe that bonking the scrollbar would drop and re-connect to the URL with an HTTP byte-range request, e.g., Range: bytes=12345-999999. I know that it used to be the case that Winamp would disregard the "none" and try it anyway, meaning any time you bonked the scrollbar it would restart from 0.

  3. edlang says:


    Totem in the top right corner, Rhythmbox in the bottom left. The former doesn't seem to properly calculate the end of the first track, but it did update the title.

  4. boldra says:

    Works fine in vlc player under windows (artist/track is displayed and updates as it changes). I will not say whether this program also supports certain trivial functions.

  5. perligata says:

    Works fine in Quod Libet on Linux and is giving me strong arms for a girl programming late at night.

    • perligata says:

      Also, this is completely cosmetic, but the apostrophes in various songs are visibly escaped (e.g., Simon\'s Sleeping, We\'re All Going To Hell). tcsh habits die hard\?

      • jwz says:

        Hell, I don't know. It's not like this shit is actually documented anywhere. The metadata comes inline between every N bytes in the MPEG stream, and it looks like

          StreamTitle='Simon\'s Sleeping -- We\'re All Going To Hell';

        So who knows how you're expected to escape that. Apparently I guessed wrong.

        • perligata says:

          I probably would've guessed the same thing, really. I do wonder if it displays differently in other players though. I guess that wouldn't make sense, but given the somewhat varying results, it wouldn't surprise me.

          • perligata says:

            Because I totally get off on replying to myself:

            This seems to be the (a?) relevant part of the code (format_mp3.c):

            char *meta = "\001StreamTitle='';";

            I don't think you need to escape anything.

  6. jayp39 says:

    No song titles, just JWZ Mixtape 001 in Winamp.

  7. badc0ffee says:

    The audio also skips so much you can't listen to it (both Winamp and Quicktime), but if you move the scrollbar a few times in Winamp, it will restart and sound fine.

    Winamp also says the stream is 5:32 minutes long (the length of the Belly song), so the scrollbar moves along for 5:32 and then just stays stuck at the right starting with the Shriekback song. You probably didn't want a scrollbar at all because this isn't supposed to be seekable, but it's too bad you can't see the real length of the mixtape.

    • jayp39 says:

      Yeah, there was nasty skipping in winamp for me as well, I assumed it was my connection being dodgy.

      I did notice that if you try to skip ahead it will actually display the ID3 data for the first song. Unfortunately it doesn't actually skip ahead, just restarts, so I don't know if the ID3 data will update when it actually hits the next song and I'm not going to listen to something skipping that much to find out.

      • jwz says:

        Do our other webcasts also skip in Winamp? Does it help if you increase your buffer size, or does that just make the skips less frequent and longer-lasting?

        • jayp39 says:

          It's not a rebuffering kind of skipping, it's like pops and chirps and they're annoying. Normal DNA Lounge webcasts play just fine and I can even skip ahead with them. I tried upping the buffer from 64KB to 1024KB just in case and it didn't make any difference at all with the clicking nor did going to 2048KB...

          • jwz says:

            Ok, that means Winamp isn't doing the "icy-metaint" thing (it isn't interpreting the inline metadata, so it's trying to parse it as MPEG data.) I thought it did. I don't know what's wrong, maybe there's some different header it wants first. Obviously I don't use Winamp, so I don't know what to do about this.

            • jayp39 says:

              I'm at a loss as well.
              Under Streaming, the MPEG plugin has a checkbox for enabling SHOUTcast titles. I don't know how SHOUTcast does titles, but there aren't any other options listed there. Just for kicks I disabled SHOUTcast titles, unsurprisingly it did not make a difference.

              • jwz says:

                I thought Shoutcast was the one that did the inline text blocks, and Icecast was the one that did the UDP thing, but maybe it's the other way around. They're both horrible. Why the fuck this isn't just done with inline ID3 tags is beyond me.

                I'm not going to implement the UDP thing, that sounds like a huge pain in the ass.

    • jwz says:

      I have no idea where it's getting the "5:32" number -- that's nowhere in the data at all!

      It wouldn't have a scrollbar if I didn't send Content-Length, but then you wouldn't be able to tell how long it is.

      It's a bug that Winamp tries to seek even though I've sent "Accept-Ranges: none". It's done that for years.

    • mrxero says:

      I can confirm this exact behavior (in Winamp) as well. Starts out unlistenable, but if you scoot the scroll bar around a couple of times it suddenly becomes perfect.

  8. fo0bar says:

    It's too bad that stream ripper applications don't exist. If they did, however, I bet the first one I would find would handle the stream titles fine and split up the songs well. That would rock.

    • brianenigma says:

      I can neither confirm nor deny the allegation that the Open Source command line stream ripper application hosted on SourceForge and whose name matches its functionality works with this stream. If the reader wants to try this as a home exercise, I would suggest not using the URL of the m3u file, but the mp3 stream URL contained within that file (maybe I'm such a n00b at stream ripping that that's obvious?) I would also suggest using the "-D" option and putting a sequence number in the filename pattern, as the metadata does not seem to come across, otherwise you would get files named "-.mp3".

      In an unrelated note to jwz: I'd suggest you talk to the guy that runs the Coverville podcast. He's able to play both licensed and indie music on his show. As I understand it (and this is second- or third-hand knowledge), there is a specific ASCAP/BMI podcasting license that's about $300/year. It grants you the ability to play licensed music (although unlicensed stuff, you still need to talk to the band about), but you have to report back what you played (and possibly how many downloads?) to them. It's expenses and paperwork, which isn't ideal, but it lets you disseminate the music in a form that's pretty easy for the masses to consume, offline, via their iPods. You'd probably be able to release the live performances as podcasts, as well.

      • jwz says:

        Everybody keeps suggesting Coverville. He's doing a combination of A) getting permission for each song and B) breaking the law and hoping nobody cares. (Which is also what Warren Ellis is doing, though perhaps now he gets permission for every song, I'm not sure.) Search for "coverville" in the comment on that other post.

  9. fu3dotorg says:

    This is really great, thanks!

    Sunday morning iTunes@OSX user

  10. baconmonkey says:

    winamp is choppy for me, but then that could be because of large numbers of people poking it. when I pop open the m3u, and load the mp3 directly in firefox, the Quicktime player does the same halting playback.

    the stuttering is at random lengths, playing generally for no more than 1 second before pausing. I wonder if you have some sort of bandwidth throttle set too close to the actual bitrate, which leaves no allowances for network hiccups, latency, or other such things...

    or maybe it's a disk-seek issue? too many people randomly streaming different points from the same big file? for that to happen, there would have to be so little available ram, that the system couldn't afford to cache a 100 meg file.

    live webcast has no problems at all.

    • jwz says:

      Actually, it appears to have the opposite problem: it's streaming it out faster than it needs to, which means your buffers should be full. 128kbps is 16KB/s, and according to wget, I'm getting it at home between 20KB/s and 40KB/s.

      The load on the machine is low and it's used zero swap, so I doubt it's a resource issue.

      If you're hearing twittering instead of pauses, then that means it's mis-parsing the metadata, as I said in another comment.

      Looks like Mac Quicktime Player doesn't support "icy-metaint" either. Dammit. So, this means I need to not send the metadata at all if the player doesn't claim it can handle it (meaning those players would get no track names). The problem is, I don't know how to see that header: this is just a regular Apache CGI, and I don't know how to get at the raw headers sent by the client. All I have is the environment variables like $REQUEST_URI.

      • This link suggests that you should have $HTTP_USER_AGENT set in your CGI script (assuming the client sets it), which might be an annoying way of doing it.

      • jwz says:

        Oh hey, what do you know, it's sitting right there in $HTTP_ICY_METADATA.

        Weird thing is, iTunes doesn't send that header if there is an HTTP Proxy set. WTF. I don't think the proxy is stripping it, I think iTunes is really choosing not to send it when there's a proxy. And I don't know how to tell it to use my proxy only for Safari and not iTunes. Bleh.

      • baconmonkey says:

        I get twittering and pauses in winamp, but just pauses with QT player browser-plugin when doing the crack-open-the-m3u cheat.

      • dmose says:

        A CGI script? Don't you want to use Ruby on Rails or something way more Web 2.0?

  11. Working just fine in xmms on my Debian laptop - it's not letting me skip back and forth, or try and see the "time remaining" on the stream, which seems to be correct behaviour.

  12. formusic says:

    8001 is not default port for anything so it was closed on my firewall. Besides that stream didn't work in foobar2k or MediaPlayer, VLC is OK.

  13. spendocrat says:

    Sound works fine under Windows Mediaplayer 10. No metadata coming through.

    No other software on this machine to test with at the moment.

  14. dougfort says:

    Hey this is great! I didn't think I'd like it. These are really nice melodic songs. A pleasure to listen to.

  15. lindseykuper says:

    (And I think it's kind of sad that you all want to talk about Winamp and none of you want to talk about music.)

    You didn't ask!

    I'd never heard of that Moev song. Thank you. Goddamn. I went and bought it after two listens. I think something has finally dislodged "Raspberry Beret" from my head.

  16. robsoft says:

    Thanks, I really enjoyed listening to this (via latest iTunes in an up-to-date Tiger, on MacBook Pro).

    Didn't realise that Curve were still recording etc. Last thing I'd seen from them was late 90s, I think. Cool.

    Never been much of a NIN fan either, but might trek through some back catalogue now.


    • Curve dissolved again a year or two ago, probably a little more finally this time. Don't know what Toni's doing; Dean Garcia released a couple albums of "flying saucer music" (electronic/experimental) as Headcase and is now working with KMFDM/MDFMK's Sasha Konietzko and Lucia Cifarelli as KGC, which sounds exactly like a cross between MDFMK and Curve, sitting in a valley of "not that great" between the local maxima of those two bands.

  17. pnendick says:

    I'm really enjoying this mix in a frigid london morning - nice one. /p

  18. fu3dotorg says:

    ..I just whipped out my FM-transmitter, and now 'Amaryllis in The Sprawl' echoes throughout the whole F house. ;) - Just what the [mad] doctor ordered.

    The Joy Division -istic tremolo on the track thereafter doesn't hurt at all either.

  19. jered says:

    Thanks for distributing this in a manner that doesn't totally suck!

    To give you another data point, the .m3u works just fine with my Sonos system. I'll comment on the music after I get to listen to it.

  20. editer says:

    Good stuff; thanks. I'm only about 3 songs in so far, but I like it.

    The first song, by Belly, reminds me a lot of the Millions, a garage band from Lincoln in the 1990s. The main songwriter, Lori Allison, has since played in Floating Opera and Junior Mighty. Might be worth checking out.

    • elliterati says:

      If you like The Millions, you should check out Strange Boutique. They're best known for being Monica Richards's (Faith & The Muse) previous band. Whenever I play SB, certain friends always ask if it's The Millions...

  21. autosloth says:

    The mix great! Thanks for putting it together.

  22. metrocake says:

    Crazy happy that you started with Belly! :) Love most of the bands on your mix! (OMD -- now that brings back memories...)

  23. radparker says:

    Thanks for this. Never would've pegged you for a "Belly" fan. But then, since I don't actually know you, I really shouldn't be THAT surprised that I wouldn't know that.

  24. This is awesome. THANK YOU.

  25. ywwg says:

    Playing through musicpd (with the sonata frontend) works ok, but only for the first song. The progress bar gets to the end of the first song and then it stops, not realizing that there is more. It's probably an easy bug to fix.

  26. bitwise says:

    Using the standard timeshifting tool, it barfed when the stream ended at the end of the last song, leaving that track in the "incomplete" directory. It might improve compatibility with this sort of player if there were an extra 5- or 10-second track slapped on the end, just to help it detect the end of the last track.

    • jwz says:

      Why do you think silence would help?

      • bitwise says:

        Not the silence; the extra track. It looks like the tool only decides a track has safely finished when it detects the metadata for the next track. Since the stream disconnects at the end of the last track, this doesn't happen, and the track gets left in the "incomplete" state. If there were an extra sacrificial track on the end, that one would get left unfinished, and all the "real" tracks get saved correctly.

        It's also worth noting that the tool depends on a moment of silence between tracks to break them properly (because the metadata switch doesn't precisely match up), so if there's a way to insure that this happens, it would also be helpful.

        • bitwise says:

          Somehow I missed the fact that it does this on the first track as well. Ah, well. It works, just needs a little manual cleanup afterward. Probably nothing to worry about.

          • jwz says:

            It appears to me that it always puts the first and last track in the "incomplete" directory; I could imagine that being by design.

            • bitwise says:

              Unavoidable, anyway. There's no way to determine if you tuned in and/or disconnected halfway through a track.

              • jwz says:

                FWIW, I played around with adding multi-second silent "null" tracks at the beginning and end and it didn't seem to make things work any better. I think the Tool Which Must Not Be Named just doesn't work all that well. Perhaps you should report a bug.

                • bitwise says:

                  I have also noticed that The Tool seems to drop the final ten seconds from the final track. It's hard for me to tell for sure, because I don't have the original song to compare against.

                  I tried switching from XMMS to Audacious this week (not advised), so right now I'm pretty impressed if free software works at all.

                  • jwz says:

                    I just checked again, and I'm definitely sending the right Content-Length. I suggest you report a bug.

                    Certain tools apparently assume that all streams are continuous, disregarding the presence of a Content-Length header.

                  • bitwise says:

                    Bug has been submitted, but I don't think anyone's actively monitoring that bugtracker, so I'm not going to get my hopes up.

  27. rsdio says:

    So, does it spite the record industry if I go out and buy some of these albums? Is that how it works now?

    By that I mean, I like what I'm hearing here, and I previously knew about only 10% of the stuff in this mix.

  28. curlyeric says:

    works well even on my nokia 770 althogh no artist info

  29. me2i81 says:

    Shows song ID information and streams fine on a Squeezebox 3.

  30. jes5199 says:

    Your end-of-year music wrap-ups have always been fairly cool, but this is way better UI (I don't even have to think!)

  31. kowh says:

    A few more data points, all on Vista:

    iTunes - Works fine, displays metadata
    VLC Media Player 0.8.6c - Works fine, displays metadata
    Windows Media Player 11.0 - Works fine, no metadata
    Media Player Classic - Works fine, no metadata

    Also, thanks for doing this. I've already added a few songs to my collection and am looking forward to the next mix tape.

  32. stu_hacking says:

    Excellent way to hear new music - I enjoy lost cost/effort ways to expand my horizons like that.
    - and I think from the first selection it's the kind of mix I'll be able to listen to end to end, great job.

    oh, and it works on iTunes... I guess since everyone else is saying that...

  33. exblogger says:

    I'm thoroughly enjoying the mix in iTunes. Especially enjoyed Yeah, Whatever and The New Stone Age, as well as my favorite track from Year Zero.

    My only gripe is that if I pause it in iTunes, it starts over from the beginning.

  34. This is pretty cool. Thanks for putting it together. There's some stuff on here I have to go buy now.

  35. thecore87 says:

    I just want tell you that your first mixtape is great. You've got taste. :)

  36. elfoozlero says:

    Right the fuck on!


    I expected to hear "Heathcliff!" (Kate Bush: Wuthering Heights) at various points during the last song. Your probable response: Fuck You! :-)

    In all seriousness: Ya to der mixtapen!


  37. holyfilament says:

    Love that Bounte song.

  38. roninspoon says:

    Thanks for doing this. My listening habits had gotten a little stagnant and needed some freshening up.

  39. xtttg says:

    Stops after playing the first song in Rhythmbox under Ubuntu (Gutsy). Sometimes it shows "Belly -- Low Red Moon", sometimes "Shriekback -- Amaryllis in the Sprawl" (but plays Belly).

  40. pikuorguk says:

    Not heard of half of these before, they're quite nice.

    Currently installing Visual Studio 2005 so anything that stops me wanting to destroy my computer is a good thing :-)

  41. I liked way more of this than I was expecting to. Thanks for doing it - I'm looking forward to 002.

  42. emtel says:

    This music is fucking awesome. I have enough taste to know good music when I hear it, but not enough to actually find it on my own. You rule.

  43. In case you're interested, my favorites after a couple of days of listening are "They", "Zero-Sum", "Going Nowhere", "Simon's Sleeping" and "The Rest of Us Sleep". I didn't much like this version of Saltwater though.

    Thanks again!

  44. jkow says:

    Thanks alot. Great mix you put up there. Lots of good stuff in it I never heard about in Germany. :)

  45. boggyb says:

    /me enjoys jwz mixtape 001

    Damnit, you're going to make me go out and buy music. I'm about 20 minutes into that mixtape and have heard at least three songs that I like enough to want the album.