Rishi Ghan
Herodummy

ADZN Studios

Adam Dalton's Portfolio

Github Activity



Coconuts and Collateral

Coconuts and Collateral
A spread from Coconuts and Collateral.
As I prepared to draft the hypothesis for my final year thesis, I had completed a couple of print projects leading up to...

This Frog Needs to Evolve.

06 January, 2013

Taking a walk down the recesses of consciousness yields about the same amount of revelation as walking down the local farmer's market looking for pickled heron. That you don't look for pickled heron or consider the produce to be unsustainable is not under discussion right now. The analogy exists to ease you into the what has now become a very vacant place.

What happened? Writing used to be a release. I wrote using cues taken from sources of distraction that have since defined me and my process. What happened to the person that used to brandish tragedy and manic depression in the face of all creative blocks? And rise out of the ashes of the stupor induced by watching 2 hour long reruns of Supernanny?

Nothing.

And therein lies the banal conclusion. All the buildup for a payoff is smoke and mirrors for another ten years of smoke and mirrors.


Moving forward with Fruitr

18 July, 2012

The experiments with Fruitr continue. This time, I have a strict set of parameters:

  • Increasing the sample size from 8 to ~60
  • Calculating the correlation coefficient for different sample sizes (30, 60, 90)
  • Preparing the data sets for a specific genre and a specific era e.g (Hip Hop, 1998-2008)

Echonest provides some bucket parameters.1 It is a good way to customize any additional data that you want the API hook to return. I want to retrieve data for a specific period of time. The years_active bucket returns the start year and the end year 2 for an artist. The search hook accepts artist_start_year_after and artist_end_year_before which is something I can use to get results within a range of time.

The style parameter returns result matching a genre or a musical style.

UPDATE: http://fruitr.rishighan.com/genre I have implemented a very basic version of what's described above.

¬

1http://developer.echonest.com/docs/v4/artist.html

2 Not sure as to how this is determined. More specifically, how much time is allowed to pass till an artist is considered "inactive."


Observations from Fruitr, phase I

12 June, 2012

Fruitr (http://fruitr.rishighan.com) has evolved into an experiment to substantiate the method Echonest uses to calculate its hotttnesss rating. Currently, it accepts a seed value and generates a sample of 8 similar artists with their corresponding hotttnesss and familiarity ratings.

There are a couple of ways I decided to analyze the hotttnesss rating. Firstly, the ratings change from minute to minute.1 Secondly, the correlation coefficient for the sample set for Ke$ha as the seed value in the first pass was 0.494479178671611, which suggests a weak correlation.

I was curious. Running a search for Tom Petty, I got a correlation coefficient of 0.717056548070818, suggesting a strong correlation. Running the search again for Elvis Presley, I got a correlation coefficient of 0.84483214510502.
Foster The People, as the seed value, gave me 0.68427560419647.

On the surface, there appears to be a stronger correlation between hotttness and familiarity of an older generation of artists than the newer generation. However, that is just one aspect of this experiment. Right now, I can think of the following reasons why this could be the case:

  • Older artists are more familiar among the current generation.
  • Newer artists make forgettable music, thereby losing familiarity at a quicker pace.
  • Older artists are suddenly becoming more familiar for some reason
  • hotttnesss and familiarity change constantly, rendering the above three reasons invalid

The experiment continues here: fruitr.rishighan.com. Stay tuned for more observations.

¬

1 I ran a query for Ke$ha three times, Lady Gaga was returned as the first similar artist, and her hotttnesss rating varied each time.


Preparing the Data Sets

12 May, 2012

I have started using the Echonest API to aggregate hotness ratings for a particular artist using the hotttnesss API call.

A useful API hook is similar. It basically takes an artist name as a seed value, optionally taking in min_hotttnesss and max_hotttnesss values. Then it returns all the artists similar to the one supplied. I plan to retrieve the hotness and familiarity ratings for the first 10 artists returned to prepare the first data set. Echonest's API documentation isn't much of a resource when it comes to explaining how hotness is actually calculated.1

However, it is enough for me to work off of. By plotting the familiarity and hotness ratings I can get a correlation to begin with. Currently, I am have implemented Fruitr as a Rails app and started abstracting some Echonest API hooks. I am planning to deploy it using Capistrano, just as a learning exercise. Stay tuned.

¬

1http://developer.echonest.com/docs/v4/artist.html#hotttnesss


Fruitr, last.fm and correlation

11 May, 2012

I have started a side project called Fruitr, which is an attempt to implement my idea of correlating information from two unrelated domains–music and population distribution of a city(tentative).

Currently, I am looking at ways to aggregate information by communicating with the Last.fm API1 to create a music data set. I want to narrow down the domain to something like "Most loved tracks from June 2009 to September 2009" or "Most loved artist from June 2009 to September 2009." I also need to determine a sample size for this data set.

A simple example of what sort of data we can get using Last.fm:

def fruitify
    unless params[:name].blank?
      url = URI.parse("http://ws.audioscrobbler.com/2.0/?method=artist.getSimilar&artist=#{params[:name]}&format=json&api_key=#{API_KEY}")
      @result = Yajl::HttpStream.get(url)
    end
  render :layout => 'application' 
  end

Here I simply query the API to get a list of artists similar to the one I supply to it. The results are returned as JSON and I use the yajl-ruby gem2 to parse that JSON into a ruby object.

This is the first in the series of posts which I will use to document the research and progress on the correlation project.

¬

2 https://github.com/brianmario/yajl-ruby

1http://www.last.fm/api