Ben Roth - 256A

The Vision

Bass Track was conceived as a program that would turn music into an interactive two dimensional world where the actions of the player change the playback of the song. It is a new way to listen to your music.

The Thing

Bass Track will take an mp3 file, analyze it, and use it to generate a track. An arrow speeds along the track such that one traversal of the track is synchronized with one playback of the song. The player must change the color of the arrow to match barriers sitting along the track.

The playback of the song is a function of the player's performance. Repeatedly mismatching the arrow with the obstacles causes Bass Track to increasingly distort playback of the song. Additionally, the player has the limited ability to slow time, affecting both the speed of the arrow on the track and the speed at which the song plays.

Design Details

Analysis: Bass Track parses a song into significant regions based on shifts in tempo or amplitude. In particular, it performs beat detection on the song and then tries to compute shifts in the beat patterns to decide where regions begin and end. It also tries to find significant peaks or plateaus in the long-term amplitude of the song and uses these to define regions. It assigns each region a single overall tempo (with some confidence) and an amplitude index relative to the rest of the song.

Level generation: Bass Track generates levels as a long string of connected segments (16 per second) that form a large complicated curve. On a global scale, large curves reflect the character of the particular region of the song, while on a local scale, the curves sometimes oscillate with the beat of the song. Obstacles are laid along the track by calculating a local probability based on detected beats, predicted beats, progress through the song, global amplitude and local amplitude.

Visual feedback: In addition to the topography of the level, the game aesthetics strongly reflect events happening in the song. Louder or more energetic music causes brighter visuals and more energetic movement on the screen, and calmer sound causes darker, more tranquil visuals.


Bass Track was written in C++ and OpenGL on the CCRMA machines (which run Fedora and ALSA, I believe). It uses a few free libraries: mad (for mp3 decoding), RtAudio (for audio output), soil (for OpenGL texture loading).