Weekly Status Update 9/29

Michael – I was working on researching different libraries for working with midi files.  I have found http://www.midijs.net/midijs_api.html useful for playing back the midi files using javascript in the browser. I believe https://mido.readthedocs.io/en/latest/ will be useful for manipulating the midi data in python for our machine learning application. I am working on a web application to upload a midi file and play it back using midijs.  I will continue to work on the web application and make sure our inputs and outputs match and are compatible with what we expect the inputs and outputs of our machine learning algorithm to be.

Chris – For the past week I have been putting most of my time and energy researching algorithms for chord generation, mainly BLSTM, and comparing them with RNN and HMM model. A few useful Python frameworks to look at might include Keras (https://keras.io/). We want to push to run some simple test on the music data we found last week with the LSTM model

Aayush – Studying the theory about neural networks and RNN’s to better understand how RNN’s are useful for modeling time series data. The aim is to design a simple test similar to the ones described in this paper: https://arxiv.org/pdf/1712.01011.pdf. We chose this paper as they had a well labelled dataset. Then we can develop a simple POC of our chord generation system and use the results to guide our design.

Weekly Status Update

This week we worked collectively on researching Machine Learning algorithms, devising strategies to acquire data, scheduling, and planning out certain design decisions of our project.

Aayush – I collected a dataset from Wikifonia.org, which is now a defunct website, but their data is still available in places online. I also researched on approaches to chord generation (https://arxiv.org/pdf/1712.01011.pdf). For the next week I plan to study more of the background described in music generation papers (HMM’s, Neural Networks).

Michael – I also researched chord progression and other related music generation papers using Machine Learning https://cs224d.stanford.edu/reports/allenh.pdf https://arxiv.org/pdf/1712.01011.pdf https://www.researchgate.net/publication/319524552_Deep_Learning_Techniques_for_Music_Generation_-_A_Survey

Chris- For the past week my main focus was to collect data, determine the usability of the dataset and to research on related fields. I researched existing tools to convert chord labels in music files into notes as many data we found has only the main melody well labeled while the chord progressions are labeled in plain text format. Useful tool: MuseScore, and useful plugin. For the first half of the next week, I will move onto researching algorithms for chord generation (BTSTM, Bidirectional Long Short Term Memory). For the later half of the week, I will work with my teammates to pre-process the music data if needed.

Our short term goal over the next few weeks is to run short tests (2-4 bars) that will help us scope out the task for the design review.

 

Introduction and Project Summary

Chordial Music

A Musician writes melody (lyrics, vocals etc) of arbitrary length, and wants to get a backing chord sequence. Simple chord progressions in the scale usually sound okay. However, generating chords progressions that contribute to aesthetic quality is difficult and requires many iterations. In addition, it usually requires a lot of knowledge of music theory and a long period of practice before a musician can produce chord progression with very high aesthetic quality, making it inaccessible to many amateur musicians.

Our goal is to create a tool that can assist musicians with different levels of proficiency in music theory to be able to write songs with high-quality chords, once they come up with a melody of any length. We approach to achieve this goal by creating a web application which will produce multiple chord progressions for a provided melody so our songwriter will have the opportunity to pick what in their opinion works best with the melody. Since music is very subjective our website will allow users to vote on whether they think the original chord progression or the generated ones are better, for existing songs, and to choose between multiple generated chord progressions for user-uploaded music. We will use this feedback to fine-tune our algorithm accordingly.