Gronk 1.9

I just released a new version of Gronk. Do any of you besides waider actually use it?

The main difference in 1.9 version is that now it uses "id3tag" instead of "mp3info", making its files much more interoperable with iTunes. (But 1.8, which I released last month, had a whole bunch of performance improvements.)

Tags: ,

36 Responses:

  1. ipsenaut says:

    Very nice. Have any photos of your Gronk jukebox at work?

  2. justinmm2 says:

    I haven't upgraded since 1.5 or 1.6, but I still use it.

    Thanks :)

  3. otterley says:

    iTunes has an interesting way of handling the compilation "Various Artist" overload problem. I think it's pretty clever.

    Apparently CDDB2 supports a "this is a compilation CD" bitflag for any given CD. If iTunes finds it, it will stick a TCMP tag into the ID3v2 frame for mp3 files or the CPIL atom for m4a files. It does not use "Various" for the artist field; it uses the actual artist for the artist field and the actual song name for the song field. The album field remains the album name of the compilation. On disk, however, the song is stored in root dir/Compilations/Album Name/Track Number - Song Title.tla.

    • jtl says:

      Unlike every other ID3 tag iTunes supports, the 'master copy' of the compilation bit seems to be the iTunes database, not the ID3 tags in the file. That is, once it's been loaded into iTunes, setting or removing the TCMP tag from the file won't change iTunes' idea about whether the song is from a compilation album.

      What I really want is an 'album artist' field, separate from the current track artist For most compilations this would be 'Various Artists', but for some it would be 'Soundtracks', and for others 'Just Say Yes' or something else. For tribute albums, I'd even have it be the artist being tributed.

      • jwz says:

        Did you re-do "File / Add to Library"? I think that iTunes never looks at the ID3 tags after the files have been imported, so if you change the tags, you need to re-ping it with "Add" again.

        • otterley says:

          The behavior depends on how you've configured iTunes. If you have "Keep iTunes Music Folder Organized" checked in the Preferences > Advanced dialog box, then it will move your files around according to its placement algorithm as you modify the tags. This includes the "is a compilation" tag.

          • jtl says:

            I don't have 'keep iTunes music folder organized' set, but that only controls (as far as I know) iTunes' renaming the files.

            I use a system similar to but pre-dating gronk; all the tags are set, and all the files are named & organized, by scripts of my own. After I import something into its final place, I import the files into iTunes.

            For every tag besides TCMP, I can make changes in the file that are then picked up by iTunes (after forcing it to re-read the file by playing it or using file/get info). But not for TCMP -- after importing, to change iTunes' idea of the compilation value of a file, I have to use the iTunes info editor.

            My system sets TCMP to '1' for every track on any album where the artist value differs from one track to another. That works fine as long as I don't typo an artist name on one track.

        • jtl says:

          No, I didn't, but with every other tag I don't need to. Forcing iTunes to re-read the file (either by playing it or by get-info) will cause it to refresh its view of the tags from the file.

    • jwz says:

      Hmm, I'd never seen it do that, I guess because none of the MP3s fed to it had that bit set. I'd only seen it do the horrible thing where it would scatter every track on a comp to the four winds, with file names like band1/compname/track1.mp3, band2/compname/track2.mp3, etc., instead of keeping them together as various/compname/track*.mp3 (which is what Gronk does.)

      I did learn an interesting thing though:

      I had a bunch of MP3s with ID3v1 tags in them, organized and named in the gronky way (comps under "various/", all file names downcased and with underscores, etc.), and I dumped those into the iTunes directory and did "File / Add to Library". In that case, what happened was, iTunes converted the ID3v1 tags to ID3v2.2.0 tags, and renamed all the files and directories (and scattered the comp tracks hither and yon.)

      But, now that my files have ID3v2.3.0 tags on them, it does something totally different: it imports them, and is able to play them and everything, but it doesn't rename anything! The files retain the gronky names and organization. This was a nice surprise, and very convenient, because it means that now I can re-sync gronk to iTunes with rsync.

      Incidentally, when I rip comps, I never end up with "Various" in the artist field for a song. I end up with stuff like this in the .cddb file:

        DTITLE=Various / Komposi001
        TTITLE0=Eco-Hed featuring Jim Marcus / Land of the Free
        TTITLE1=Impossible Recording Machine / Damage

      and this in the ID3 tags, in directory various/komposi001/:

        TPE1: Eco-Hed featuring Jim Marcus
        TALB: Komposi001
        TIT2: Land of the Free

        TPE1: Impossible Recording Machine
        TALB: Komposi001
        TIT2: Damage

      The TCMP field is not mentioned in the ID3v2 spec; seems to be an iTunes invention, and I can't find a description of it anywhere. (It's hard to search for, because apparently there's a Windows movie player called "TCMP".) What goes in that tag, another copy of the name of the album? Or is it just a boolean?

      • wfaulk says:

        Do they at least have the experimental bit set in the ID3v2 header? Frame IDs that start with X, Y, or Z can be used regardless of being in the spec, but if you use other frame IDs that aren't officially defined, then you're supposed to declare the whole structure as being experimental.

      • otterley says:

        According to my tag disassembler, it holds a string value of "1".

        • jwz says:

          I can't find any Unix tools that will let me write the TCMP tag; do you have one?

          • zathrus1 says:

            I know this is an archaic post, and you've probably already solved it, but if not then I can provide you with patches to id3lib 3.8.3 and id3v2 0.11 that support TCMP. I've confirmed that iTunes sees the tag properly (after reading the above thread for what iTunes was actually expecting to see).

            I've been going through a bit of tag hell after discovering that TagLib corrupted all 9000+ of my MP3s by completely screwing the ID3v2 and APEv2 tags -- in an essentially unrecoverable way. Thankfully, I had backups.

            If you'd like the patches, I'll send them to you -- I don't think I'll make them generally available since TCMP isn't in the id3v2 standard. It would've been nicer if Apple had used some of the official tags properly -- TIT1 (Content group description) or TIT3 (Subtitle/Description refinement) would've been better, or even TCOM (Composer) if you wanted to stretch it. Oh well.

      • mark242 says:

        This is the "Is A Compilation" boolean that was mentioned above.

        The behavior of iTunes that you're talking about is a result of two things: the "Copy files to iTunes Music folder when adding to library" preference, under Advanced, and the existance of those filenames in the iTunes Music Library.xml file. The maddening part of this preference is that if you have the "Keep iTunes Music folder organized" preference unchecked and have "Copy files [...]" checked then your music directory turns into... well, it isn't pretty.

  4. fnoo says:

    I plan to, but it's waiting on me finding a second hand laptop or silent case with a line out port rather than the standard amplified headphone jack.

    Amplified output > mid-range speaker amplifier = suck.

    • jwz says:

      I'm going S/PDIF from the computer to the stereo amp. It's the only way to fly.

      • jwm says:


        It's important to shop for the cheapest, nastiest sound card for digital output purposes, that way you get something that will output the bits directly, rather than doing anything "clever", like converting to analog to run it through the volume control, then back to digital at a different resolution (ie the SB Live!).

        I ended up with a cheap-ass CMedia card doing optical out to an MSB Link DAC and coax to a receiver for the Dolby/DTS stuff. 'Tis wicked. A 200 watt power amp is all good for getting the big nightclub noise without all that tedious mucking around with, ya know, vomit and house music and people defacing your bathroom.

        Though flicking the light switch on and off is a nuisance. Maybe I should buy a strobe light...


  5. aerosolkid says:

    I'm using 1.6

    I hacked it to use multiple playlists. Works, but it's ugly.

    I've been planning on re-visiting my mod with the latest code, to make it release worthy.

    Now seems to be as good a time as any.

  6. rcr203 says:

    Looks very cool. Sadly, my mad skills have atrophied due to lack of use over the past 3 years and I'm somewhat intimidated by diving into building something new. Plus, I tend to use TiVo to play my playlists (built through winamp), and I have a bunch of single mp3's and stuff I ripped from vinyl and tape.

  7. veep says:

    I considered using it, but I really wanted scoring, so I went with mserv. It's similar to gronk, but with scoring, so I get to hear my favorite songs more frequently. It also has direct icecast support (though I haven't tried it).

    If someone could merge the feature sets of the two, in either direction, that'd be cool.

    • jwz says:

      I hadn't heard of "mserv" before. But based on their web pages, I probably wouldn't have given it a second thought. Instead of screen shots or example usage, my first dozen clicks find me fascinating details like "4xx transient negative completion reply". Excellent sales job there, guys!

  8. divelog says:

    Did you ever try out Edna? It's of a similar desgin to Gronk. We use it on our mp3 server here at work. It doesn't have the automatic CDDB stuff like gronk, but that's what my mp3 ripper is for.

  9. sjthespian says:

    And let's not forget netjuke (what I used to run) and slimserver (what I run now). You can netjuke at and slimserver at Slimserver is also the opensource engine behind the SliMP3 and newer Squeezebox and is also used by the Roku mp3 appliance.

  10. nomenklatura says:

    I use it (gronk) and like it very much. keep it up!

  11. vample says:

    Yea, I've been using Gronk for a good while now.

    My files were named differently and had no cddb files, so I wrote a couple scripts to generate the cddb files when I add an album, and another to build a symlink farm with the proper filename format.

    I also solved the "lots of individual tracks" issue by creating a fictional "Individual Tracks" album per artist, with a faked up cddb file for the year '9999'.

    I've been meaning to add an icon to allow a "queue up all tracks by this artist".

    I run Gronk on a PC that I have setup to play video content on the TV as well. The biggest issue is that alsa seems to wedge things after a few days when I set it up to mix audio content from different apps, so I have to stop and start Gronk rather than just pause it when I want to watch videos. Need to resolve that issue or just get a second sound card to give to Gronk.

  12. asjo says:

    I'm using a slightly modified Gronk (changed to play Ogg-files) on the jukebox I set up at work.

    The jukebox is headless so I had to use xvfb to run xmms (which I want to run, because without the normalize-plugin, volume-fiddling gets out of hand).

    Every hour the jukebox pauses Gronk, streams the news from the radio for 3-5 minutes, and then turns Gronk back on.

    The jukebox is an old PIII and so the interface is a little slow. I tried for 10 minutes to get mod_perl going, but gave up quickly - little gain, too much pain.

    The only thing I've been thinking about implementing, but haven't gotten around to, is a "play this file"-interface - so you could upload an mp3-file via the browser and have it played immediately. Maybe someday.

    Thank you for Gronk.