# Melodic Interpolation: Simple but Surprising

April 5, 2010

It's amazing how the simplest methods can sometimes yield the most impressive results.  I have been experiencing this phenomenon all day.

While messing around with new methods, I actually discovered something very simple and very obvious: interpolation of melodies based on the chord progression.  It's something that I haven't used before - probably because it seems too obvious!  Here's the procedure:

• Start by placing "blocks" in a space; place them such that they lie directly on top of the roots of the chords in the progression
• Link the blocks such that each block is aware of the spatial indices of it's two neighbors (in back and in front)
• Iterate through the blocks
• Calculate the mean y/pitch offset of block i and its front neighbor
• If the mean offset is different from both constituent offsets
• Split block i and position its child at the previously-calculated mean
• Update the neighbor links for block i, the child block, and the front neighbor
• Convert blocks to notes
• x -> time offset
• y -> pitch offset
• width -> duration

One could think of this as "blurring" the melody - removing sharp jumps where they exist.  It's really just interpolating the melody from the chord progression.  Now, throw in a grammatical foundation and some variation functions and we've got a very nice method.

Surprisingly, this simplistic technique sounds good!  It sounds both deliberate and coherent, with a dash of creativity thrown in.  By continuing to improve the method with a grammar, I believe that it will be possible to make the method of melodic interpolation a truly viable way of generating good melodies.