back to all projects

Interactive Music Systems

Ultimate Guitar Hero

Guitar Hero-inspired game for learning guitar tabs, based in Python and the Kivy UI framework

Ultimate Guitar Hero's game interface.

When guitar players learn new music, they'll usually turn to guitar tabs. While tabs for most songs can be found in digital form on websites like Ultimate Guitar, they're often very static in nature, essentially just plain text on a web page.

Photograph tab

A guitar tab for Photograph by Ed Sheeran

Tabs serve their purpose — with some time and practice, you'll be able to learn how to play a song from its tab. But last spring, in the class 21M.385/6.809 Interactive Music Systems, my final project team couldn't help but wonder if these tabs could offer something more.

How can we turn static guitar tabs into a more dynamic, fun, and interactive learning experience?

Here's what we came up with.

How It Works

Flowchart

A high-level flowchart

To start, we select a tab on Ultimate Guitar. We scrape the web page as HTML text, and then parse out the strings, fret numbers, and relative timing of notes (indicated by the dashes in between numbers).

Using this data, we then automatically generate a game in the style of Guitar Hero. The notes in the tab are illustrated as "gems" that move across the screen toward a "now bar" on the left, which indicates the current note(s) to be played.

The game is controlled by input from a MIDI guitar, which senses where the player puts their fingers and which strings they pluck.

Walkthrough

Upon launching the app, you're greeted with Ultimate Guitar Hero's homescreen. You can choose to learn one of the most popular tabs on Ultimate Guitar, or paste in a URL to any other tab on the website.

Homescreen

Ultimate Guitar Hero's homescreen

Once you hit Play, you enter the game screen. It's packed with features:

Features

Game screen features

Next Steps

Ultimate Guitar Hero received lots of positive and constructive feedback from members of our class and the larger MIT community. Where could we take it next?

back to all projects