Tutorial 33 - Introduction to the Maquette II

Topics

Data exchange between two temporal objects.

Functions used

MAQUETTE, tempobj, om//, permut-random, x-diff and omloop.

Description

In this tutorial we will construct a chord starting from a series of 6 notes (with no repetitions). The resulting chord will be the chromatic complement of our series. The order of our initial series will be randomly permutated at each evaluation of the MAQUETTE . Similarly, we will apply to our resulting chord a random registration.

• We will use two tempobjs (tempobj and tempobj1) which will be connected one to another. We will examine first the first tempobj:

A: In CHORD (A) we will enter our 6 notes series in the 'order' mode.

Note that the order of the series here is not important due to the fact that we will randomly permutate it.

B: In order to get the chromatic complement of our CHORD (A) we must now build a chromatic scale that will be compared with the CHORD (A). In the CHORD (B) we have constructed the total chromatic scale using arithm-ser (C) which outputs the list '(0 1 2 3 4 5 6 8 9 10 11) multiplied by 100 using om* (D) in order to get midicents intervals. These intervals will all be added to 6000 (C3 note) returning '(6000 6100 6200etc...) using om+ (E).

F: The problem now is that our scale (B) going from 6000 to 7100 midics covers only one octave and will not cover the entire register. For example the C note (here C3->6000) will only stand for 6000 midics, and if we compare it to the C2 in the CHORD (A) which is 4800 midics, our comparaison will fail to recognize the same note in a different register, because remember, Openmusic understands notes not symbolicaly but as midicent or frequency values.

To avoid such a problem, we will use om// function which operates the euclidean division of a number or list with a divisor and yields an integer result and the rest of the division. In other terms we will use modulo 1200 operation on our scale by considering only the rest of our octave division (the second output), 1200 midics being an octave. Whenever a C is given it will be equal to 0 and so on. Below we have the corresponding output to notes:

 C 0 C# 100 D 200 D# 300 E 400 F 500 F# 600 G 700 G# 800 A 900 A# 1000 B 1100

The CHORDs A and B will pass through this operation in two separate om// functions.

G: The outputs of the om// functions will be compared by the x-diff funtion which returns the list of elements present in the first output but not present in the second one, therefore returning the rest of the chormatical scale not found in CHORD (A). This result will be output through the additional output (J) to transmit to our second tempobj where we will generate the new chord of the MAQUETTE.

H: In order to randomly permutate our notes from CHORD (A) we will use permut-random function. The result will be input in a CHORD-SEQ (I) in order to play our notes sequentially.

K: The CHORD-SEQ (I) will be connected to the tempout arrow so it could be played by the MAQUETTE.

A: In tempobj1 we will build a simple patch which will retreive the incoming notes from the first tempobj through the input (A).

B: In order to randomly place these incoming notes in the register whenever we evaluate the MAQUETTE, we will use the omloop (B). The notes will be enumerated by a listloop. An om-random function will be used to determine the register, outputing random integers from 3 to 7. These will be multiplied by 1200 and added to our notes (1200 midics representing an octave). The result will be collected by collect abd outputed by finally. For an example on omloop you can go through tutorial 15 and tutorial 16 or for futther information please read the OpenMusic Reference Guide.

C: The output of the omloop must be connected with a musical class object such as a CHORD or a CHORD-SEQ which will be at its turn connected to the tempobj1's tempout as it is the case of the first tempobj. Here we have choosen a CHORD so that the MAQUETTE once evaluated could play a chord instead of a note sequence. If the last option would have been choosen we could have used a CHORD-SEQ instead. You can try to alternate these choices in both tempobjs by substituting the CHORD (A) of tempobj with a CHORD-SEQ and the CHORD (C) of the tempobj1 with a CHORD-SEQ.

Now you can move the tempobjs in the MAQUETTE in the desired position (e.g tempobj before tempobj1, or vice-versa, or simultaneously,). Before 'playing' the MAQUETTE one must always evaluate it using the 'Eval' button of the MAQUETTE's control panel. You can also select both tempobjs and type 'm' in order to see the contents of the CHORD-SEQ and CHORD. Each time you evaluate the MAQUETTE you'll notice a different musical output due to the random functions included in the tempobjs.

One may also select both tempobjs and duplicate them in order to construct a sequence of events in the MAQUETTE as shown above.