next up previous contents
Next: Examples and Results Up: Synthesis Method Previous: The Synthesis Paradigm   Contents

The Synthesis Language

A language was developed for specification of the synthesis hierarchy5.2. For every layer of the parameter definition, one defines a seed5.3, which itself is a collection of structures, and pointers to objects for production of the end result. These latter objects are responsible for mapping the developed parameters to the desired output (e.g., soundfiles, scores for other systems, or graphical pictures). Structures are a collection of points. Points are a collection of factors and options and a pointer to a seed, which defines their lower content. Some of the normally used factors are ``time'', ``frequency'', ``amplitude'', and ``channel values'' (for multi-channel synthesis.) The program first starts with the seed called ``mainseed'', which has a point as its initial starting value. Then, according to the factors found in the points in the structure of ``mainseed'', it re-writes the initial ``main'' as a series of seeds. This procedure is repeated recursively until the duration of a cell is smaller than the ``stop recursion'' value. At every level for every seed an output production service routine is called, with the seed value (which is represented as a point) as its argument. The factors for points can either be double precision values, or expressions. One is able to access all the values of the higher levels by using expressions. A single value used as a factor, for example $ \alpha $, without an expression is a shorthand notation for the expression:
$\displaystyle x_{l+1} = \alpha x_{l}$      

where $ x_{l} $ represents the value of the factor $ x $ at level $ l $.

The production objects can have a single table and a single window attached to them. In the sound production object, the table is used as a lookup table with increments defined by the frequency factor, while the window is used as an amplitude window for the duration of the cell. Every point can as well have a table and a window which override those in the production objects. The language itself is rather simple to understand once one understand the connection between different objects. Its syntax is very close to structure declaration of the C language, and in fact, every score is passed through the C language preprocessor, so that comments and C style macros can be used in the score. Rather than explaining every detail of the language, we will go through a few examples, and shall explain the scores and the synthesis method in more detail while discussing the results.


next up previous contents
Next: Examples and Results Up: Synthesis Method Previous: The Synthesis Paradigm   Contents
Shahrokh Yadegari 2001-03-01