Tutorial 24 - Voice I

Introduction to Voice


Voice rhythmical structure


Functions used





The VOICE object is a factory that deals with symbolic representation of rhythm. Here rhythm will be represented following a tree syntax (a list of lists). In this tutorial we will construct tree structures repesenting rhythmical notation. (For further information about rhytm trees c.f Appendix of the OpenMusic reference) .

The rhythmical tree structure

The second input of VOICE takes a list which will be represented in its editor as a notated rhythmical line. Now let us examine closely the special structure of this list:

This list is in fact a list of lists which is called a tree. This tree has a specific syntax:





The structure is again a list of lists where the first element is the number of pulses contained in the measure followed by its subdivision. (Here in the example above, we have four equal pulses ). We could have written (4 (3 1)) which represents in a 4//4 measure a dotted half note followed by a quarter note.


We might also represent in this level rests by using negative integers. Example:

(? ( ((4 8) ((4 ( 1 -2 1)))) ) ) will output :


In order to represent ties, one will use floats as follows:

(? ( ((4 8) ((4 ( 1 -2 1)))) ((3 4) ((3 (1.0 2)))) ) )


Irrationals (Tuplets)

Irrationals such as tuplets, quintiplets etc.. are naturally represented by subdividing a pulse with a non-multiple . For instance if we subdivide one pulse into five beats ( instead of four) we will obtain a quintuplet:

Four beats resulting in four sixteeth notes:

(?(((1 4) ((1 (1 1 1 1)))) ))

Five beats giving a quinuplet of sixtenth notes:

(?(((1 4) ((1 (1 1 1 1 1)))) ))


Patch structure

In this tutorial's patch we will generate a simple rhythmical line representing regular eight notes pulses in three measures of 4 8. This will be done by using mainly the list function

A: In (A) we just add the question mark as the first element of the list.

B: in (B) we will repeat using repeat-n three times the list structure which represents measures.

C: A measure is again constructed using embeded lists in the correct order.