Melodic Interpolation: Simple but Surprising
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.