What we have done...

  1. Gathered multiple datasets with both midi and real recordings of piano music for testing.

  2. Coded initial algorithms for direct music file comparisons in MATLAB.

  3. Improved algorithms using new testing functions in Python.

  4. Discovered ways to separate music comparisons into multiple dimensions, especially timbre, pitch, and tempo. 

  5. More analytical descriptions of our coding findings and progress can be found in each dimension's analysis section.

  6. Create accurate code to measure our individual categories in order to grade pieces.

  7. Create weights for each category in order to make an overall grade.

What are our challenges

What are the long term goals...

  1. Our datasets are quite massive in size, so running and compiling our program for every part of our set is quite an issue. The best option to overcome this challenge is by running everything remotely over a long period of time.

  2. We are working in multiple programming languages (Matlab & Python) in order to best compare our individual categories. This will be fixed most likely by moving everything to python.

  3. Some of our algorithms are octave specific, and some aren't, which could be a feature or an issue. The best way to fix this is to separate them and grade the comparisons with a user-based option.

  4. Our tempo algorithm at the moment is based on measuring the onset strength of the audio input and determining the bpm by locating energy spikes, however, this mainly works well when there is an audible metronome. Thus, we are debugging to find a way to accurately measure tempo of any piece without a metronome.

  • Create an easy to use interface that has 4 subcategories (pitch, timbre, tempo and intensity) with weights for an overall grading of a real recording.

  • This real recording can be compared to a original midi or "perfectly" done piece (that could even be done by a different instrument in some cases). We also plan on having the algorithm successfully distinguish between different instruments. When the algorithm works better on different instruments, we also want to make sure it works for all octaves of those instruments, making our program extremely versatile.

  • Lastly, we want to run a large amount of trials on our algorithm, to test with statistical analysis. This will give us confidence that what we have written works properly, consistently.

What we have learned...

  • Different musical dimensions like pitch, chroma, tempo, and timbre that shape music pieces and are targeted by our algorithms.

  • Signal analysis techniques like logarithm spectrogram and machine learning that extract and magnify musical features for point-to-point comparisons.

  • Similarity measurements like correlation and similarity matrix that make quantitive comparisons and yield scores.

  • The ability to collect and evaluate datasets. Piano recordings and their scores from ACPAS are used to simulate and support our algorithms.

  • The ability to learn from existing papers. Our algorithms and musical dimension definitions are based on Müller's paper.

  • The ability to understand and use library and APIs to speed up and check the functionality of our algorithm implementation.