The purpose of this project is to create a program that will take a melody as an input and create various harmony and bass lines that fit the melody according to music theory principles. Programming will be done in Java and music output will be performed through the java.sound.midi package. The goal is to be able to create a multi-part song from a simple melody.
While algorithmic music composition is not a new field of study in terms of specialized fields of computer science, it is certainly not one of the more popular fields. Algorithmic music composition entails the ability to create music either using solely a computer program or with the assistance of a computer program. For this project, music will be created only from the software, not without any assistance. Various procedures have been used in past projects in terms of ways to randomly generate music, the most notable being Markov chains, deep learning, and analysis/imitation of pieces of music.
Most research into algorithmic music composition has gone into developing techniques to create melodies. However, my project is more centered on using algorithms to create suitable harmonies and bass lines that complement a given melody. Therefore, it will be less about random-note-generating algorithms that create single lines of music and more about using music-theory based principles in my algorithms, though the latter will be involved. The final product will ideally be able to output a fleshed out piece of music with various harmonies, a melody, and bass line. Such software would have many applications, notably as a source of inspiration for composers. Many musicians, including me, struggle with developing harmonies that can coincide with brainstormed melodies. Such a program would attempt to solve this problem, effectively nullifying a difficult part of the creative process.
A fair amount of work has been done in the field of algorithmic music composition, though it still has a long way to go. David Cope, a leader in algorithmic music composition, is notorious for his work in the field. A lot of his work has focused on analysis of greater known classical pieces and imitating their melodic and harmonic patterns. Such practices have led to generation of music that has been so expertly crafted, that it’s been confused with pieces created by Bach; you could say those pieces passed the ‘turing test’ of algorithmic music composition. While such a feat may not be able to be accomplished within a one week period, further development of my program could lead to big results.
Along with more serious programmers, there are some small communities that work on developing techniques to take current states of the computer and put them into notes. It’s a hard concept to describe, but it has proven to work (though it doesn’t generate the most appealing pieces of music).
Current Problems in the Area
From my research it seems that a big problem in the field of algorithmic music composition is the ability to randomly generate music that is truly appealing without using deep learning techniques; that is, analyzing works by well-known composers and imitating their music. So, it seems that truly randomized music has not been able to compare to actual composed pieces in terms of musical appeal.
Because generating appealing music on its own is a big problem, the best place to start is by working with harmonies rather than melodies. Since musical appeal is already established in a melody, it makes more sense to build off of something that sounds good rather than building off of something random that may or may not be something the average listener is going to want to listen to. By studying the outcome of harmony generation, I might gain more insight into what techniques work for creating appealing musical progressions and could apply such techniques to melody generation.
Algorithmic music composition is a field that should catch the attention of both composers and programmers. Using software to craft musical pieces is a whole new way to think about musical composition, and while the field may scare composers who fear a lack of creativity in music, it is a field that should be more thoroughly developed due to its practical applications for musical composition. Hopefully my project will make some grounds in terms advancing algorithmic music composition as a subset of computer programming and music theory.
As developing a program as noteworthy as say, David Cope’s Bach imitation program, is a very unlikely task to accomplish in a one week period, future work will be dedicated to improving my program in any way possible. That will probably include accounting for key changes within a melody and generating more dynamic harmonies in terms of rhythmic structure.
Cope, David. Computer Models of Musical Creativity. 2005. Print.
Jacob, Bruce. Algorithmic Music Composition as a Model of Creativity. December 1996. Retrieved 3 January 2013.
Maurer, John. A Brief History of Algorithmic Music Composition. 1999. <https://ccrma.stanford.edu/~blackrse/algorithm.html>.
Langston, Peter. Techniques for Algorithmic Music Composition. Morristown, New Jersey. <http://www.langston.com/Papers/amc.pdf>.
D. E. Knuth. ‘‘The Complexity of Songs’’. SIGACT News vol. 9, no. 2, pp. 17−24. (1977).