Nature of Code Final: Six Degrees of Robert Johnson

Screen Shot 2017-05-02 at 10.35.42 PM

For my Nature of Code final project, I wanted to extend the first homework assignment I made six weeks ago, called “Six Degrees of Robert Johnson.” A play on Dan Shiffman’s “Six Degrees of Kevin Bacon” example (itself a play on other “Six Degrees of Kevin Bacon” and the original idea, “Six Degrees of Separation”), the project would illustrate the influence of Robert Johnson—symbolic or real—on rock music.

Johnson, the “King of Delta Blues” is a fascinating character. We know so little about the musician who died at the age of 27, and though he only released a handful of recordings, he has acquired a legendary status in music. He’s so legendary, in fact, that there’s a myth that he earned his guitar skills after he sold his soul to the devil. I wanted to show how his legacy has reverberated in the history of rock, as well as they ways that music evolves—through acts of appropriation.

In this last exercise, I had two main goals: add a larger data set and output a visualization of some kind.

For the data, I turned to two sources, a list of “500 Songs That Shaped Rock” and the SecondHandSongs API. Using the latter, I created a JSON document of all the artist who had created a version of the songs in the former. Though I only made it through the letter J in the list, I ended up with a list of about 10,000 artists.

Adapting Shiffman’s code from his own Kevin Bacon example, I added user inputs, a plug-in that autocompletes user inputs called Awesomplete, and two new classes: NodeViz and Edge to create visuals on P5.js canvas. The complete code can be found here and the Github-hosted page of the project is here.

Screen Shot 2017-05-02 at 9.56.24 PM

In the future, I’d be interested in pushing the project further, adding a more complicated network visualization with Robert Johnson in the center with multiple chains of influence extending outward. Because of the size of the data and my less-than-efficient code, the program also runs fairly slowly at the moment. I want to either make that run more smoothly, or, as Shiffman suggested, visualize the process of the search algorithm in some way.