public interface IAudioEffectSomething that changes a bus's signal on its way to the parent.
No guide page documents this yet — the page shows what the code says about itself.
Remarks
In place, on the bus, and never on a voice. A reverb on a bus is computed once for everything routed into it; a reverb per voice is the same computation forty times over and does not even sound right — two sounds in one room share the room. Anything that genuinely is per-voice is a property of the voice: gain, pitch, the distance filter the spatialiser applies.
Process runs on the audio thread. No allocation, no locks. All state is sized in Prepare, which the bus calls when the effect is added and the format is already known.
Parameters are plain properties, written from the game thread while the audio thread reads them. That is a deliberate, documented race: every parameter is a Single or an Int32, both of which are written atomically on every platform .NET supports, so the worst outcome is one block rendered with a mix of old and new values. The alternative — routing every knob turn through the command queue — costs more than the artefact it prevents, which is inaudible.
Fields and properties (2)
bool EnabledWhether it does anything. A bypassed effect costs one branch a block.
IReadOnlyList<string> PropertiesThe knobs this effect will answer to, by name.
Methods (5)
void Prepare(in AudioFormat format, int maxFrames)Sizes and clears every buffer the effect needs.
void Process(Span<float> buffer, int frameCount, int channels)Processes a block in place.
void Reset()Throws away everything the effect remembers about what came before.
bool TrySetProperty(string name, float value)Sets one of the effect's knobs by name, for automation.
bool TryGetProperty(string name, out float value)Reads one of the effect's knobs by name.
Used by (37)
- AudioBusVixen.Audio
- BindingVixen.Audio
- BiquadFilterEffectVixen.Audio
- BitCrusherEffectVixen.Audio
- BitCrusherEffectAssetVixen.Audio
- CompressorEffectAssetVixen.Audio
- ConvolutionReverbEffectVixen.Audio
- DelayEffectVixen.Audio
- DelayEffectAssetVixen.Audio
- DistortionEffectVixen.Audio
- DistortionEffectAssetVixen.Audio
- EqualizerEffectVixen.Audio
- EqualizerEffectAssetVixen.Audio
- FilterEffectAssetVixen.Audio
- GateEffectAssetVixen.Audio
- IAudioEffectAssetVixen.Audio
- ISidechainEffectVixen.Audio
- LimiterEffectVixen.Audio
- LimiterEffectAssetVixen.Audio
- LoudnessMeterEffectVixen.Audio
- MixControlVixen.Audio
- MixControlTestsVixen.Audio.Tests
- MixerParameterTestsVixen.Audio.Tests
- MixerParametersVixen.Audio
- ModulatedDelayEffectVixen.Audio
- ModulatedDelayEffectAssetVixen.Audio
- NaughtyEffectVixen.Audio.Tests
- PhaserEffectVixen.Audio
- PhaserEffectAssetVixen.Audio
- PitchShiftEffectVixen.Audio
- PitchShiftEffectAssetVixen.Audio
- PitchVocoderEffectVixen.Audio
- ReverbEffectVixen.Audio
- ReverbEffectAssetVixen.Audio
- SpectrumAnalyzerEffectVixen.Audio
- SpectrumAnalyzerEffectAssetVixen.Audio
- TapVixen.Audio.Tests