Tutorial 25 - Voice II

Introduction to Voice


Generating rhythmical trees


Functions used

VOICE, list, x-append and omloop




In this example, we will generate rhythmical trees using an OM abstraction (a red patch) which we will call 'Rtm constrct'. This patch will take three arguments all of them lists. The first two list will define the time signature of each measure (bea t number and beat duration), the third list being the rhythmical proportions contained in these measures in the form of a list.

Patch structure

Now let us examine the Rtm constrct patch:

Inside this patch three omloops will construct the basic leaf of our rhythm trees.

A: The first omloop 'measure-sign' (A) will provide time signatures:

Each output will be enumerated using listloops (D). Each beat number will be appended in a list with its corresponding beat duration using list (E). The results will be collected in collect (F) and then returned.

B: In B , 'proprts' will return measures. (This loop is the same as 'measure-sign' loop).


C: this omloop will correctly gather both results in a single list in the form (<time signature> <measures>).


G: We will add extra parenthesis to the output of the last omloop (C), and then append it (using x-append) with the '?' sign indicating the number of measures in our rhythmical tree which is kept unspecified.

After connecting our abstraction to the second input of VOICE, we will obtain this rhythm: