Architecture
The plugin system is built around theIAudioProcessor interface, which provides a consistent API for all audio processing components regardless of their implementation.
IAudioProcessor Interface
All plugins in Lumix implement theIAudioProcessor interface:
Enabled- Controls whether the plugin is active in the signal chainProcess()- The core audio processing method that transforms input samples to outputGetPlugin<T>()- Generic method to retrieve the underlying plugin implementationToggle()- Convenience method to enable/disable the plugin
Plugin Types
Built-in Plugins
Native effects including EQ and utility processors
VST2 Plugins
External VST2 instrument and effect support
Processing Flow
Plugins process audio in a consistent manner:- Input Buffer - Receives interleaved stereo audio samples (Left, Right, Left, Right…)
- Processing - Transforms the audio according to plugin-specific algorithms
- Output Buffer - Writes processed samples back in the same format
- Sample Count - The
samplesReadparameter indicates how many samples to process
Audio buffers are interleaved stereo:
[L0, R0, L1, R1, L2, R2, ...] where even indices are left channel and odd indices are right channel.Plugin Management
The plugin chain manages multiple processors in series:- Instrument Slot - A single VSTi (VST Instrument) can be assigned per track
- Effects Chain - Multiple effect processors are applied in sequence
- Default Chain - Every track includes a Utility plugin and SimpleEq by default
Lifecycle Management
Integration
Plugins integrate with Lumix’s audio engine through:- ISampleProvider - NAudio’s streaming audio interface
- Plugin Chain - Serial processing of multiple effects
- Real-time Processing - Low-latency audio callback processing
Plugin Chain Management
Learn how plugins are organized and processed in the signal chain