The Contour Grammar engine, though still young, is already evolving into a complex system of data handling that will, if expectations are met, provide a great deal of both creativity and coherence in future melodic plugins.

The data structure, in brief, works as follows:

  • Words comprise an array of offsets
  • dWords comprise a word dedicated to pitch offsets and a word dedicated to rhythmic blocks
  • Dictionaries comprise many words or dWords
  • Phrases comprise a pointer to the base dictionary of the language in which the phrase is "spoken," a word that provides the rhythmic structure of the phrase (think: rhythmic shells technique), a dWord array that contains the words within the phrase and an array of lengths for the words; this last piece of data is only necessary if the structure word is omitted
  • Polystreams comprise separate arrays for the different elements of a musical note

It is far easier to understand the process through visualization:

Note that, if the engine is instructed to use the accent list (i.e. use the array of lengths for phrase rhythmic structure rather than a word), then this technique requires random or chaotic sources in two places. If the plugin uses words for rhythmic structure, then the technique requires a total of three such sources. This requirement provides ample opportunity for creativity, as we could try different combinations of random sources and observe the results.

Though work on Contour Grammar is progressing at a rather sluggish pace due to an unusually busy week, I anticipate a very productive weekend.