Synthesizer module

Universal Synthesizer

There are many available theoretical synthesizer models. The possible models will not be discussed here. Here follows an illustration of the proposed Univeral Synthesizer Model that will be used in MML.

Universal synthesizer

The interpretion of this illustration follows below. Note that the illustration should not be confused with the model. The model can be represented with different graphic representations. This illustration is one such possibility.

As initial comment, beware that some of these terms (eg instrument and sound) are used differently by synthesizer manufacturers. For MML we stick as closely as possible to the common English usage of these terms.

Top

Universal Synthesizer Modules (USMs)

The following Universal Synthesizer Modules (USMs) are distinguished. A synthesizer need not implement all these modules, as will be explained.

Some common synthesizer concepts are not included in this model. For example, sound banks and sound programs in MML are handled by the organization module as they do not generate any sounds, but organize and administrate them. Sound banks are handled by the bank attribute, and sound programs by the program attribute.

Primitives

prim

In physics sound is usually analyzed in terms of base sound waves, such as a sine, square, saw tooth and others. These basic physical sound wave patterns are the primitives (declared with the prim element) of the universal synthesizer. These basic physical sounds are not complex waves.

Not all real synthesizer product models allow the user to specify primitives. The older analogue synthesizers used to have such primitives, and some of the later digital models mimic these old analogue synthesizers thus allowing the use of primitives.

Top

Core

core

Some real synthesizer products do not provide primitives, but combinations of primitives as basic sound building blocks. These "sounds" are complex waves or core sounds (declared with the core element) as they can be used in combinations to create new sounds. Sounds included here are such as sound fonts, samples, and a wide range of sounds called by different names by different manufacturers (and even different product models from the same company). There is a total lack of standard industry terms. Some names that aply to this module are: part, timbre, wavetable, patch and many more. Some products apply some of these terms not to the MML 'core', but to the MML 'sound'.

Take note that these terms may apply to other modules as applied by some manufacturers. Due to the inconsistency among manufacturers there is, unfortunately no clear guideline here. The only solution is to analyze a specific synthesizer in terms of the USM modules and 'rename' the synthesizer terms. It is proposed that USM names should map to the names used by a specific synthesizer. Ideally there should be some namespace DTD, which is what MML attempts to do.

Top

Effects

effect

Effects are secondary processes in the sense that they cannot 'live' on their own. They need a primary sound source to which they are applied. Effects can be applied to the lower levels (primitive and core) independently, and/or to their combined output. The looping circuit will determine which is possible. Effects (declared with the effect element) can also apply to higher level modules.

The USM illustration above could also be drawn differently: primary sound modules could form the main processing line in the flowchart for the circuit, while secondary modules could be added parallel to the primary line. The illustration should thus not be confused with the model. The model can be illustrated in many different ways.

Top

Sound set

soundset

The sound set module consists of complex sounds that may be combined to form an instrument. The building blocks of rich sounds are complex waves, such as supplied by the core module. For non-complex synthesizers, primitives may become the sound.

A sound set is not the final 'sound' (or instrument), and neither is it a more basic 'sound' such as a core sound. This module allows real synthesizers to have an intermediate level for sound production.

Some products call the sound set a 'patch', others call it a 'part', or 'timbre', or something else.

Top

Texture

adsr | volume

Volume that affects texture, envelope and harmonics are applied in this module. For details see the Texture module.

The envelope determines, for example, how the sound wave begins when triggered (ie when played). A slow attack sounds different from a fast attack, even though all the other characteristics may be exactly the same. This module may logically also apply after the instrument module in the circuit. It is placed here as different instruments usually have different envelopes 'by nature'. For example, a violin has a slower attack than a piano.

Top

Instrument

instrument

An instrument is the single solo instrument played by a "musician" (or group of musicians). If the instrument can play a melodic line, that line defines it. If it is a percussive instrument, what it plays defines it. Such an instrument may mimic a real one, such as a piano, saxophone, drum, and so on, or may be a virtual instrument that exists only in the digital world. A melody line played by a ghost-like whining synthetic cry would constitute an instrument. As there are an infinite possibility of these instruments, they are usually given unique names by their creators. There is no way in which such names could become universal conventions, except if a schema and namespace is created along XML-lines that would provide categorical guidelines for classifying such instruments.

Top

Band

band | device

A band is a collection of similar or different instruments. It can also be called an orchestra, which is a longer word than band, so the word 'band' will be used. In MML a symphony orchestra is one kind of band, despite possible objections by purists.

A band consists of a set of instruments that may be produced by a single synthesizer machine (such as a multi-part synthesizer that can handle different MIDI channels), or by several machines connected via some or other network, such as a MIDI network.

Different devices used to form the band must be specified explicitly using different device attibutes. If the band is constituted by a single device only one device is specified.

Two different kind of processes

There are two different kinds of processes in the Universal Synthesizer model:

Top

The synthesizer

The circuit of the modules as illustrated above is that of the default synthesizer. In MML it is possible to specify other default synthesizers (with the synth element) and their individual different circuits (with the circuit element). The same virtual synthesizer can thus be given different names using the synth element, or be assigned different 'patches' by using the circuit element.

Implementing USMs

Here are General rules for implementing the different Universal Synthesizer Modules:

There must be a strict order in which these theoretical modules are implemented in real synthesizers. Starting at the bottom of the hierarchy (as in the illustration), the order is as follows.

  1. Primitives
    Process the primitive specifications.
    If there is no primitive move one level up to the core.
  2. Core
    Find the core. If there is a primitive, expand it with core specifications -- the core builds on the primitive.
    If there is no primitive, the core becomes the most basic module.
    Move to the next level.
  3. Effects
    Find the effects. Obviously if both levels 1 and 2 do not apply, effects will be ignored at this phase.
    If there are previous levels, effects can be applied if stated, and to any or both the lower levels as specified with the id, input and output attributes.
    If there are no effects specifications, this module is empty and to be ignored.
    If the module indeed has content, but is to be skipped by specific identified modules (specified with id) , use the exclude attribute.
  4. Sound set
    Find the sound set. If the sound set is the lowest level for sound generation, it is applied as the basic module, and effects can be applied to the sound.
  5. Texture
    Find texture. It can apply to any or all of the lower levels at any input stage. Use the id, input, output and exclude attributes where applicable.
  6. Instrument
    Find instrument. If there is no instrument, use a lower level module (for example primitive).
    Look for other instruments to form the band. Effects and texture may apply on this level as well.
  7. Band
    Find band.
    If there is no band, instrument becomes the band (which in effect may be a primitive).
    Effects and texture may apply on this level as well.

Top

Looping circuit

A looping circuit consists of a series of events. MML attempts to decribe the flowchart of the possible loops with a circuit, using the circuit element. This means that a from...to phrase must be built into the markup language. A graphical flowchart will be mush easier to interpret, but there should be markup underlying this flowchart. An input attribute is used for "from", while an output atribute is used for "to". The values of these attributes reflect the module names of the Universal Synthesizer. When used together with a generic identifier (id) and the target attibute, MML allows for a wide variety of complex loops.

It is not necessary to make explicit both the input and output. Both attributes are only used in complex situations.

The default circuit proceeds as follows:

If there are only single instances of these modules, inputs and outputs need not be specified as this is the default arrangement. Modules that are not implemented should be ignored.

Example

prim | soundset | id | target

In this example there are two primitives. One (identified as "one") feeds through the effects module. The other (identified as "two") is not effected.


<prim id="one" target="soundset" />
<prim id="two">
...
<soundset input="one" />

 

The circuit

The circuit element is used for declaring virtual circuits. The default circuit is the one illustrated above. The inputs and outputs of modules can be specified explicitly and differently using the circuit element. A circuit may serve in the same manner that a style sheet file serves for text documents. The circuit contains the specifications of a specific virtual synthesizer which can be called and implemented for specific markup sets. In other words, different virtual synthesizers with different virtual circuits can be used for parsing different MML documents. These virtual synthesizers and circuits can map to real products.

It is possible to 'cable' different circuits on a single real machine. This was especially the case with the old modular analogue synthesizers. There are now digital synthesizer that mimic those analogue circuits. A Universal Synthesizer should thus allow for the possibility of using different circuits on the same machine.

Models and modules

There are two words "models" and "modules" used in this document that may cause problems. Their different meanings are described here.

Model

The use of the word "model" can be confusing as it has distinct meanings. Hopefully the contexts in this document will make plain which meaning applies. The word is used in the following senses:

In the documentation I will attempt to make explicit possible ambiguous usages.

Module

There are also theoretical modules and product modules.

The theoretical MML module does not necessarily have a product module counterpart. The MML effects module may have an effects unit as counterpart. Different types of effects that are sometimes handled by different physical units are not handled by different MML modules, but by different attributes of the theoretical module.

Top

© 1999, 2000 Author: Jacques Steyn