
Rhythm trees should be considered as an alternative coding for symbolic rhythm structures allowing a complete compatibility with traditional and most complex notation. This notation is directly inspired from OpenMusic's programming language, the Common Lisp Language based upon LISt Processing.
Some factories (e.g. voice, measure, group) accept a rhythmical tree as a slot input. Such a tree is a list in the form :
(D S) where
- D is a number (integer or fractional) expressing a time extent
- S is a list of items defining a set of proportions to take place in D, each item of S being either :
- a number
- or a list having exactly (and recursively) the same structure than D
So (1 (1 1 1 1)) is a structure whose extent is, say, a whole-note (1), and which contains 4 equally lasting values, 4 quarter notes in that case.
(2 ( (1 (1 1 1 1)) (1 (1 1 1 1)) )
is a structure lasting, say, two whole-notes, containing two equal substructures, each lasting a whole-note. These substructures in turn contain 4 equal values i.e. quarter notes. So it can be interpreted as a voice containing 2 measures in 4/4.
When the number D is at the level of a voice, it is by convention expressed in whole-note units.
When the number D is at the level of a measure, it is by convention expressed in whole-note units, and it may also be expressed by a ratio e.g.:
4/4, 7/8, 5/2
or a list e.g. :
(4 4) (7 8) (5 2)
which meaning is the usual musical one for time signature. Due to a specificity of the underlying Common Lisp system, ratios like 4/4 are automatically simplified (i.e. 4/4 = 1). In that case, the list form should be chosen (i.e. (4 4)) or , alternatively, he special notation 4//4.
To avoid tedious calculations, D can be replaced by a question-mark '?'. In that case OM will figure out the actual value of D. Our previous example can then be rewritten as :
(? ( (1 (1 1 1 1)) (1 (1 1 1 1)) )
Here are some examples :
(1 (1 1 1 1 1)) considered as a single group. The choice of the quarter note here is arbitrary.

(? ((4//4 (1 (1 (1 -2 1 1)) 1.0 1)) (4//4 (1.0 (1 (1 1 1)) -1 1))))
considered as a voice. Note the question mark telling OM that we don't bother with the actual voice duration. The negative numbers that stand for rests and the floating point numbers for ties:

Here we put a triplet inside a quintuplet.
(? (((4 4) (1 (1 (1 (2 (1 1 1)) 1 1)) 1 1))))

Another example using nested irrational pulses:
(? (((4 4) ((4 ((1 (1 1 1 1 1 1)) (1 (1 1)) 1 (1 (1 1 1 1 1)) (1 (1 1 1 1 1 1)) 1 (1 (1 1)))))) ((5 8) ((5 ((1 (1 1 1 1 1)) (1 (1 1 1 1)) 1 (1 (1 1)) (1 (1 1 1)) 1))))))

