This package provides the core composite model for the Audio problem domain, separating the concerns of processing (AudioProcess) from the control of that processing (AudioControls).
AudioBuffer encapsulates buffered multi-channel audio data.
AudioProcess defines a simple contract for digital signal processing.
AudioControls specialises CompoundControl for the audio problem domain.
Generally AudioProcesses are the digital signal processing implementations implied by AudioControls. If the AudioControls were a set of potentiometers and switches, the AudioProcess would be the processing circuitry that uses those controls. The association between the two may be direct if the user variables implied by the controls are directly usable by the process or it may be indirect in the more general case.
AudioControlsChain specialises CompoundControlChain for the audio problems domain. It is equivalent to the controls on a mixer strip or a multi-fx unit.
AudioProcessChain is a composite AudioProcess that processes its child AudioProcesses sequentially. Importantly, it also tracks its associated AudioControlsChain so that any structural changes to that control chain are accompanied by similar structural changes to the process chain in a thread-safe manner. It is suitable for implementing the digital signal processing required by mixer strips or multi-fx units.
AudioServices specialises Services for the audio problem domain to provide lookup and provision of services. Both key parts of this package, AudioProcess and AudioControls may be provided as plugin services. This provides functionality similar to VSTs from Steinberg.
ChannelFormat defines the meaning of each channel in an AudioBuffer.
AudioProcess implementations are always coloured red, AudioControls are always coloured blue. Additionally, interfaces are always coloured yellow.