MusTT (short for Musicianship Training Tool) is a program written in Python and Sonic Pi that helps improve interval identification. With so many possible features to choose from, I decided upon two main objectives to complete by April that offered the most significant points of difference from the vast catalogue of pre-existing interval training apps. The first was to implement reference songs. Reference songs are a common teaching tool that associates each interval with a unique song. The second objective was to make ear training more exciting by incorporating game-like elements.

The Main Menu features a central column with push buttons for selecting the desired game mode. To the right of each push button is another button that opens a pop-up giving additional details. Normal, Hard, Expert, and Survival Modes have progressively fewer lives. Normal Mode has nine, Hard Mode has six, Expert Mode has three, and Survival Mode has just one.

Incorrect responses lower the number of lives or hearts. The objective of each of these modes is to answer 30 intervals correctly before running out of lives. If the player is successful or unsuccessful, a pop-up appears asking the player whether they want to play again. In Easy Mode, the player has unlimited lives, represented by an invincibility star.

In the bottom right corner of the Main Menu are two more buttons leading to two more pop-ups. Here, the player can find a list of all the ascending and descending intervals implemented next to their associated reference songs. I have chosen these reference songs for their popularity and catchiness, but I eventually want to make this list customizable.

Unlike the other game modes, Practice Mode allows the player to customize the different aspects of the game. The player can choose which direction the intervals will play and toggle on or off certain intervals and hints. Intervals that are toggled off appear lighter and are not selectable on the next screen. The progress bar becomes more green with correct responses and more red with incorrect responses. The text above also keeps score of the correct responses and total questions answered. In each mode, a correct response flashes green and an incorrect response flashes red.

While the majority of the program is written in Python, communication with Sonic Pi using Open Sound Control (OSC) is necessary in order to play the intervals and songs. Each of the song references are stored as individual Ruby (rb.) files containing the song’s opening note values and durations. The files are scoured using RegEx and read by a master Sonic Pi file. When the hint button is pressed, the appropriate reference song is triggered and transposed to match the played interval’s starting note.

I plan to get the current project on a physical Raspberry Pi this summer. In the future, I would love to work on a more elaborate mobile app. These are some additional features and aesthetic components that I would love to see:

  • The ability to choose from a variety of different reference songs
  • Reference songs that include harmony
  • High scores for the survival game mode (one life with a timer)
  • Animated hearts, stars, and other icons
  • Custom backgrounds for each interface
  • Other games like chord identification, rhythm training, and more
  • Progress reports that track usage and improvement over time