From a computer-theoretic viewpoint secondary embellishment in functional harmony is a context free grammar. This piece, composed mainly in May 2002, carries that notion to an extreme. By nesting the production rule x → (ii/x, V/x, I/x) a sequence of increasingly elaborate progressions of lengths 31,..., 37 are heard! More explicitly first the tonic I is heard then the progression ii, V, I, then its embellishment ii/ii, V/ii, I/ii, ii/V, V/V, I/V, ii/I, V/I, I/I, and then its embellishment ii/ii/ii, V/ii/ii, I/ii/ii, ii/V/ii, V/V/ii, I/V/ii, ii/I/ii, V/I/ii, I/I/ii, ii/ii/V, V/ii/V, I/ii/V, ii/V/V, V/V/V, I/V/V, ii/I/V, V/I/V, I/I/V, ii/ii/I, V/ii/I, I/ii/I, ii/V/I, V/V/I, I/V/I, ii/I/I, V/I/I, I/I/I, and then its embellishment and so on seven times. The process can be visualized as a branching tree as shown above but the complete tree would be seven levels deep and ultimately 37 = 2187 entries wide!
|Measure 156 of the piece, where the seventh, and final, level of embellishment begins.|
One could call the resulting progressions self-similar or even more vaguely fractal, but I prefer the more precise language of context-free grammars. The progressions are realized through a simple model for jazz harmonies I built above a pitch model I call the helix of fifths, which is not equal-tempered! Rather, it is tuned in perfect ascending 3:2 ratios (cf. the brief paper). In fact my favorite part of the piece is at about 4:09, at the transition from the sixth to the seventh levels of embellishment, where there is an abrupt discontinuity in the tuning.
Recordings of the piece are available in several formats:
I have also prepared a 16-page traditional score in several formats with GNU LilyPond:
The piece was produced by a custom program written in the purely functional programming language Haskell, and makes use of the xi operator (cf. the brief paper). This program produced a so-called score file, which was then rendered by CMIX with the strum instrument. The resulting audio file was then compressed with the programs oggenc, lame, and flac. All programs and tools used are free (e.g. gpl’d) software.