Building a Songbird Add-On: Part 0

songbird-artist-web-media-view-mockupAfter com­plain­ing about alpha­bet­i­za­tion in music libraries for — wow — almost a year, I’ve decid­ed it’s time to do some­thing about it.

I know very lit­tle about JavaScript and XUL, but that is going to have to change. My goal is to com­plete the add-on described here, an Artist Web media view, or per­haps “Con­stel­la­tions.”

To make the task appear less daunt­ing, I’ve bro­ken it up into many mile­stones of mar­gin­al improve­ments. If I fol­low this time­line, the plu­g­in will be usable and released to the pub­lic as Con­stel­la­tions v0.1 on July 27.

Mile­stone ver Descrip­tion Tar­get Date Actu­al Date
i 0.0.1 dis­play all artists in a ver­ti­cal list 08 Jun 2009
ii 0.0.2 dis­play most recent Last Played val­ue for each artist 15 Jun 2009
iii 0.0.3 dis­play total Play Count for each artist 22 Jun 2009
iv 0.0.4 vary font sizes accord­ing to total artist Play Count 29 Jun 2009
v 0.0.5 vary font col­ors accord­ing to total artist Play Count 6 Jul 2009
vi 0.0.6 vary font col­ors accord­ing to Last Played 13 Jul 2009
vii 0.0.7 arrange artist names left-to-right instead of ver­ti­cal­ly 20 Jul 2009
viii 0.1 focus first of the artist’s tracks in the playlist pane when the artist’s name is clicked 27 Jul 2009
ix 0.1.1 resize/re-col­or based on play fre­quen­cy instead of play count 10 Aug 2009
x 0.2 options win­dow that alter­nates between which vari­able is assigned to which font prop­er­ty 31 Aug 2009

I’m going to cre­ate a sep­a­rate blog to track my progress on this, for sev­er­al rea­sons:

  1. Threat of shame. If I empha­size pub­licly that I am going to do this, and I fail, I’ll be kind of embar­rassed. Hope­ful­ly that will moti­vate me to actu­al­ly com­plete the project.
  2. Geeks love prov­ing that they’re smarter than you. If I’m hav­ing a tough time with some rel­a­tive­ly ele­men­tary code, maybe peo­ple will mock me in the form of writ­ing the cor­rect code them­selves. I’m cer­tain that what I’m attempt­ing could be done in no time flat if I’d been for­mal­ly edu­cat­ed in things like JavaScript. Maybe the bit­ing sar­casm of peo­ple who need to demon­strate their intel­li­gence will show me where I’m going wrong.
  3. To encour­age pla­gia­rism. Look, I’ll admit that I’d be proud if the add-on that comes out of this bore my name. But ulti­mate­ly, I don’t care. If some­body sees what I’m doing, likes it, wants it to be their own, and knows they can beat me to it, then great. At least we’ll have the add-on.

If you feel like mock­ing me or encour­ag­ing me you can email me at topdownjimmy@gmail.com, leave/follow com­ments on this post, or vis­it my ded­i­cat­ed Con­stel­la­tions blog to see where I’m tak­ing this and how quick­ly I fail.

Alphabetization Is Positively Fucking Shite for (large) Music Libraries

I’ve been run­ning Ubun­tu for sev­er­al weeks now, prob­a­bly over a month, almost exclu­sive­ly. There are a cou­ple things I miss about Win­dows; I keep it installed as a dual-boot option in case it takes me more than half an hour to fig­ure out how to do some­thing in Ubun­tu that I can do in Win­dows in under two min­utes.

One of the things I miss the most, of course, is foo­bar. I’ve been using Song­bird, whose Lin­ux ver­sion runs just as well as the Win­dows ver­sion I’ve got­ten used to. But I didn’t tru­ly real­ize how lost I was with­out my library fil­ters in foo­bar; I think if in Win­dows I had want­ed to play some­thing in Song­bird, but didn’t know what to lis­ten to, I would have used my foo­bar set­up to fig­ure it out, then searched for the album in Song­bird. I did this absent­mind­ed­ly enough that, now that I’m with­out foo­bar, I’m alarmed at how dif­fi­cult it is to nav­i­gate my library. I’m sit­ting here with Song­bird open, and I’ve got 1,369 artists. What the hell am I sup­posed to do with that?

In foo­bar I had mood tags and clus­ters based on All­Mu­sic data, so if I want­ed some­thing upbeat, I’d just look under the appro­pri­ate moods. If that didn’t work, I’d at least find an artist who came close, and then could use foo_scrobblecharts to find any­body in my library who was up to two degrees of sep­a­ra­tion away from any select­ed artist on Last.fm.

In Song­bird, the best I can do is browse by genre (eye­roll), or use the Music Rec­om­men­da­tions add-on, which only lists the top five match­es for the cur­rent­ly play­ing artist on Last.fm, whether or not those five are in my library; if one of them hap­pens to be, it con­ve­nient­ly links me to their tracks in my library, but it’s not that fre­quent an occur­rence.

Any­way. The short of it is, for the eight­i­eth time: some­thing has to be done. How on God’s green earth does any­body fig­ure out what to lis­ten to? Oh that’s right, every­body just lis­tens to Cold­play and U2 and Radio­head and Suf­jan and The Hold Steady and The Shins and Miles Davis. If I only had sev­en artists I sup­pose I wouldn’t be mak­ing much of a fuss either.

Alphabetization: Part III

In what I think may be the first tru­ly nov­el brows­ing envi­ron­ment devel­oped for Song­bird, ♪Pho­to dis­plays your library as a pile of artist pho­tos pulled from Last.fm. They can be dragged around and rearranged, and their ori­en­ta­tion is remem­bered between Song­bird ses­sions. In my test­ing it is unus­ably slow, how­ev­er it is remark­ably excit­ing to see inno­va­tion like this before Song­bird is even out of beta. It would be an easy mat­ter to imple­ment a “snap” fea­ture that would clus­ter sim­i­lar artists togeth­er based on Last.fm data, or to pro­vide an alter­nate view by album cov­er rather than artist pho­to — hon­est­ly, who can rec­og­nize some of these artist pho­tos?

Any­way, as it’s only a cou­ple weeks old I’m sure it will improve, and it demon­strates just what amaz­ing things can be done with the Song­bird plat­form. Hope­ful­ly we’ll see more dar­ing and clever exten­sions like this when Song­bird hits 1.0 next month. I’m con­sid­er­ing mak­ing it my full-time play­er in order to col­lect more sta­tis­tics (play dates, play counts, added dates, etc.).

[req] Perfect Recall

I have a big prob­lem with keep­ing track of the media I con­sume. With all the albums I down­load and lis­ten to, and all the shit I read online, I’m oppressed by this feel­ing that it’s all just run­ning through me with­out being digest­ed or processed. It’s over-stim­u­la­tion, I end up with all this shit in my head that I don’t know what to do with. I could of course just lim­it my intake, but I’m addict­ed to media and I don’t feel like chang­ing any time soon. Plus there’s got to be a way I can apply all this stuff.

I sup­pose tra­di­tion­al­ly that’s what the blog for­mat is meant for, to just kind of shit out every­thing you con­sume in the form of links and video embeds. But real­ly that’s more like just “tak­ing notes” at a lec­ture with a cas­sette recorder, see what I mean? That’s just tran­scrip­tion. I need some­thing to do with it all. This prob­lem is addressed to some extent by my metic­u­lous music library cura­tion with foo­bar, and my des­per­ate calls recent­ly for some­body to improve on the way we man­age our music.

I think a pre­vail­ing prob­lem is that of lin­ear­i­ty; I can write a post on here, then anoth­er post, then anoth­er, and they appear chrono­log­i­cal­ly in a line. Tag­ging and cat­e­go­riz­ing helps to make the con­tent on here a lit­tle less lin­ear, but it’s still not sat­is­fy­ing enough. I mean what I want is to be able to have some very loose, scrap­book-y inter­face where I can just kind of swim through col­lages of things: albums, jour­nal entries. Snap­shots of var­i­ous aspects of cer­tain time-peri­ods. Paper is free-form enough to serve a pur­pose like this, but note­books aren’t search­able or eas­i­ly rearrange­able, and aren’t as ubiq­ui­tous as the web.

Con­tin­ue →

Alphabetization: Part II

First, some good news: Song­bird is now in pub­lic beta! It’s amaz­ing how sta­ble things have got­ten just over the last six months. And, sig­nif­i­cant­ly, it now fea­tures a Play­back His­to­ry API, which by the looks of things allows devel­op­ers access to the entire play his­to­ry of any song in a library, some­thing that is cru­cial to the kind of deep library scav­eng­ing I’ve been pin­ing for.

Since I last wrote, every­thing I see or read seems to inspire my half-baked ideas about the bet­ter ways we can browse our unman­age­ably large music libraries. After telling a friend about these ideas, he said:

Yeah, it’s actu­al­ly real­ly frus­trat­ing. I inten­tion­al­ly keep the num­ber of artists on my iPod small so I don’t have to sort to find things I’m cur­rent­ly into.

Me too.

Then there are the peo­ple who are doing a lot of (real) work towards nov­el inter­faces like the (hypo­thet­i­cal) ones I’m describ­ing; Last.fm’s “Islands of Music” (explained here) demon­strates the kind of artist-sim­i­lar­i­ty topol­o­gy that would make brows­ing your library a more pleas­ant expe­ri­ence; Lee Byron explains in more detail how he devel­oped that Last Graph info­vis; nec­i­mal releas­es a Music Rec­om­men­da­tions exten­sion for Song­bird that promis­es to use Last.fm’s data to find with­in your library artists sim­i­lar to the one play­ing; and the Auro­ra project, part of the Mozil­la Labs con­cept brows­er series, depicts a rad­i­cal three-dimen­sion­al view of files and data with auto-clus­ter­ing, which, if applied to a music library, would be noth­ing short of incred­i­ble.

I’ve also thrown togeth­er a piti­ful lit­tle mock-up of what Song­bird might look like when you start it up with the kind(s) of exten­sions I’m hop­ing for:

The two core com­po­nents depict­ed are the Start Page and the Time­line View. The Start Page I feel would be seri­ous­ly valu­able, one of the ideas behind all these blath­er­ings of course being that one doesn’t always have a des­ti­na­tion in mind when open­ing their music library. The Start Page would offer a num­ber of con­ve­nient “jump­ing-off” points, pulling you into your library to explore it fur­ther — by artist sim­i­lar­i­ty, maybe, or by play his­to­ry prox­im­i­ty, after just a cou­ple clicks.

The Time­line View is a zoomable time­line, shown here zoomed to a dai­ly view. Zoom­ing out could show you albums played with­in recent weeks; then months, quar­ters, etc. These albums might be sort­ed by Peri­od­i­cal Impact, some­thing I explained in depth here; essen­tial­ly they would be sort­ed not by the raw num­ber of times they were played with­in any giv­en peri­od, but by how dis­tinct they were to that peri­od.

Even these mea­ger ideas are leagues ahead of what’s avail­able, and I’m not even a data ana­lyst. Just imag­ine how a library’s play his­to­ry data could be exploit­ed by some­body trained in these things.

Alphabetization Is Not Fit for Music Libraries

Wikipedia’s arti­cle on alpha­bet­i­za­tion explains:

Advan­tages of sort­ed lists include:

  • one can eas­i­ly find the first n ele­ments (e.g. the 5 small­est coun­tries) and the last n ele­ments (e.g. the 3 largest coun­tries)
  • one can eas­i­ly find the ele­ments in a giv­en range (e.g. coun­tries with an area between .. and .. square km)
  • one can eas­i­ly search for an ele­ment, and con­clude whether it is in the list

The first two advan­tages are things you almost nev­er need to do with music libraries. And the third has been sup­plant­ed by now-ubiq­ui­tous search box­es: if you know what you’re look­ing for, you search; and if you don’t, an alpha­bet­ized list is not the way to find it.

Web vision­ary Ted Nel­son (<mst3k>Dr. Ted Nelson?</mst3k>) has been para­phrased as point­ing out that “elec­tron­ic doc­u­ments have been designed to mim­ic their paper antecedents,” and that “this is where every­thing went wrong: elec­tron­ic doc­u­ments could and should behave entire­ly dif­fer­ent­ly from paper ones.” If the fold­er metaphor is inad­e­quate for dig­i­tal doc­u­ments, no won­der it’s so piti­ful at han­dling music. The prox­im­i­ty between pieces of music in a library should least of all be based on the first let­ter in a band’s name – it’s as arbi­trary as sort­ing them by the vocalist’s month of birth – yet this is how it’s uni­ver­sal­ly done.

Music library orga­ni­za­tion needs to be re-thought from the ground up. We need to con­sid­er how it is that peo­ple used to lis­ten to music before it was all on their iTunes. How are your CDs orga­nized (or dis­or­ga­nized) on your shelf? How are they orga­nized in your head? What is it that prompts you to lis­ten to what you lis­ten to when you lis­ten to it? And how can we use com­put­ers to adopt and enhance these ways of think­ing, rather than forc­ing us to think like com­put­ers? Con­tin­ue →

Songbird 0.5

Song­bird 0.5 was released last week, and, while not tech­ni­cal­ly incon­sis­tent with claims that its RSS pars­ing had been “improved,” I was dis­ap­point­ed to see that two of my three pod­cast sub­scrip­tions still aren’t com­ing through. The prob­lem has been migrat­ed to a new bug tick­et.

There’s also a new “Media Views” fea­ture, which looks promis­ing. As of now the only add-on to take advan­tage of this is a sim­ple tag-cloud library view, but I imag­ine things could get real­ly elab­o­rate there. Their line, “Tired of music play­ers that look like spread­sheets?”, has me antic­i­pat­ing all kinds of inno­v­a­tive brows­ing envi­ron­ments; pic­ture a nav­i­ga­ble mood-clus­ter ter­rain, or a pannable, zoomable, click­able his­to­ry wave­graph. I’m seri­ous­ly con­sid­er­ing teach­ing myself enough XUL to be able to write a hot­ness add-on.

Amaz­ing­ly, 0.1 was first released over two years ago. And their releas­es have code-names like Bowie and Eno? Who knew.

Some day, Songbird will:

  • have a prop­er Cov­er­Flow clone that doesn’t lag or rely on Java (like AlbumAp­plet), and that allows for cus­tom loca­tions of art on the dri­ve.
  • mon­i­tor fold­ers for new music.
  • have an inte­grat­ed Bit­Tor­rent client that puts music from track­ers direct­ly into your library.
  • jump to the loca­tion in a page where the cur­rent­ly play­ing mp3 was found.
  • prop­er­ly rec­og­nize all XML pod­casts (a known issue).
  • allow you to browse by when albums were added, when they were played (not just last played, but over their entire his­to­ry), and by hot­ness.
  • sub­mit to Last.fm.

And on that day…