Instruments and Generators

An Instrument is the class that holds behavior and state for a system made up of a set of Generators and the relations that are established in between them. When we define a new Instrument in MetriX we are actually subclassing the base (and abstract) Instrument class in order to implement behavior that is particular to the Instrument being defined. This subclassifying though can be done at the object level by instantiating an object and using some attributes to set its behavior (It is well known that instantiation is as a matter of fact a form of subclassification, see [Graham, 1991] for instance).

Defining an Instrument behavior means specifying how the Instrument will respond to incoming messages. For doing so we must define what Generators make up the Instrument and how each of them responds to input messages.

In order to produce sound an Instrument needs audio generation primitives that can be existing audio waves, analysis results or a set of simple functions such as oscillators or waveform Generators. There is no need to have one of such primitives for every Generator in the Instrument, only those needed to represent the space of possible sound combinations to be produced by the different Generators.

Therefore, the primitives in MetriX are arranged in what we call the Timbre Space. The idea of a timbre space is not new (see [Wessel, 1979], for example) but it has specific properties in our framework. A MetriX timbre space is an n-dimensional space constructed by placing the audio generation primitives. Each of the dimensions in the space represents a key feature of the sound such as Pitch or Loudness6.1. The decisions as to how many and which key features are necessary for a given Instrument is dependent on the flexibility and quality the sound designer wants the Instrument to have. As it will be seen later, axes not represented in the timbre space but needed in the synthesis can also be obtained by transformation.

The n-dimensional geometric space is constructed by placing the samples or primitives in precise coordinates belonging to this space. Samples located at furthest positions in relation to a given dimension define the limits of the timbre space. Once existing samples are located at definite positions, intermediate samples can be then obtained by interpolating neighboring ones.

A first simple example of a timbre space could be a one dimensional space formed by placing samples on a single axis, sorted by pitch. Notes with intermediate pitch will then be obtained by interpolating the two neighboring samples with the appropriate weight factor.

Adding some complexity to the example we could add a second dimension to our timbre space: loudness. Figure 6.9 illustrates a two-dimensional timbre space. Note that only A's in two different loudness (fortissimo and pianissimo) have been sampled from the original Instrument. Intermediate pitches and loudness will be obtained by interpolating existing samples.

Figure 6.9: Two dimensional timbre space