2

I am trying to create a score writing application and will like to implement an algorithm that predicts the next chord (item) a user is likely to write from the previous sequence of chords (items) that he/she has already written.

Some background: music chords are just a limited range of items (it can be Cmaj7, Dm etc.). Technically, any chord can be played after any other chord, but some chord sequences are more common than others.

I will like to first implement this naively, meaning that the next chord is predicted based on everything the user has already typed, based on some training data made of common chord sequences. For example, the user may type "Dm", "G7", and the predictor will give a ranked output of chords (eg. 1:C; 2:Am, 3:Dm). In future I will also like to explore assigning weights in my algorithm.

What are the key terms I should be searching for and what are some good papers/projects to read in order to realise this?

Poh Zi How
  • 123
  • 1
  • 6

2 Answers2

1

I thing RNN network (specifically LSTMS and GRU) would be your best choice here if you have sufficient data to train them.Have worked with music in my masters though not this particular problem . I think something like converting these sequences to text and then trying something like a word2vec+LSTM/GRU architecture could be a good option. It would be nice to see if the model discovers chord substitutions or relations .You could experiment with all this in keras (its python based, built on top of tensorflow/theano )in a few lines of code.

Just to put it out... there's also something called the Neural Stack from deep mind , this is the best explanation ive found so far. Haven't experimented with these though.

Edit

looking around i found this explanation on quora that would help you in case you are not sure how to implement my answer.

1

Recurrent neural networks sound like the way to go for you. You can find examples of successful RNN training on music to here and here. A soft intro to RNNs can be found here. However as stated by a previous answer, using keras or a similar framework is probably easier for training.

Google Deepmind however published a paper on WaveNet a new kind of network which produces state-of-the-art sound synthesis. You can find source with sound samples and music generation here.