Accomplishments this week:
-
Studied midi protocol; useful midi protocol info can be found here https://www.midi.org/specifications-old/item/table-1-summary-of-midi-message.
-
Studied python libraries for handling midi files; decided to work with Mido. Documentation can be found here https://mido.readthedocs.io/en/latest/index.html.
-
Researched midi matching algorithms; useful paper describing a status-to-art approach can be found here https://www.ml.cmu.edu/research/dap-papers/dap_xia.pdf.
-
Programmed basic midi matching algorithm with the bag-of-words approach described in the paper mentioned above; Split existing midi files into random slices and the program is now able to match the midi slices with the original midi file; tick number in the original midi file is returned in case of a match. The code is continuously being updated in our Github repo.
Progress for schedule:
-
On schedule
Deliverables I hope to accomplish next week:
-
Research the python Pygame library to handle live midi input from a digital keyboard; should at least be able to get note/tick information for each input midi note.
-
Figure out a data structure for storing the live midi sequence so that the bag-of-words approach can be used on the live midi sequence with the stored midi sequence.
-
Setup a Django database for storing the midi sequences along with the music staff; get the API for fetching music staff/midi sequence from the database to work with Python.
0 Comments