OpenMusic

Visual Programming | Computer-Assisted Composition

Navigation : Previous | Next

Example : Building a Chord-Seq With a Synthesis Patch

This maquette contains several BPFs. The coordinates and temporal position of each BPF is interpreted to produce a corresponding melodic sequence. The sequences are then merged into one chord-seq. The whole process is programmed in a synthesis patch.

Programming the Synthesis Patch

General Program

The synthesis patch has been added in the workspace, dropped in the patch editor and assine to the maquette.

The synthesis patch has :

The maquette’s output returns the chord-seq produced by the synthesis patch.

—|—

OMLoop

The value of the Maquette Self Input is returned to OMLoop’s input.

At each step of the loop, listloop returns the value of a TemporalBox to slots. Each of these TemporalBoxes has a value , a vertical position - posy - and a temporal position - offset .

  1. At each step of the loop, acum builds a sequence out of the chord-seq and a “blank” chord-seq.

  2. Finally returns the whole sequence to a global chord-seq, which is connected to the Tempout of the synthesis patch.

Inside the OMLoop : building the melodic sequence from the TemporalBoxes
parameters.

Inside the OMLoop : building the melodic sequence from the TemporalBoxes parameters.

About Acum and Merger

Acum has three inputs :

Here, merger builds a sequence out of the two chords-seqs. This sequence includes the temporal value of the chord-seqs.

Merger merges two sequences into one, including their temporal value. As it cannot merge something with “nil”, we have assigned a “pseudo” empty chord-seq to the initial value input of acum.

—|—

Resulting Chord-Seq

Once the maquette is evaluated, the result of the synthesis can possibly be visualized with a chord-seq box connected to the maquette’s output. When the maquette, or a selected TemporalBox is played, it renders the interpretation of its values by the synthesis patch.

Using the Maquette or Not

Here, as in most cases, the same program can be designed without a maquette, if one is interested in a single abstraction level.

References :

Contents :

Navigation : Previous | Next