Tuesday, March 31, 2009

Playdar in Action

I realize that trying to explain the concept of content resolution (and Playdar) can be a bit technical for most, so I figured I'd just show you the power behind what is going on with a quick screencast of the latest alpha build in action over at Spiffdar.org.

The project is still in it's early stages, but if you are like me then you head is already spinning on where this could go and what types of experiences it could enable.

Pretty cool, eh?

UPDATE: Screencast Part 2: Retrofit existing sites to support Playar

Reblog this post [with Zemanta]

Thursday, March 26, 2009

Program Directors > Recommenders

The endless debate on the best approach for providing music discovery experiences continues rage. This continued with a SxSW panel put on by Paul Lamere (from The Echo Nest) and Anthony Volodkin (from The Hype Machine). For some background, here is their presentation:

Additional notes from Anthony are here: http://fascinated.fm/post/89782283
And notes from Paul can be found here: http://musicmachinery.com/2009/03/26/help-my-ipod-thinks-im-emo-part-1/

My take? There are many ways to classify these different approaches, and some can be considered subsets of others. But, in short there are more approaches than most can shake a stick at... with some of the more notable examples being (as I see it):

  • "Musicologist"/Expert Analysis - a hundred people with headphones on categorize songs on a few hundred different attributes (e.g. minor chords, upbeat, heavy piano)
  • Content-Based/Waveform Analysis - a computer looks at the sonic attributes of a song (e.g. tempo, harmonic range, etc) and then looks for other songs that posses similar attributes
  • Collaborative Filtering - people who listen to/buy/highly rate song X, also have a high correlation to buying/listening to/highly rating song Y
  • Editorial (e.g Bloggers, Pitchfork, Radio) - some one broadcasts their opinion... "hey, these guys sound like so and so and they are good. I give them 5 stars".
  • Semantic (e.g. tag clouds) - by matching tags, genres and sentiment keywords (either manually input by users or extracted from web articles)
  • Curator (e.g. playlist sharing) - community generated "top song" and "just listened" charts, curated playlists, TV/movie soundtracks. These could be actively curated lists of songs (e.g. playlists) or passively programmed by the curator (e.g. "just listened").
  • Shuffle - just a random selection of tracks from a fixed set of songs
  • Biographical - this artist you like was influence by this other artist or was also in this other band
  • Friend-to-Friend - the most common, one friend tells another... "hey, have you heard X? You'd like them".
For each, you generally have two sources of information which to base your recommendations on:

  • Implicit - input/feedback is collected passively/automatically (e.g. listening history)
  • Explicit - input/feedback is solicited and manually provided (e.g. user ratings)
Some of the approaches above are exclusive to one type of data input (e.g. "editorial" is explicit feedback only), but most incorporate both.

And, as we speak there are hundreds/thousands of Music Information Retrieval PhD candidates figuring out new approaches, there are new spins (and terminology) on the existing methodologies, and companies combining two or more of the approaches above. Having spent some time in the discovery/recommender space myself, my take is this...

There is no magic bullet.

We all discover content everywhere, and from every context.... friends, TV soundtracks, recommendation engines, radio, etc. In my opinion there is no such thing as a "better recommendation".... there is only a "good enough" (in that what I discovered was satisfying) or a "bad" recommendation. What is required in both cases is transparency as to why it was recommended. I say often when it comes to recommendations... "the why is usually more interesting than the what". That is because the "why" helps user identify the sources that they trust, can relate to, and can be turned to again in the future for inspiration. Sometimes that source may be a machine, sometimes it may be an editor, sometimes it may be a chart. They all have their value, and they all serve the same purpose.. to be one my personal "program directors".

I had a conversation this morning with J T. Ramsay where he told me: "[music] discovery is one of the biggest fallacies of all time. If people were so amped on discovery, radio would have been formatted differently." And I have to admit, I don't disagree.

What consumers have continually asked for is "programming", whether is be playlist builders, charts, "just played" data, recommendation engines, DJs, mixtapes or CDs. Basically, it just comes down to "don't force me to make a decision every 4 minutes about what I'm going to hear next". As music services continue to move to small UI devices where search and destroy is not a viable use case (mobile, car stereos, etc.), programming becomes even more essential.

The title of this post "Program Director > Recommenders" is not meant to imply that they are different and that one is better.... what I mean is that one is a superset of the other. Trying to pit them in a battle with each other is akin to asking... "which is better when you are hungry, a sandwich, a hot dog, or an apple?". The answer for me is, "they will all do the trick... it's just a matter of what temporal mood I'm in weighed against how much effort I have to expend to get each ."

Reblog this post [with Zemanta]

Wednesday, March 25, 2009

The Importance of Playdar

One of my most recent posts discussed (and/or ranted about) "content resolution". In that post I mentioned a very compelling new open-source project called Playdar. This project was started by some of the folks from Last.fm, but is rightfully gaining attention of the digital music innovators very quickly. What is it exactly, and why is it so important?

Playdar - About: "

About Playdar

Playdar is designed to solve one problem: given the name of a track, find me a way to listen to it right now.

It will search your local disk (iTunes library, MP3 folder etc.), it will search your home or office network (kinda like searchable iTunes shared libraries) and it will search other sources. You can write plugins for Playdar to enable it to search additional sources. It's fast. If a matching song is within reach, it can start playing in less than a second.

This is called Content Resolution. Playdar is a "Content Resolver" - it will take metadata (artist, album, track names) and resolve them to a location of a matching music file. This might be on your disk, or over the network - regardless, sources are always presented as URLs that point to your local machine. Playdar runs a lightweight webserver on your machine - this is how you talk to it, and it's how other desktop apps and web apps talk to it.

Playdar has an HTTP API that returns JSON. It supports JSONP, so any website that you authorize can use Javascript to talk to the Playdar server on your machine. This means:

  • Websites can automatically put play buttons next to songs they reference.
  • Streaming services and music blogs can save bandwidth by playing you your own copy of a song instead of streaming it from a central server.
  • A lot of interesting web-app mashups are possible. Pull interesting music data from an API, and play people content they already have.
  • You could build an iTunes-Genius-like web app using Playdar and the Last.fm API, all in-browser.
  • You could build a playlist sharing site that shares playlists, not mp3s. Think muxtape, but it will only play songs found on your machines.
  • If you run Playdar on your laptop and desktop on the same network it will take advantage of songs on either machine.
  • Music on the web can be marked up so you can always take advantage of local content."

Sure, there are other remote access/webserver solutions out there that enable you to access your content (and your friends') remotely - see Simplify Media and Orb. And there are P2P clients and torrents that enable you download virtually any song available. But, what gets me excited about this is the single interface with cascading resolution logic that it enables - and how it can seamlessly integrate the (existing) web with local/network/free-range/streaming service content. In short, it keeps checking sources in priority order until it finds what it's looking for.

It fosters the development of sites and apps that can add value with context (editorial, informational, social) and discovery features without putting them in a position of having to deal with content licensing and streaming costs.

It has the potential to drastically cut costs of existing music services since they wouldn't have to foot the bill (both royalty and bandwidth) to stream content to users that they already have - thereby helping enable more viable economics around music discovery and sharing sites. Or perhaps lets existing music content sites exit the content licensing/streaming business altogether (some speculate that Last.fm's recent moves away from free streaming everywhere but US, UK and Germany are the first step in this direction) and instead focus on adding value *around* the content.

Sites and applications without their own music content could be marked up to support Playdar... adding click-to-play scenarios in Google search results, Facebook, Twitter (site and apps), IM clients, Wikipedia, news articles and more.

It promotes the use of standard markup to identify music content (e.g. hAudio, XSPF, etc.) that enables users to share content (links) and playlists across different service providers. You keep your provider of choice, I keep mine.

It could be extended to support comparison shopping of content across multiple vendors.... e.g. "just give me the cheapest MP3 provided that it is at least 256kbps".

It could tie into your existing social graph, giving you a single view and interface into all of your friends' local/network content. For example, you see in your AIM status that one of your friends is listening to a certain song... you click play. If you have the song, it plays from your machine. If you don't have the song, it streams to you from your friend's machine, if that friend doesn't have a local version of that song then it streams from another friend's machine that does have it. If none of your friends has a local copy of the song, then it finds it on the web. You don't need to know where the song is, Playdar does the work of finding the best source for you.

It could enable the darknet, where you can get access to all of the content on not only your and your friends' machines...but also the friends of friends (of friends). All unmonitorable and untrackable (unlike torrent sites) since each person only accesses content via people they trust - no one in the chain has knowledge of where the content originated from or where it terminated (see OneSwarm for more on this). Taken with the notion of "six degrees of separation"... you theoretically could get access to any file/song from anyone in the worlds in 6 hops or less.

There are a lot of directions this project could be taken and extended, which is the beauty of it being open-source. Have some ideas? Contribute.

In my opinion, this has the potential to be one of the most disruptive music/tech developments we've seen in a long time.

Reblog this post [with Zemanta]

Monday, March 16, 2009

Playtapus Now in the Wild

I've decided to expose a bunch of the pieces behind my "Playtapus Project" on a new wiki at: http://playtapus.pbwiki.com/.

My hope is to get some more people involved - hopefully some that are far more proficient at writing code than me - as well as anyone else that has ideas or/or the talent to help those ideas to be realized. I'd love to see where a group of people can take this, and whether it opens all of our eyes to any new opportunities.

Take a look, and come on in... the water is fine.

Reblog this post [with Zemanta]

Saturday, March 07, 2009

What's In A Name?

I am a closet brand marketer. I often create "brands" (OK, I make up words - usually by combining multiples that when pronounced sound like another existing word) that I think could be interesting or evocative. Over the past decade, I have kept a running list of potential brand names (or tag lines) for the most random things... from fictional band names to non-existent apparel companies to portajohns (toilets) to my own music/tech aggregator "mediaor" (pronounced like "meteor").

As backwards as it sounds, sometimes these words provide a spark for a product idea that I may explore in the future (yes, I have a separate list for those).

For the "brands" that I think have some real potental (or just amuse me) I will go grab the domain name for too. In my opinion, the most promising ones are the ones that express an idea or feeling ("Google", "Amazon", "iPod", "Twitter"), not a literal product implementation or feature ("Search.com","Toys r Us", "CDnow") .

What does this have to do with anything? Well, I have been struggling with how to refer to my latest projects (e.g. "friendP3", "meP3", "ambient signal".). The labels of the implementations were constraining the larger ideas around passive publishing, content resolution, data aggregation and portability, the social graph and sharing. I know some will say that is stupid... "why try to brand it at all?". Well, if you want people to talk about something then I believe you need to provide them a common lexicon to do so (it also helps people find and track the conversations on topic - see Twitter).

So, now that I have made a short story long, I come to my point. For now on I am going to be referring to the collective of my recent music/tech science experiments as "Playtapus".

Yes, it is a combination of "play", "tap" and "us"... but also more a play on the fugly yet lovable platypus. No one is quite sure what it's place in evolutionary history is, but if nothing else... it's at least interesting. Really all this project aspires to be...

Reblog this post [with Zemanta]

Friday, March 06, 2009

Content (Resolution) is King!

For those of you that know me, you've probably heard me ramble on for years about how we need to decouple media content and the service from whence it comes. At the drop of a hat I will often start spewing off the same tired example...

Imagine your music service of choice is Rhapsody and mine is iTunes. Or your use iLike and I use Last.fm. You use Spotify and I use Imeem. Or you use Blockbuster and I use Netflix. I should be able to follow your tastes, history and recommendations without having to join your service (or vice versa). We are now starting to see some lifestreaming apps/aggregators that solve the first piece of that puzzle.... I can see what you what media you are consuming without having to join your service.

But, currently when I see that you've played a song that I want to check out, the link takes me to your service provider, not mine. Sure, this is in your service provider's best interest (page view, conversion opportunity, etc.) but certainly not in mine. Now, I have to copy the info, got back to my service provider, and manually re-enter to find and acquire.

The way it should be (IMHO), is that the consumer of the media should get to decide what service provider fulfills it. Basically, it's a massive translation layer that can take content in from anywhere and map it back out to anywhere else.

This is what often referred to as the "resolver" problem. Back in 2007, there was a thread between Lucas Gonze, myself and a couple of other people where we talked about this issue... and who should take the lead in solving it.

In the absence of these "portable music identifiers", people that are passionate about greasing the wheels of taste and content sharing are forced to the lowest common denominator... MP3 search engines. This has been the basis of the projects I've been done recently.... mapping multiple services play history down to free-range MP3s (or at least what it could find). Of course, the rights-holders are not big fans of this approach (see "world vs. seeqpod" suits) - and the consumers are often frustrated by bad files, dead links and just poor overall quality of content delivery.
I've recently been vocal about the idea that the solution to this problem is an API platform that any/all services could use in lieu of MP3 search. Conceptually, an advertising/commerce supported (ok, subsidized in the near term) free-streaming catalog provider that most music could be mapped to - a fully licensed central digital music catalog(more on this later). Granted, this is a rather grandiose idea and anything in this industry that upsets the status quo is often met with resistance (at best) and endless lawsuits (at worst).

So, my rambling has finally led me to my point... content resolution. If there is no central catalog that everything can be mapped to, then what we need is that translation layer that lets content links be mapped back and forth across endless catalogs. Grandiose? A bit, but seems accomplishable without buy-in from the existing establishment. In fact, there is the very early stages of an open source project called Playdar whose goal is to provide the framework that lets content be mapped from one source to another - from the web to your local library, to your other networked devices, to your friends' machines, to music service providers, to search engines.
I'm pretty excited by the idea - I think it could enable some very compelling consumer experiences that the community is empowered to enable on their own.

Reblog this post [with Zemanta]

Thursday, March 05, 2009

"Post" MP3 of Current iTunes Track to Twitter

Yesterday I talked about how I wanted to be able to use the track and artist name from the currently playing track in iTunes to automagically find/publish a free-range MP3 link for that track to Twitter. After digging around into AppleScript this morning, I'm happy to say that I've got it basically working (see screencast).

I'm guessing there is probably a more elegant way to do this, but the Frankenstein continues to grow appendages. Take a look and let me know what you think.

Reblog this post [with Zemanta]

Wednesday, March 04, 2009

Active Publishing of meP3s (in addition to Passive)

Here is the next piece of my Frankenstein (watch screencast).

It adds active publishing to the passive publishing that I'm doing from aggregated play data from multiple music services. So, when you are thinking of a song you just type it in, and it looks for a free-range MP3 version of that song, shortens the URL, and formats it so that playTwitter knows how to deal with it. This is similar to what I talked about before except I have automated the formating, finding and posting to Twitter to make it more user friendly.

I've also added a field that let's users create collaborative playlists using Twitter hashtags (see previous post). This lets any/all people to add songs to a particular playlist. For example, see the "bestof2009" playlist. By default anyone can add songs to this playlist just by using the same name/hashtag. Well, that's great, but what if you don't want other people's junk in your list? Just use the "advanced search" features of Twitter Search to filter it down. For example, here is the list with just my contributions.

Just like on any other webpage with MP3 links, the playTwitter bookmarklet lets you "play the page". So, filter it however you want, then play it.

#fp3Bestof2009 from:jherskowitz - Twitter Search

Reblog this post [with Zemanta]