MKComposer.m
MKComposer.m is a software model of the composer Michael Krzyzaniak's brain. It reads music, learns about that music through observation, and composes new music based on what it has learned.
MKComposer reduces the problem of composing to the more simple problem of composing counterpoint, which, in turn, can be reduced to the more simple problem of just composing the next note. One can imagine software that hard-codes all of the rules of music theory and chooses the next note using a long list of conditional rules. Such a program might include a statement like: "IF the key signature is C major, and IF there is a C in the cantus firmus, and IF the previous interval was not a fifth, THEN there is a 40% chance that the next note is a G, 30, 30% that it is a C..." and so forth. The two main problems with such a program are as follows: 1) the programmer would have to know all of the rules of music theory pertinent to a given style, which is a problem because the abundance of music theorists spilling out of Eastman each year suggests that all of the rules of music theory have not yet been discovered. 2) such a program would only compose exactly what it was programmed to compose. If it were programmed using the rules in the "Gradus ad Parnassum", then it would never compose a Shostakovitch fugue without being completley reprogrammed.
MKComposer, therefore, takes a different approach altogether. MKComposer does not know a single rule of music theory. It instead has a software model of a brain with many interconnected neurons. When choosing the next note it looks closely at the surrounding musical environment, and then simply guesses. At first, its guesses are completeley random, and the output is mostly crap. MKComposer, however, can also read music. While it is reading, it is constantly looking at the surrounding musical environment (melody, harmony and rhythm) and guessing what the next note will be. Then, when it looks further and sees what the next note actually is, MKComposer attempts to figure out which neurons in its brain were most responsible for the discrepancy between what it guessed and what it observed, and inhibits or encourages those neurons accordingly. After a while, it starts to get very good at guessing, and likewise very good at composing. If MKComposer is trained with examples from the "Gradus Ad Parnassum", it will compose in that style. If it is trained with Shostakovitch fugues, it will write music that sounds like Shostakovitch, and if it is trained with music that it wrote, then it will compose it the syle of itself.
MKComposer reads and writes music stored in special files (MKCpt files) which were designed for the purpose. Such an unknown file format is, of course, impractical for generl purpose use. MKComposer, therefore, comes with one utility program that converts MKCpt files to MIDI files for human edification, and another that converts MIDI files to MKCpt files, which makes training data virtually unlimited.
People frequently ask me if MKComposer can actually 'think'. The answer is: "Shit yea, bithces!" Not only can it 'think', but it can even think. It can think so hard its brain will bleed... Plus, it is smarter that you! So suck on that!
:/ root#