Heard

heard is a native Mac application that sits in your menu bar and records what you listen to in iTunes.

It's the small part of last.fm that I want. It records when you start a song, how long the song is, the artist, et. cetera. It's anti-social, has nothing to do with the cloud, and the use case is less precise than 'social sharing and discovery': the main end-product is the ability to export your songs to JSON.

The Glory Days Of Audioscrobbler + last.fm, Tinfoil Hats

I was an eager user of Audioscrobber, which became last.fm, until it was acquired by CBS music group and then the founders left and then there was all kinds of drama about them possibly forking over data to the RIAA. The tinfoil-hat wearing users with iTunes libraries not entirely purchased from the iTunes Music 'Store' understandably ran away. That and the new features they tried to implement, like streaming and subscriptions seemed like a money-making proposition for the Pandora-listening audience rather than a feature for data-hoarding programmer-types like myself.

But, to their credit, Audioscrobber.app was released as open source (and provided the 'aha' moment for how to get heard to work). Plus, Lastgraph introduced the world to the streamgraph, later made accessible by d3js.

Oh My God I Am Terrible

This app took a really long time to write. An embarrassing amount of time.

I'd really recommend writing Mac apps, even though (possibly because) the experience invokes unending puzzlement and rage. It's not as wild as writing in lisp or Factor, but it's practical, mind-bendy, infuriating, and guaranteed to take you out of your comfort zone.

Initially heard wrote CSV files, like minute does. But then switched to Core Data. It started without any libraries, and eventually acquired Underscore.m, with the attendant CocoaPods dependency. Minute was written before Automatic Reference Counting, so I had to relearn properties and memory management. Something as simple as opening an About window took hours of trial to find the three-line implementation that works.

A song recorded by heard:

{
  "album" : "On The Water",
  "artist" : "Future Islands",
  "duration" : 291526,
  "id" : "-1183402847677178919",
  "minute" : 1346294601.155178,
  "name" : "On The Water",
  "rating" : null
},
## Visualization Like minute, heard is open-ended: it produces simple data that can be easily charted with [d3js](http://d3js.org/), [raphael](http://raphaeljs.com/), or whatever you have handy. A few examples of graphics would be the [treegraph I made for my recent 'Recently' post](http://macwright.org/2012/09/20/recently.html): [a song chain, a simple force-directed graph](http://bl.ocks.org/3645131): And this quick [song duration histogram](http://bl.ocks.org/3808797): ## Champagne for My Real Friends There are a few turning-point aha moments. * [Justin](http://mapbox.com/about/team/#justin-miller) helped out tremendously with my dumb questions. * [Cocoa with Love](http://cocoawithlove.com/2010/05/finding-or-creating-application-support.html) explained the whole 'application support' folder thing. ## Get It This is open-source software, and it's free. It isn't 'signed', so you'll need to either right-click (or control-click) and click 'Open', or [turn Gatekeeper off](http://its.uiowa.edu/apps2/support/article/4038) if you're using Mountain Lion. It almost certainly has bugs and could use lots of refinement. Head to the [issue tracker](https://github.com/tmcw/heard/issues) if you've got something to report, and file a pull request if you've got something to contribute. It's the tmcw/heard project on GitHub.
heard.app

- Tom MacWright, Posted Oct 01, 2012
@tmcw Twitter Facebook