This API is deliberately short and simple. To achieve compatibility with a range of promising Linux sound synthesis packages it attempts to find the 'lowest common denominator' in their logical behaviour. Having said this, certain limiting decisions are implicit, notably the use of floats for all data transfer and absence of a parameterised 'initialisation' phase. Unit generators have 'ports' that are inputs or outputs for audio or control data and the plugin is 'run' for a 'frame' corresponding to a short time interval measured in samples. Audio data is communicated using arrays of floats, allowing a frame of audio to be processed by the unit generator in a single block.
Control data is communicated using simple float values.
The unit generator may assume that all its inputs and outputs are bound before it is asked to run a frame. This API contains very limited error-handling at this time. These are ORed together. By default a port is an audio-rate output. This unit generator handle indicates access to a particular instance of the unit generator concerned.