Fermata Sheet Music - Our Vision
We created our app to address the problem of bringing age old sheet music to the digital age. We envisioned a sleek easy to use iPad application that brought together all the tools musicians use on a daily basis. Our solution is Fermata Sheet Music.
Take a look at our video at : https://www.youtube.com/watch?v=OEOW17YyMIU
Our Process
For our project we worked mainly with Musical Instrument Digital Interface (MIDI) files. MIDI files are the technical standard in the industry concerning music as they carry information that specifies pitch, notation, velocity, as well as a plethora of other related data. Our first and arguably most important task to complete was the parsing of the MIDI files themselves. With the given MIDI data, how could we transform it into the sheet music that we all know and use today?
Our project is mostly coded in Swift, the newest and fastest growing programming language of iOS and OS X. There are certain features however that could only be accomplished in Javascript. This includes the process of parsing the MIDI file and drawing the sheet music with libraries such as Vexflow. We decided to take the music that was created in HTML and then embed into Swift.
Our Parser Parses MIDI data like this...
... into music like this.
Our MIDI files themselves are saved onto a mySQL database and pulled when needed. The pulling of the MIDI files are performed with PHP calls.
PHP Calls used to pull MIDI data from the database
Our database organizes our application and keeps detailed tables that track how elements of the application interact with one another. It is used to store and manipulate data concerning users, the music they store, the playlists they create, and many more.
A table in our database that stores songs.
Relational Schema detailing how the different aspects of our application interact with one another.
Fermata In Action
Facebook Login
We have included Facebook login to the app to provide us with a login platform. This also allows a more personalized experience for the user. This should be the first page you see.
From the sidebar, you can decide where to go, whether it is to select a song, or to just use the tuner or metronome.
This page displays all the songs you can choose from. These songs are all stored in an online database!
Once you choose a song, depending on the MIDI file, there are usually some instruments to choose from. This page handles that. We have updated our MIDI parser to be able to parse right and left handed instruments as well.
The actual music page itself and our biggest accomplishment. This is the direct result of our work on the parser, arguably out most time consuming section. Notice the icons on the bottom as we have integrated the tuner and metronome directly into the page itself so that the user can use these features while they play!
Features
It wasn't enough for us to just display music on an iPad. We wanted to provide additional features and tools that musicians of all levels would use on a daily basis.
Metronome
The metronome is an essential tool in any musician's repertoire. Following along with the beat while you play has never been easier with Fermata. Simply pressing the play and stop button turns the metronome on or off. The tempo can then be adjusted using the arrow keys. If you don' want an audio cue, the light in the center of the page will flash according to the tempo selected as well.
Tuner
The majority of instruments need to be tuned regularly to ensure proper pitch. The tuner that we currently have implemented is the most traditional type. It plays a note at the exact frequency and pitch and the user then adjusts their instrument to match the given pitch. Each pitch increments one step by either one flat or one sharp per each click of the arrow key.
Follow - Along
One of the main problems of sheet music that we wanted to address was to get rid of noisey page turns. This can be accomplished with Follow - Along, our feature that would basically scroll down the music autonomously while the musician is playing. This feature has since been completed. The algorithm we picked was to calculate the speeds at which to turn the page based off of the tempo.
Since our last post
Each section of our blog has been updated to account for the new features and changes since our last blog post. We have continued to update our app and mainly focused on polish. Our main goals since the last blog has been integration and overall polish and design. We fixed a lot of bug issues in terms of parsing the files themselves. Our parser now accepts every clef as well as right and left hand pieces. I have discussed integration in the previous section concerning our main music page. We have also beautified our app quite a bit by choosing a proper color scheme and adding in other small changes that overall create a much more aesthetically pleasing application.
Symposium
On May 2nd we presented our project at the Computer Science and Music Symposium!
Authors and Contributors
Eric Chanthorabout : e882c516@ku.edu
Eugene Raygorodetskiy: e369r446@ku.edu
Kyle Roush: k731r960@ku.edu
Samuel Benson: sambenson@ku.edu
Sikai Xiao: s195x439@ku.edu
Young Liu: youngliu@ku.edu
Looking Forward
We are excited to continue improving our application and polishing it into the app that we envisioned at the beginning of the year. We have our vital features completed at this time. The app looks and works great, and we are very proud of our project. Since this project is open source, some of us may decide to work on it in the future and hopefully publish it into the app store. A big thanks to Omar Bari and Andy Gill for their help and advice along the way! We couldn't have done it without their guidance.