The short answer is - yes they can. The long one is – yes, they can and in fact they do it better than most people. I’m not talking about computers performing music (like a MIDI Player or a Toyota robot playing violin). I’m talking about computer software that is composing music - making up melodies and writing scores for some instruments. The only thing which gives us, people an edge at composing music is that a real person can tell which one composition sounds better than others. A computer can create hundreds of songs in a second but it will never be able to tell which one it likes the most. But let’s get back to the beginning…
Apart from being a programmer and a designer I’m also a kind of an occasional music composer. I have created the entire music soundtrack for Magic Match and many tracks for Saqqarah and some other games, but in most cases I create music for fun. I plan to post my compositions on this blog in the future as well as to write about my experiences concerning making of music for games, but now I’d like to write about a piece of software called cgMusic, which I’ve developed as a part of my master thesis.
The goal of the cgMusic project was quite ambitious as I was supposed to create a computer program that would be able to create music with a certain level of quality that most of the existing music generating software lacked. Apart from that, I decided that I would not limit myself to mimicking any particular kind of music and rather make the software universal in such a way that it would be able to create music of any genre. So, did I manage to do it? You can judge for yourself.
You can download the program here (0,5 MB), install it and give it a try. At start you can either load any of the preset projects or create a new project by selecting two master algorithms that will create a random song for you. Later you can tweak all the internal parameters to your liking, change the songs arrangement and so on. If you have any questions about using the program, feel free to post them as comments to this article. If you don’t want to download the application here a some compositions created by cgMusic, that I was particularly impressed with. They are in midi format and should play properly on any General Midi compatible device.
The internal workings of cgMusic are quite complex. Basically cgMusic is an expert system distributed among many independent modules, where every single module knows how to create one aspect of music. An example would be an algorithm that creates a certain set of possible rhythms, melodies, harmonies, song structures or hole arrangements. The program can easily be extended by adding new modules on the fly and this is how supporting new styles is possible. Each module can be controlled independently so when you decide on a certain melody and structure you can listen to “your” song in any of the available arrangements. For the purpose of my master thesis I created a sample set of plugin modules that show the very basic abilities of the application. It was a nice surprise for me to see that even with very simple algorithms the program is able to create complex music.
If you think that music generated by cgMusic sounds crappy this probably because midi music generally sounds crappy. But there is no problem in rendering cgMusic generated compositions using some fancy synthesizers or samplers. Below are a couple of examples in mp3 format that show what kind of effects can be obtained with the usage of proper music rendering tools.
There are many potential uses for computer generated music, ranging from real human composer assistance, music production tools, dynamic music for computer games, etc. The main reason behind slow development of advanced new music generating algorithms is that relatively few music composers have the IT based skills and the necessary knowledge to translate their music composition skills into mathematically defined algorithms.