During my studies in the Department of Computer Science of The Academic College of Tel Aviv – Yaffo, I did a project called Speedy Composer – an Artificial Neural Network Melody Composer. this project had also a research part, because this area has not been researched much before. The project’s target is to write a program that will compose music, that is based on parameters & chords given by the user. The final target is letting a user select parameters, chords & possibly the beginning of a melody, and then the program will compose a new melody for the user.
Artificial Neural Networks are a new area in computer science. This area is called like this, because in a way, it imitates the human brain. An Artificial Neural Network is a set of simple processing units (“neurons”), that are connected to each other in a parallel network. Each unit (“neuron”) implements a simple mathematic function, but the global structure of the network makes the network able to to perform complex calculations. This processing method is similar to the method used in the human brain, that is consisted of billions of neurons, and with a very complicated connectionism is able to perform actions like seeing, hearing, motorical coordination, intuition, thinking, understanding, memory etc.
Although Artificial Neural Networks contain a much smaller number of “neurons” (usually, not more than a few tens), they already have some ability to learn & generalize. for example, if we have a list of events that can be numerically measured, and there is some regularity among them – it is possible to train an Artificial Neural Network to try to predict the next event, when receiving the few previous events as input. Artificial Neural Networks can also be trained to identify specific patterns (visual, vocal or other patterns), and implement programs that identify these patterns by using the trained networks. Artificial Neural Networks are used, for example, to identify pictures, and especially human faces, handwriting, and printing.
In this project, I used Artificial Neural Networks to compose melodies, using this method: a network is trained on well-known melodies, while for each note – the network is given all previous notes as an input, and is trained to predict the next note. A network like this is trained until the prediction success percents are as high as possible (about 55% success. The network structure does not let it reach 100% success). Then, the network is given some basic input, and we start composing note by note. Each note is selected randomly, with probabilities based on the network output (The reason for selecting the notes randomly, is adding more interest to the melody, and composing a new melody each time). After each note is composed, it is added to the network input and the network is used again in order to select the next note. And so on, until we compose the entire melody.
At first, I trained each network on an input representing the notes alone. As a result, the composed melodies lacked global structure. But, after talking to composers, I learned that most human composers usually compose according to a given progress of chords. I decided to implement it with the network, and added chords to the network input. It was then necessary to select a progress of chords before composing, and the network composes a melody based on these chords. As a result, the melodies were more interesting and with global structure.
Although, a program like Speedy Composer can’t compete with professional composers, but it can definitely compose nice & interesting melodies. If we compare, for example, the composing ability of the program to my own personal composing ability – I think the program’s ability is better and more diverse. Here, like in chess, for example – a good computer program is not better than every human, but it can definitely compete with some people. Of course, in this area there is still place for a lot of research and improvement, and I believe that in this area too we will reach better results in the future, and the program’s performances will be able to compete with the ability of many people.
Now, we can ask, is there no place for human composers any more? Well, of course there is still place for humans – currently, humans are still more creative than computers, and are still better than them in many areas. But, the more we advance in technology, and especially in the area of computer science – the ability of computers improves, and becomes closer to the ability of the people who created them. And, in some areas (for example, complex mathematical calculations), the computers’ ability has long ago become better than the ability of any person. It appears that this machine has already become better than its creator.
Philosophically, some people claim, that there is no meaning to the words “composing” (or “creating” in general), if the composer does not have feelings, and expresses his or her feelings in the composition. But, in my opinion, the melody in itself does not contain feelings – it’s just a progress of notes that makes us feel something when listening to it. And, in my opinion, the quality of the composer (if we don’t have a previous opinion about him) does not influence the emotions we feel when we listen to music, read a book or see a movie – what counts is the quality of the composition itself.
As we know, every book, article, melody or picture can be represented by computers as files, made of a set of bits which are 0 or 1. And, in my opinion, everything that can be represented by computers, can in theory be created by computers too. There is no theoretic reason, for example, why computers will not be able to compose symphonies like Mozart’s or Beethoven’s, write novels like Shakespear’s, or create pictures that seem real, even if they have no connection to reality. But, it’s clear that we still need to progress in this area a lot, before we will enjoy reading a book, watching a movie or listening to symphonies created by computers.
You are welcome to listen to the melodies composed by Speedy Composer. Please tell me what you think about the composed melodies – I’m interested in your opinion. If you want you can also use Speedy Composer to compose new melodies – just enter Speedy Composer, create an account and start composing!
Written by: Uri Even-Chen, Speedy Software.