Deficiencies in Tao's synthesis language

Tao's synthesis language was developed primarily as a test-bed for the synthesis engine. It has evolved into a usable language but lacks several features for larger scale compositional work including:
  • Encapsulation of events
  • Encapsulation of instrument components
  • Table generating and reading functions

What is meant by `encapsulation of events' is the ability to describe a complex algorithm for producing some kind of high-level event and then place this algorithm inside a black box with input parameters. The algorithm would then be invoked whenever it was needed (much like a C or C++ function) using just its name and arguments. The addition of this feature would make it a much simpler matter to produce complex multi-layered textures of sound.

Encapsulation as applied to instruments refers to the ability to create compound instruments where the components of the instrument are arranged hierarchically with parent-child relationships. For example an instrument named `guitar' might have child components named `string1', `string2' etc. In order to achieve this the syntax of Tao's synthesis language would need to be modified to allow components to be created within the scope of other components, much as local variables may be declared within C or C++ functions.

It would also be possible to describe template instruments which would act as templates for whole families of instruments with similar characteristics. For example the description of a `guitar' template instrument would allow the construction of multiple instances each having their own body sizes and string tunings, but with aspects of the physical structure common to each instance.

Table reading functions are an essential part of any synthesis program and the only way they can be implemented at the moment is by setting up arrays of values by hand and accessing (and interpolating them) yourself with parameters declared in the script. Of course all the math library functions are available in the synthesis language so it is feasible to write table initialisation code in the Init part of the score, but it is still cumbersome compared with Csound's provision of table generating features.

©1999,2000 Mark Pearson April 30, 2000