67
example of how these approaches vary is in the second beat of measure 3, where the
sixteenth-note pattern tied over from the first beat (E, A, Bb, A) gets remapped quite
differently. It’s worth noting that the recursive filter maintains intervallic relationships
internal to its own accompaniment line, whereas the non-recursive filter constantly ‘re-
synchronizes’ its starting pitch to the original melody, so that intervallic consistency is
sometimes lost. However, the non-recursive implementation is band-limited, in the sense
that our non-recursive accompaniment line will never stray too far in terms of range from
the original. The recursive algorithm, on the other hand, can easily veer through
successive large output intervals well out of the melodic range of the input melody.
Although it might have escaped notice, our Lindenmayer string derives its
running axiom in real time by computing the interval vector as the difference between the
latest performed pitch class and its immediate predecessor (PC
n
– PC
n-1
). We could create
a musical accompaniment in a similar way by generating production rules based on the
sum of the current and last pitch classes (an aggregate), or the average, for example. By
adding more and more past pitches into the computation we can sculpt an accompaniment
line based on more musical material, allowing for a more subtle application of the
process. This is analogous to varying the order of a filter in signal processing, allowing
for a more contoured alteration of a sound spectrum. As with higher-order filters, the
amount of delay before the system starts to function appropriately will grow as we look
back further and further in time for information. If we are at the beginning of a
performance and we need to look back four events to construct our L-system axiom, we
won’t have anything to drive the L-system until the fourth note of the piece.