This was the final project for CS 3500: Object Oriented Design. The program follows the model-view-controller design pattern and is written in Java by myself and a classmate. The program reads notes from a text file and either prints a text version to the console (“console” view), displays a GUI in a popup window (“gui” view), plays the piece (“midi” view), or displays the GUI and plays the piece (“composite” view). Most views support pause/playing the music with the spacebar, and support the following while paused: moving forwards and backwards by one beat with the left and right arrow keys, adding a new note by holding down the mouse on the appropriate piano key (longer holds creating longer notes), returning to the beginning of the piece with the Home button, and skipping to the end of the piece with the End button. Additionally, I implemented an optional feature: increasing and decreasing tempos (by hitting the up and down keys while the music is paused).