Inferhythm

Browser extension

Inferhythm is a browser extension that helps users find lyrics from the website Genius for the track they are currently listening to on Spotify.

Lyrics from Genius typically also have annotations and interpretations submitted by contributors, editors, musicians, and fans.

Demonstration

Links

Time Frame

September to October 2019

Languages and Tools

HTML, CSS, JavaScript, Git

Motivation

I wanted a convenient way to get lyrics for the track I am listening to like the experience found using Genius' Android app, but on desktop operating systems (Windows, macOS, Linux).

Demonstration of Genius' Android app

Contributions

Challenge: Get Lyrics in One Click

I wrote HTML, CSS, and JavaScript to implement my design where the lyrics results pop up when the user clicks Inferhythm's button in the toolbar.

Inferhythm's button containing its logo in Google Chrome's toolbar
Inferhythm's button in toolbar

Manually Create Genius Page Links

To open the lyrics in a new tab, a valid link is required. I noticed that the structure of links to Genius pages were like genius.com/artist-name-track-title-lyrics, so I thought I could programmatically manipulate track data to match that structure.

Unfortunately, it was not very reliable because some artists had symbols in their names like a dollar sign which created invalid links because it was not consistently handled by Genius.

Comparison of links created manually versus actual links used by Genius
Artist Name Manually Create Link Actual Genius Link
A$AP Rocky asap-rocky a-ap-rocky
Ty Dolla $ign ty-dolla-sign ty-dolla-sign

This also happened for tracks that indicated features, remixes, or remasters in their title.

Get Links Directly from Genius

I looked for a solution by exploring the code of over 15 related GitHub repositories to see how they got a valid link. Some manually created links like I did, while others used Genius' search function.

I tried the search function and immediately saw better results since all the links worked.

Optimize Search Queries

However, one generalized search query did not always produce accurate results. I added another similar but more detailed search query, which improved the results.

Consequently, I merged the results of the two search queries.

Inferhythm's results for Electric Light Orchestra's Mr.Blue Sky alternately labelled Query 1 and Query 2
Results from query 1 and 2 merged

Reflection

Measuring Success

Inferhythm was successful because it does what I designed it to do. I had to diverge from the design though by displaying a list of results first instead of directly going to the lyrics page because I was unable to consistently get the correct lyrics.

What I Learned:

Other Projects

Ancient Beast

Open source browser game

Phaser, HTML, CSS, JS

Sort Plus

Spotify companion web app

MERN (MongoDB, Express, React, Node.js)

This Is America Tour

Website redesign

React, JavaScript, CSS