Emacs Can Haz Brainz?

Adam mentioned MusicBrainz in the comments of the last article.  I took that as a challenge, of course.

I only implemented the query bits, though.  I’m selfish.

(Oh, OK, the only reason I didn’t do the submission part, too, is that I can’t make up my mind whether cddb.el and musicbrainz.el should share the same editing mode or not.  I think perhaps.)

[Update: That felt like a cop-out, so I’ve started implementing MusicBrainz submitting.  I needed some way to get a MusicBrainz-compatible CD Table-Of-Contents listing, so I hacked up cd-discid to do that.]

Editing freedb/cddb entries

The new album New Album from the folk band Boris

When ripping large quantities of CDs, you really have to have an efficient way to query and edit CDDB entries.  So here’s an Emacs library for doing that. It includes a bunch of convenience functions for fixing up other people’s bad entries, and you also have all the standard Emacs editing commands at your, er, command, so it’s rather nice.

I also download the entire database from freedb now and then.  It’s useful mainly when sampling (old) vinyl.  By using an approximate match for the albums, I can usually find the album in question, which means less typing for me.

However, the DISCID collisions these days are just ridiculous.  I’ve written about this before, but the situation is as ridiculous today as ever.  I mean, even more so.  It’s now impossible to submit any new album on the “rock” category, so everything I submit now is apparently “folk” or “data”.

As demonstrated.

Musical Beats & Pieces

The music player

The last hoard of Emacs-related code I’ve written over the years is part of my Emacs-based music player.  It started off (in 1997) as a way to rip my CDs and play mp3s (as well as swap out the mp3s to CD since I didn’t have enough disc space to store all the mp3s).

It’s grown over the years and changed focus somewhat.

Most of the stuff has been written pretty monolithically, with all the code stashed in jukebox.el.  So I’ll be attempting to disentangle parts that could have some reuse value over the next weeks, as time permits.

last.fm web interface

But if you want a system that you can use yourself, the EMMS system is probably a better bet.

The first result from the disentanglement process is scrobble.el. It’s a library for interfacing with the last.fm web site.  I like last.fm.  It’s the only “social networking” site I use — I find it genuinely useful for finding concerts and stuff.

Following will be a cddb library, a DAE (i.e. cd-ripping interface), a sampling-and-splitting interface, and probably other bits and bobs.  As well as the jukebox itself.

Sennheiser HDR 180

Headphones cradled on the charging cradle

Most hardware seems to have been created in a “will this do?” mind set.  They have a bit of technology, and they have some economic restraints, and then they rush it to market.  It makes perfect sense, and I can’t envision that it’ll ever change, but it’s somewhat depressing.

The hardware in question this week are the Sennheiser HDR 180 wireless headphones.  They use Klear wireless technology, and they sound really good.  There are no drop-outs, there is no buzzing — they just work, even if I walk to the far side of the apartment.  They’re, technically speaking, what you would call “ace”.

Cradle on/off button

But then there’s the User Experience details.

The headphones usually rest on the charger thingie you see up there.  It’s nice.  So when I start watching something on the “TV” and I want to use the headphones, I pick up the headphones and put them on my head?

Nope.

I pick up the headphones.  Then I hit the “on” button on the base station.  Then I hit the “on” button on the headphones themselves.  Then I put them on my head.

Headphone UX

Because, I mean, why would you assume that just because I’m picking them off the charging station, I want to use them?  Perhaps I want to do something completely different.  Perhaps I picked them off the charging station to hang them out to dry on the balcony?  Or perhaps I wanted to dance around with them, fondling them inappropriately?  I mean, that’s so much more likely than wanting to use them.

This is why I hate all hardware.  Hardware never works the way it should.

And I didn’t even want to go into the UX of the headphones themselves.  You see those five buttons on the headphones?  Yes, there’s volume up, on/off, and volume down buttons.  Fine.  But then, next to them, there’s two balance buttons.  So when I have the headphones on my head, which is usually where they are when I’m using them, I have to feel around, tentatively, for the volume buttons, because once you hit the balance buttons, you’ll never get the right balance back again.  There’s no “return the balance to the, er, balanced position” button. It’s like FAIL!!!1! And who the fuck wants to change the balance, anyway?

Oh, by Emacs.  I hate hardware.