Chordrina - an interactive app for chord learning

Zhengshan Shi & Jianfeng Hu



We are developing an educational-involving game for music lovers who are interested in learning harmony and chord progressions.

We also incorporate the chord progression as a music accompaniment in the game mode


Introduction + Motivation

The study of harmony involves chord construction and progression. While a traditional paper-chorale style exercise is a good initial way to approach harmony study, keyboard harmony extends its theoretical concepts onto a real musical instrument -- Hearing the chords improves the study of harmony.

Chordrina is an educational-involving game for music lovers who are interested in learning harmony and chord progressions. We provide real-time feedback of chord that's being played by the user and incorporate the chord progression as a music accompaniment in the game mode.

Demo Video

The Game Mode Starts from 4'10"!

Chordrina from Zhengshan Shi on Vimeo.

Design

The 'Chordrina' version of harmony training is divided into three stages:


1. Learning Stage

In this stage, we're purely testing if the learner is familiar with the construction of a single chord. Chordrina is assigning a chord to-be-played, and listening to the user input through midi instrument. Chords including major, minor, augmented, and diminished triads, dominant and diminished seventh chord. The root key of the chord is also assigned by Chordrina.


2. Chord Progression Stage

In this stage, the user is entering a chord-progression training mode - understanding the colors in switching chords.


3. Game Mode

Now the player is equipped with solid keyboard harmony training to enter the final stage -- applying chord progressions to a song. We were taking only the vocal part of the pop songs, and assign the user chord progression along with time.

Game mode has multiplayer support. You can plug-in multiple midi inputs. Setting them to different channels will allow multiple instruments playing together.

Technical Approach

We created this program using C++ along with OpenFrameworks for graphics and fluidsynth for audio. We mapped the user input into a 12-dimensional chroma feature, and recognized the chord through matching with the binary chord templates.

For the GUI part, we utilized some particle systems to create the immersive interface and explosive effects.

« Download the Code »