Procedural Generation | Computer Graphics | Math

It's been a long, bumpy road to the first functional mGen plugin written in c++. Nonetheless, tonight has seen preliminary results of the work-in-progress contour grammar system embodied in c++.

Contour grammar is, essentially, a marriage of two previously-brainstormed ideas: rhythmic shells and curve splicing. The name refers to the fact that, at heart, the engine is grammatical, using the method of rhythmic shells to handle words and phrases in context, but that words are defined using basic contours like those described in the curve-splicing method.

Unlike the grammar engine of GGrewve or GrammGen, contour grammar is functional in form, meaning that a word is not necessarily limited to a certain length. Rather than using an array of pitch or rhythmic offsets to characterize a word, contour grammar uses an array of coefficients that determine the properties of an infinite contour. Rhythmic shells then give precise instructions for transforming sets of these infinite contours into concrete, finite note streams.

Some expected advantages of contour grammar:

Arbitrary note size makes words extremely flexible (any given word can fill up any given amount of space, so no length-checking is necessary)

Rhythmic shells preserve rhythmic integrity of phrases

Shells still allow for variation by providing direct access to the words upon which the shell is built

Tweaking a single word's coefficients will change a specific part of the shell while preserving everything else, allowing for great coherence

So, in summary, contour grammar provides a flexible, coherent, and easily-variable data structure while still remaining concrete enough to require only a few minor steps to convert to pattern format. In general, abstractions such as those made by grammar engines suffer from either a lack of coherence or a difficulty in de-abstraction (returning them to the base format). Contour grammar, it seems, circumvents these drawbacks with a well-designed data structure.

Preliminary results with contour grammar already display some degree of coherence, a great deal of variability, and, most importantly, the potential for continued development and improvement. February will surely bring some new, interesting samples!

1 Responses.

[...] Unfortunately, most of my work over the past week has been devoted entirely to the internals of Contour Grammar. The format of the data structures will completely govern the quality of the plugin’s [...]