Repository navigation
Module_SignalProcessing_Effects
Location: Home / Signal processing / Audio effects
The Vorcyc.Mathematics.SignalProcessing.Effects namespace includes base classes AudioEffect and WetDryMixer, stereo effects such as BinauralPanEffect, ItdIldPanEffect, and StereoDelayEffect, and effects including AutowahEffect, BitCrusherEffect, ChorusEffect, DelayEffect, DistortionEffect, EchoEffect, FlangerEffect, MorphEffect, PhaserEffect, PitchShiftEffect, PitchShiftVocoderEffect, RobotEffect, TremoloEffect, TubeDistortionEffect, VibratoEffect, WahwahEffect, and WhisperEffect.
Root namespace for the types below:Vorcyc.Mathematics.SignalProcessing.Effects
📒 Contents
- 🔖 Vorcyc.Mathematics.SignalProcessing.Effects.Base.AudioEffect class
- 🔖 Vorcyc.Mathematics.SignalProcessing.Effects.Base.WetDryMixer class
- 🔖 Vorcyc.Mathematics.SignalProcessing.Effects.Stereo.BinauralPanEffect class
- 🔖 Vorcyc.Mathematics.SignalProcessing.Effects.Stereo.ItdIldPanEffect class
- 🔖 Vorcyc.Mathematics.SignalProcessing.Effects.Stereo.PanEffect class
- 🔖 Vorcyc.Mathematics.SignalProcessing.Effects.Stereo.PingPongDelayEffect class
- 🔖 Vorcyc.Mathematics.SignalProcessing.Effects.Stereo.StereoDelayEffect class
- 🔖 Vorcyc.Mathematics.SignalProcessing.Effects.Stereo.StereoEffect class
- 🔖 Vorcyc.Mathematics.SignalProcessing.Effects.AutowahEffect class
- 🔖 Vorcyc.Mathematics.SignalProcessing.Effects.BitCrusherEffect class
- 🔖 Vorcyc.Mathematics.SignalProcessing.Effects.ChorusEffect class
- 🔖 Vorcyc.Mathematics.SignalProcessing.Effects.DelayEffect class
- 🔖 Vorcyc.Mathematics.SignalProcessing.Effects.DistortionEffect class
- 🔖 Vorcyc.Mathematics.SignalProcessing.Effects.EchoEffect class
- 🔖 Vorcyc.Mathematics.SignalProcessing.Effects.FlangerEffect class
- 🔖 Vorcyc.Mathematics.SignalProcessing.Effects.MorphEffect class
- 🔖 Vorcyc.Mathematics.SignalProcessing.Effects.PhaserEffect class
- 🔖 Vorcyc.Mathematics.SignalProcessing.Effects.PitchShiftEffect class
- 🔖 Vorcyc.Mathematics.SignalProcessing.Effects.PitchShiftVocoderEffect class
- 🔖 Vorcyc.Mathematics.SignalProcessing.Effects.RobotEffect class
- 🔖 Vorcyc.Mathematics.SignalProcessing.Effects.TremoloEffect class
- 🔖 Vorcyc.Mathematics.SignalProcessing.Effects.TubeDistortionEffect class
- 🔖 Vorcyc.Mathematics.SignalProcessing.Effects.VibratoEffect class
- 🔖 Vorcyc.Mathematics.SignalProcessing.Effects.WahwahEffect class
- 🔖 Vorcyc.Mathematics.SignalProcessing.Effects.WhisperEffect class
All types below are in namespace:Vorcyc.Mathematics.SignalProcessing.Effects
Vorcyc.Mathematics.SignalProcessing.Effects.Base.AudioEffect is an abstract base class for audio effects, inheriting WetDryMixer and implementing IFilter and IOnlineFilter.
-
public abstract float Process(float sample)- Processes one sample.
- Parameters:
-
sample: Input sample.
-
- Returns: processed sample.
-
public abstract void Reset()- Resets the effect.
-
public virtual Signal ApplyTo(Signal signal, FilteringMethod method = FilteringMethod.Auto)- Apply effect to entire signal,and returns a new processed signal.
- Parameters:
-
signal: Signal. -
method: Filtering method; defaultFilteringMethod.Auto.
-
- Returns: Processed
Signal.
-
public virtual void Apply(Signal signal, FilteringMethod method = FilteringMethod.Auto)- Applies effect to entire signal (in-place).
- Parameters:
-
signal: Signal. -
method: Filtering method; defaultFilteringMethod.Auto.
-
The following example uses AudioEffect with comments:
using System;
using Vorcyc.Mathematics.SignalProcessing.Effects.Base;
using Vorcyc.Mathematics.SignalProcessing.Signals;
public class CustomAudioEffect : AudioEffect
{
public override float Process(float sample)
{ // Custom processing logic
return sample * 0.5f;
}
public override void Reset()
{
// Custom reset logic
}
}
public class AudioEffectExample
{
public static void Main()
{
// Define signal
float[] samples = { 0.5f, 0.6f, 0.55f, 0.7f, 0.65f };
var signal = Signal.FromCopy(samples, 1000);
// Create custom audio effect instance
var effect = new CustomAudioEffect();
// Apply effect to entire signal
var processedSignal = effect.ApplyTo(signal);
// Output processed signal samples
Console.WriteLine("Processed Signal:");
foreach (var sample in processedSignal.Samples)
{
Console.WriteLine(sample);
}
}
}Vorcyc.Mathematics.SignalProcessing.Effects.Base.WetDryMixer is a base class implementing wet/dry mixing logic and IMixable.
-
public float Wet { get; set; } = 1f- Gets or setsWet gain (default 1).
-
public float Dry { get; set; } = 0f- Gets or setsDry gain (default 0).
-
public void WetDryMix(float mix, MixingRule mixingRule = MixingRule.Linear)- Sets wet/dry mix (range [0..1]).
- Parameters:
-
mix: Wet/dry mix ratio. -
mixingRule: Mixing rule; defaultMixingRule.Linear.
-
-
public void WetDryDb(float wetDb, float dryDb)- Sets wet/dry gain (dB) and applies linear mixing rule.
- Parameters:
-
wetDb: Wet gain (dB). -
dryDb: Dry gain (dB).
-
The following example uses WetDryMixer with comments:
using System;
using Vorcyc.Mathematics.SignalProcessing.Effects.Base;
public class CustomWetDryMixer : WetDryMixer
{
public void ApplyEffect(float[] samples)
{
for (int i = 0; i < samples.Length; i++)
{
samples[i] = Wet * samples[i] + Dry * samples[i];
}
}
}
public class WetDryMixerExample
{
public static void Main()
{ // Define signal
float[] samples = { 0.5f, 0.6f, 0.55f, 0.7f, 0.65f };
// Create custom wet/dry mixer instance
var mixer = new CustomWetDryMixer();
// Set wet/dry mix ratio
mixer.WetDryMix(0.7f, MixingRule.Sin3Db);
// Apply effect
mixer.ApplyEffect(samples);
// Output processed signal samples
Console.WriteLine("Processed Signal:");
foreach (var sample in samples)
{
Console.WriteLine(sample);
}
}
}Vorcyc.Mathematics.SignalProcessing.Effects.Stereo.BinauralPanEffect is a binaural panning effect with HRIR/BRIR interpolation and optional crossover filters.
-
public float Azimuth { get; set; }- Gets or setsAzimuth (theta).
-
public float Elevation { get; set; }- Gets or setsElevation (phi).
-
public BinauralPanEffect(float[] azimuths, float[] elevations, float[][][] leftHrirs, float[][][] rightHrirs)- Constructs BinauralPanEffect instance.
- Parameters:
-
azimuths: Azimuth array (must be sorted ascending). -
elevations: Elevation array (must be sorted ascending). -
leftHrirs: Left-ear HRIR set. -
rightHrirs: Right-ear HRIR set.
-
-
public void UseCrossover(bool useCrossover)- Enables or disables crossover filtering.
- Parameters:
-
useCrossover: Whether to use crossover filtering.
-
-
public void SetCrossoverParameters(float freq, int samplingRate)- Updates crossover filter frequency (BiQuadFilters only).
- Parameters:
-
freq: Frequency. -
samplingRate: Sampling rate.
-
-
public void SetCrossoverFilters(IOnlineFilter lowpassLeft, IOnlineFilter highpassLeft, IOnlineFilter lowpassRight, IOnlineFilter highpassRight)- Sets custom crossover filters.
- Parameters:
-
lowpassLeft: Left-channel lowpass filter. -
highpassLeft: Left-channel highpass filter. -
lowpassRight: Right-channel lowpass filter. -
highpassRight: Right-channel highpass filter.
-
-
protected void UpdateHrir(float azimuth, float elevation)- Updates HRIR (interpolated from HRIR table).
- Parameters:
-
azimuth: Azimuth (theta). -
elevation: Elevation (phi).
-
-
public override void Process(ref float left, ref float right)- Processes one sample per channel: [in L, in R] -> [out L, out R].
- Parameters:
-
left: left-channel Input sample. -
right: right-channel Input sample.
-
-
public override void Reset()- Resets binaural pan effect.
The following example uses BinauralPanEffect with comments:
using System;
using Vorcyc.Mathematics.SignalProcessing.Effects.Stereo;
public class BinauralPanEffectExample
{
public static void Main()
{
// Define HRIR data
float[] azimuths = { -80, -65, -55, -45, -40, -35, -30, -25, -20, -15, -10, -5, 0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 55, 65, 80 };
float[] elevations = { -45, -39, -34, -28, -23, -17, -11, -6, 0, 6, 11, 17, 23, 28, 34, 39, 45, 51, 56, 62, 68, 73, 79, 84, 90, 96, 101, 107, 113, 118, 124, 129, 135, 141, 146, 152, 158, 163, 169, 174, 180, 186, 191, 197, 203, 208, 214, 219, 225, 231 };
float[][][] leftHrirs = new float[azimuths.Length][][];
float[][][] rightHrirs = new float[azimuths.Length][][];
// Initialize HRIR data (example)
for (int i = 0; i < azimuths.Length; i++)
{
leftHrirs[i] = new float[elevations.Length][];
rightHrirs[i] = new float[elevations.Length][];
for (int j = 0; j < elevations.Length; j++)
{
leftHrirs[i][j] = new float[128]; // example length
rightHrirs[i][j] = new float[128]; // example length
}
}
// Create BinauralPanEffect instance
var binauralPanEffect = new BinauralPanEffect(azimuths, elevations, leftHrirs, rightHrirs);
// Set azimuth and elevation
binauralPanEffect.Azimuth = 30;
binauralPanEffect.Elevation = 45;
// Enable crossover filtering
binauralPanEffect.UseCrossover(true);
// Process sample
float leftSample = 0.5f;
float rightSample = 0.6f;
binauralPanEffect.Process(ref leftSample, ref rightSample);
// Output processed sample
Console.WriteLine($"Processed Left Sample: {leftSample}");
Console.WriteLine($"Processed Right Sample: {rightSample}");
}
}Vorcyc.Mathematics.SignalProcessing.Effects.Stereo.ItdIldPanEffect is a stereo panning effect based on ITD-ILD (interaural time/level difference).
-
public float HeadRadius { get; }- Gets Head radius.
-
public float Pan { get; set; }- Gets or setsPan.
-
public ItdIldPanEffect(int samplingRate, float pan, InterpolationMode interpolationMode = InterpolationMode.Linear, double reserveDelay = 0.005, float headRadius = 8.5e-2f)- Constructs ItdIldPanEffect instance.
- Parameters:
-
samplingRate: Sampling rate. -
pan: Pan. -
interpolationMode: Fractional delay line interpolation; defaultInterpolationMode.Linear. -
reserveDelay: Maximum reserved delay time (seconds); default 0.005 s. -
headRadius: Head radius; default 8.5e-2f.
-
-
public override void Process(ref float left, ref float right)- Processes one sample per channel: [in L, in R] -> [out L, out R].
- Parameters:
-
left: left-channel Input sample. -
right: right-channel Input sample.
-
-
public override void Reset()- Resets the effect.
The following example uses ItdIldPanEffect with comments:
using System;
using Vorcyc.Mathematics.SignalProcessing.Effects.Stereo;
public class ItdIldPanEffectExample
{
public static void Main()
{
// Create ItdIldPanEffect instance
var itdIldPanEffect = new ItdIldPanEffect(44100, 0.5f);
// Set pan
itdIldPanEffect.Pan = 0.8f;
// Process sample
float leftSample = 0.5f;
float rightSample = 0.6f;
itdIldPanEffect.Process(ref leftSample, ref rightSample);
// Output processed sample
Console.WriteLine($"Processed Left Sample: {leftSample}");
Console.WriteLine($"Processed Right Sample: {rightSample}");
}
}Vorcyc.Mathematics.SignalProcessing.Effects.Stereo.PanEffect is a stereo panning audio effect.
-
public float Pan { get; set; }- Gets or setsPan (range [-1..1]).
-
public PanRule PanRule { get; set; }- Gets or setsPan rule (pan law).
-
public PanEffect(float pan, PanRule panRule)- Constructs PanEffect instance.
- Parameters:
-
pan: Pan. -
panRule: Pan rule (pan law).
-
-
public override void Process(ref float left, ref float right)- Processes one sample per channel: [in L, in R] -> [out L, out R].
- Parameters:
-
left: left-channel Input sample. -
right: right-channel Input sample.
-
-
public override void Reset()- Resets the effect.
The following example uses PanEffect with comments:
using System;
using Vorcyc.Mathematics.SignalProcessing.Effects.Stereo;
public class PanEffectExample
{
public static void Main()
{
// Create PanEffect instance
var panEffect = new PanEffect(0.5f, PanRule.ConstantPower);
// Set pan
panEffect.Pan = -0.3f;
// Process sample
float leftSample = 0.5f;
float rightSample = 0.6f;
panEffect.Process(ref leftSample, ref rightSample);
// Output processed sample
Console.WriteLine($"Processed Left Sample: {leftSample}");
Console.WriteLine($"Processed Right Sample: {rightSample}");
}
}Vorcyc.Mathematics.SignalProcessing.Effects.Stereo.PingPongDelayEffect is a stereo ping-pong delay effect.
-
public float Pan { get; set; }- Gets or setsPan.
-
public float Delay { get; set; }- Gets or setsDelay time (seconds).
-
public float Feedback { get; set; }- Gets or setsFeedback coefficient.
-
public PingPongDelayEffect(int samplingRate, float pan, float delay, float feedback = 0.5f, InterpolationMode interpolationMode = InterpolationMode.Nearest, float reserveDelay = 0)- Constructs PingPongDelayEffect instance.
- Parameters:
-
samplingRate: Sampling rate. -
pan: Pan. -
delay: Delay time (seconds). -
feedback: Feedback coefficient; default 0.5. -
interpolationMode: Fractional delay interpolation; defaultInterpolationMode.Nearest. -
reserveDelay: Maximum reserved delay; default 0 s.
-
-
public override void Process(ref float left, ref float right)- Processes one sample per channel: [in L, in R] -> [out L, out R].
- Parameters:
-
left: left-channel Input sample. -
right: right-channel Input sample.
-
-
public override void Reset()- Resets the effect.
The following example uses PingPongDelayEffect with comments:
using System;
using Vorcyc.Mathematics.SignalProcessing.Effects.Stereo;
public class PingPongDelayEffectExample
{
public static void Main()
{
// Create PingPongDelayEffect instance
var pingPongDelayEffect = new PingPongDelayEffect(44100, 0.5f, 0.3f, 0.6f);
// Set pan and delay
pingPongDelayEffect.Pan = 0.8f;
pingPongDelayEffect.Delay = 0.4f;
pingPongDelayEffect.Feedback = 0.7f;
// Process sample
float leftSample = 0.5f;
float rightSample = 0.6f;
pingPongDelayEffect.Process(ref leftSample, ref rightSample);
// Output processed sample
Console.WriteLine($"Processed Left Sample: {leftSample}");
Console.WriteLine($"Processed Right Sample: {rightSample}");
}
}Vorcyc.Mathematics.SignalProcessing.Effects.Stereo.StereoDelayEffect is a stereo delay effect.
-
public float DelayLeft { get; set; }- Gets or setsleft-channel Delay time (seconds).
-
public float DelayRight { get; set; }- Gets or setsright-channel Delay time (seconds).
-
public float FeedbackLeft { get; set; }- Gets or setsleft-channel Feedback coefficient.
-
public float FeedbackRight { get; set; }- Gets or setsright-channel Feedback coefficient.
-
public float Pan { get; set; }- Gets or setsPan.
-
public StereoDelayEffect(int samplingRate, float pan, float delayLeft, float delayRight, float feedbackLeft = 0.5f, float feedbackRight = 0.5f, InterpolationMode interpolationMode = InterpolationMode.Nearest, float reserveDelay = 0)- Constructs StereoDelayEffect instance.
- Parameters:
-
samplingRate: Sampling rate. -
pan: Pan. -
delayLeft: left-channel Delay time (seconds). -
delayRight: right-channel Delay time (seconds). -
feedbackLeft: left-channel Feedback coefficient; default 0.5. -
feedbackRight: right-channel Feedback coefficient; default 0.5. -
interpolationMode: Fractional delay interpolation; defaultInterpolationMode.Nearest. -
reserveDelay: Maximum reserved delay; default 0 s.
-
-
public override void Process(ref float left, ref float right)- Processes one sample per channel: [in L, in R] -> [out L, out R].
- Parameters:
-
left: left-channel Input sample. -
right: right-channel Input sample.
-
-
public override void Reset()- Resets the effect.
The following example uses StereoDelayEffect with comments:
using System;
using Vorcyc.Mathematics.SignalProcessing.Effects.Stereo;
public class StereoDelayEffectExample
{
public static void Main()
{
// Create StereoDelayEffect instance
var stereoDelayEffect = new StereoDelayEffect(44100, 0.5f, 0.3f, 0.4f, 0.6f, 0.7f);
// Set pan and delay
stereoDelayEffect.Pan = 0.8f;
stereoDelayEffect.DelayLeft = 0.4f;
stereoDelayEffect.DelayRight = 0.5f;
stereoDelayEffect.FeedbackLeft = 0.7f;
stereoDelayEffect.FeedbackRight = 0.8f;
// Process sample
float leftSample = 0.5f;
float rightSample = 0.6f;
stereoDelayEffect.Process(ref leftSample, ref rightSample);
// Output processed sample
Console.WriteLine($"Processed Left Sample: {leftSample}");
Console.WriteLine($"Processed Right Sample: {rightSample}");
}
}Vorcyc.Mathematics.SignalProcessing.Effects.Stereo.StereoEffect is an abstract base class for stereo audio effects, inheriting WetDryMixer.
-
public abstract void Process(ref float left, ref float right)- Processes one sample per channel: [in L, in R] -> [out L, out R].
- Parameters:
-
left: left-channel Input sample. -
right: right-channel Input sample.
-
-
public virtual void Process(float sample, out float left, out float right)- Processes mono sample: input -> [out L, out R].
- Parameters:
-
sample: mono Input sample. -
left: left-channel output sample. -
right: right-channel output sample.
-
-
public virtual void Process(float[] inputLeft, float[] inputRight, float[] outputLeft, float[] outputRight, int count = 0, int inputPos = 0, int outputPos = 0)- Processes sample blocks per channel: [in L, in R] -> [out L, out R].
- Parameters:
-
inputLeft: Left-channel input block. -
inputRight: Right-channel input block. -
outputLeft: Left-channel output block. -
outputRight: Right-channel output block. -
count: Number of samples to process; default 0. -
inputPos: Input start index; default 0. -
outputPos: Output start index; default 0.
-
-
public virtual void Process(float[] input, float[] outputLeft, float[] outputRight, int count = 0, int inputPos = 0, int outputPos = 0)- Processes mono block: [input] -> [out L, out R].
- Parameters:
-
input: Mono input block. -
outputLeft: Left-channel output block. -
outputRight: Right-channel output block. -
count: Number of samples to process; default 0. -
inputPos: Input start index; default 0. -
outputPos: Output start index; default 0.
-
-
public virtual (Signal, Signal) ApplyTo(Signal signal)- Apply effect to entire signal,and returns output signal tuple [left signal,right signal]。
- Parameters:
-
signal: input signal.
-
-
public virtual (Signal, Signal) ApplyTo(Signal leftSignal, Signal rightSignal)- Applies effect to left/right signals; returns tuple [left, right] outputs.
- Parameters:
-
leftSignal: left-channel input signal. -
rightSignal: right-channel input signal.
-
-
public abstract void Reset()- Resets the effect.
The following example uses StereoEffect with comments:
using System;
using Vorcyc.Mathematics.SignalProcessing.Effects.Stereo;
public class CustomStereoEffect : StereoEffect
{
public override void Process(ref float left, ref float right)
{
// Custom processing logic
left *= 0.5f;
right *= 0.5f;
}
public override void Reset()
{
// Custom reset logic
}
}
public class StereoEffectExample
{
public static void Main()
{
// Create CustomStereoEffect instance
var stereoEffect = new CustomStereoEffect();
// Process sample
float leftSample = 0.5f;
float rightSample = 0.6f;
stereoEffect.Process(ref leftSample, ref rightSample);
// Output processed sample
Console.WriteLine($"Processed Left Sample: {leftSample}");
Console.WriteLine($"Processed Right Sample: {rightSample}");
}
}Vorcyc.Mathematics.SignalProcessing.Effects.AutowahEffect is an autowah effect combining envelope follower and wah.
-
public float Q { get; set; }- Gets or sets Q factor (quality factor / resonance).
-
public float MinFrequency { get; set; }- Gets or setsMinimum LFO frequency (Hz).
-
public float MaxFrequency { get; set; }- Gets or setsMaximum LFO frequency (Hz).
-
public float AttackTime { get; set; }- Gets or setsAttack time (seconds).
-
public float ReleaseTime { get; set; }- Gets or setsRelease time (seconds).
-
public AutowahEffect(int samplingRate, float minFrequency = 30, float maxFrequency = 2000, float q = 0.5f, float attackTime = 0.01f, float releaseTime = 0.05f)- Constructs AutowahEffect instance.
- Parameters:
-
samplingRate: Sampling rate. -
minFrequency: Minimum LFO frequency (Hz); default 30 Hz. -
maxFrequency: Maximum LFO frequency (Hz); default 2000 Hz. -
q: Q factor; default 0.5. -
attackTime: Attack time (seconds); default 0.01 s. -
releaseTime: Release time (seconds); default 0.05 s.
-
-
public override float Process(float sample)- Processes one sample.
- Parameters:
-
sample: Input sample.
-
- Returns: processed sample.
-
public override void Reset()- Resets the effect.
The following example uses AutowahEffect with comments:
using System;
using Vorcyc.Mathematics.SignalProcessing.Effects;
using Vorcyc.Mathematics.SignalProcessing.Signals;
public class AutowahEffectExample
{
public static void Main()
{
// Create AutowahEffect instance
var autowahEffect = new AutowahEffect(44100, 30, 2000, 0.5f, 0.01f, 0.05f);
// Define input signal
float[] samples = { 0.5f, 0.6f, 0.55f, 0.7f, 0.65f };
var signal = Signal.FromCopy(samples, 44100);
// Process sample
foreach (var sample in signal.Samples)
{
var processedSample = autowahEffect.Process(sample);
Console.WriteLine($"Processed Sample: {processedSample}");
}
}
}Vorcyc.Mathematics.SignalProcessing.Effects.BitCrusherEffect is a bit-crusher distortion effect, inheriting AudioEffect.
-
public int BitDepth { get; set; }- Gets or setsBit depth (bits).
-
public BitCrusherEffect(int bitDepth)- Constructs BitCrusherEffect instance.
- Parameters:
-
bitDepth: Bit depth (bits).
-
-
public override float Process(float sample)- Processes one sample.
- Parameters:
-
sample: Input sample.
-
- Returns: processed sample.
-
public override void Reset()- Resets the effect.
The following example uses BitCrusherEffect with comments:
using System;
using Vorcyc.Mathematics.SignalProcessing.Effects;
public class BitCrusherEffectExample
{
public static void Main()
{
// Create BitCrusherEffect instance
var bitCrusherEffect = new BitCrusherEffect(8);
// Set bit depth
bitCrusherEffect.BitDepth = 6;
// Process sample
float sample = 0.5f;
float processedSample = bitCrusherEffect.Process(sample);
// Output processed sample
Console.WriteLine($"Processed Sample: {processedSample}");
}
}Vorcyc.Mathematics.SignalProcessing.Effects.ChorusEffect is a chorus effect, inheriting AudioEffect.
-
public float[] Widths { get; set; }- Gets or setsWidth per voice (max delay, seconds).
-
public float[] LfoFrequencies { get; set; }- Gets or sets LFO frequency per voice.
-
public ChorusEffect(int samplingRate, float[] lfoFrequencies, float[] widths)- Constructs ChorusEffect instance.
- Parameters:
-
samplingRate: Sampling rate. -
lfoFrequencies: LFO frequency per voice. -
widths: Width per voice (max delay, seconds).
-
-
public ChorusEffect(int samplingRate, ISampleGenerator[] lfos, float[] widths)- Constructs ChorusEffect from LFO.
- Parameters:
-
samplingRate: Sampling rate. -
lfos: LFOs as sample generators. -
widths: Width per voice (max delay, seconds).
-
-
public override float Process(float sample)- Processes one sample.
- Parameters:
-
sample: Input sample.
-
- Returns: processed sample.
-
public override void Reset()- Resets the effect.
The following example uses ChorusEffect with comments:
using System;
using Vorcyc.Mathematics.SignalProcessing.Effects;
public class ChorusEffectExample
{
public static void Main()
{
// Create ChorusEffect instance
float[] lfoFrequencies = { 0.25f, 0.3f, 0.35f };
float[] widths = { 0.002f, 0.003f, 0.004f };
var chorusEffect = new ChorusEffect(44100, lfoFrequencies, widths);
// Process sample
float sample = 0.5f;
float processedSample = chorusEffect.Process(sample);
// Output processed sample
Console.WriteLine($"Processed Sample: {processedSample}");
}
}Vorcyc.Mathematics.SignalProcessing.Effects.DelayEffect is a delay effect, inheriting AudioEffect.
-
public float Delay { get; set; }- Gets or setsDelay time (seconds).
-
public float Feedback { get; set; }- Gets or setsFeedback parameter.
-
public DelayEffect(int samplingRate, float delay, float feedback = 0.5f, InterpolationMode interpolationMode = InterpolationMode.Nearest, float reserveDelay = 0f)- Constructs DelayEffect instance.
- Parameters:
-
samplingRate: Sampling rate. -
delay: Delay time (seconds). -
feedback: Feedback; default 0.5. -
interpolationMode: Fractional delay interpolation; defaultInterpolationMode.Nearest. -
reserveDelay: Maximum reserved delay; default 0 s.
-
-
public override float Process(float sample)- Processes one sample.
- Parameters:
-
sample: Input sample.
-
- Returns: processed sample.
-
public override void Reset()- Resets the effect.
The following example uses DelayEffect with comments:
using System;
using Vorcyc.Mathematics.SignalProcessing.Effects;
public class DelayEffectExample
{
public static void Main()
{
// Create DelayEffect instance
var delayEffect = new DelayEffect(44100, 0.5f, 0.6f);
// Set delay and feedback
delayEffect.Delay = 0.4f;
delayEffect.Feedback = 0.7f;
// Process sample
float sample = 0.5f;
float processedSample = delayEffect.Process(sample);
// Output processed sample
Console.WriteLine($"Processed Sample: {processedSample}");
}
}Vorcyc.Mathematics.SignalProcessing.Effects.DistortionEffect is a distortion effect, inheriting AudioEffect.
-
public DistortionMode Mode { get; set; }- Gets or setsDistortion mode (soft/hard clipping, exponential, full/half-wave rectification).
-
public float InputGain { get; set; }- Gets or setsInput gain (dB).
-
public float OutputGain { get; set; }- Gets or setsOutput gain (dB).
-
public DistortionEffect(DistortionMode mode, float inputGain = 12f, float outputGain = -12f)- Constructs DistortionEffect instance.
- Parameters:
-
mode: Distortion mode. -
inputGain: Input gain (dB); default 12 dB. -
outputGain: Output gain (dB); default -12 dB.
-
-
public override float Process(float sample)- Processes one sample.
- Parameters:
-
sample: Input sample.
-
- Returns: processed sample.
-
public override void Reset()- Resets the effect.
The following example uses DistortionEffect with comments:
using System;
using Vorcyc.Mathematics.SignalProcessing.Effects;
public class DistortionEffectExample
{
public static void Main()
{
// Create DistortionEffect instance
var distortionEffect = new DistortionEffect(DistortionMode.HardClipping, 12f, -12f);
// Set distortion mode and gain
distortionEffect.Mode = DistortionMode.SoftClipping;
distortionEffect.InputGain = 10f;
distortionEffect.OutputGain = -10f;
// Process sample
float sample = 0.5f;
float processedSample = distortionEffect.Process(sample);
// Output processed sample
Console.WriteLine($"Processed Sample: {processedSample}");
}
}Vorcyc.Mathematics.SignalProcessing.Effects.EchoEffect is an echo effect, inheriting AudioEffect.
-
public float Delay { get; set; }- Gets or setsDelay time (seconds).
-
public float Feedback { get; set; }- Gets or setsFeedback parameter.
-
public EchoEffect(int samplingRate, float delay, float feedback = 0.5f, InterpolationMode interpolationMode = InterpolationMode.Nearest, float reserveDelay = 0f)- Constructs EchoEffect instance.
- Parameters:
-
samplingRate: Sampling rate. -
delay: Delay time (seconds). -
feedback: Feedback; default 0.5. -
interpolationMode: Fractional delay interpolation; defaultInterpolationMode.Nearest. -
reserveDelay: Maximum reserved delay; default 0 s.
-
-
public override float Process(float sample)- Processes one sample.
- Parameters:
-
sample: Input sample.
-
- Returns: processed sample.
-
public override void Reset()- Resets the effect.
The following example uses EchoEffect with comments:
using System;
using Vorcyc.Mathematics.SignalProcessing.Effects;
public class EchoEffectExample
{
public static void Main()
{
// Create EchoEffect instance
var echoEffect = new EchoEffect(44100, 0.5f, 0.6f);
// Set delay and feedback
echoEffect.Delay = 0.4f;
echoEffect.Feedback = 0.7f;
// Process sample
float sample = 0.5f;
float processedSample = echoEffect.Process(sample);
// Output processed sample
Console.WriteLine($"Processed Sample: {processedSample}");
}
}Vorcyc.Mathematics.SignalProcessing.Effects.FlangerEffect is a flanger effect, inheriting AudioEffect.
-
public float Width { get; set; }- Gets or setsWidth (seconds).
-
public float LfoFrequency { get; set; }- Gets or sets LFO frequency (Hz).
-
public ISampleGenerator Lfo { get; set; }- Gets or sets LFO sample generator.
-
public float Depth { get; set; }- Gets or setsDepth.
-
public float Feedback { get; set; }- Gets or setsFeedback parameter.
-
public bool Inverted { get; set; }- Gets or setsInverted mode flag.
-
public InterpolationMode InterpolationMode { get; set; }- Gets or setsInterpolation mode.
-
public FlangerEffect(int samplingRate, float lfoFrequency = 1f, float width = 0.003f, float depth = 0.5f, float feedback = 0, bool inverted = false, InterpolationMode interpolationMode = InterpolationMode.Linear, float reserveWidth = 0f)- Constructs FlangerEffect instance.
- Parameters:
-
samplingRate: Sampling rate. -
lfoFrequency: LFO frequency (Hz); default 1 Hz. -
width: Width (seconds); default 0.003 s. -
depth: Depth; default 0.5. -
feedback: Feedback; default 0. -
inverted: Inverted mode; default false. -
interpolationMode: Fractional delay line interpolation; defaultInterpolationMode.Linear. -
reserveWidth: Maximum reserved width; default 0 s.
-
-
public FlangerEffect(int samplingRate, ISampleGenerator lfo, float width = 0.003f, float depth = 0.5f, float feedback = 0, bool inverted = false, InterpolationMode interpolationMode = InterpolationMode.Linear, float reserveWidth = 0f)- Constructs FlangerEffect from LFO.
- Parameters:
-
samplingRate: Sampling rate. -
lfo: LFO sample generator. -
width: Width (seconds); default 0.003 s. -
depth: Depth; default 0.5. -
feedback: Feedback; default 0. -
inverted: Inverted mode; default false. -
interpolationMode: Fractional delay line interpolation; defaultInterpolationMode.Linear. -
reserveWidth: Maximum reserved width; default 0 s.
-
-
public override float Process(float sample)- Processes one sample.
- Parameters:
-
sample: Input sample.
-
- Returns: processed sample.
-
public override void Reset()- Resets the effect.
The following example uses FlangerEffect with comments:
using System;
using Vorcyc.Mathematics.SignalProcessing.Effects;
public class FlangerEffectExample
{
public static void Main()
{
// Create FlangerEffect instance
var flangerEffect = new FlangerEffect(44100, 0.25f, 0.003f, 0.5f, 0.6f, false);
// Set parameters
flangerEffect.Width = 0.004f;
flangerEffect.LfoFrequency = 0.5f;
flangerEffect.Depth = 0.7f;
flangerEffect.Feedback = 0.8f;
flangerEffect.Inverted = true;
// Process sample
float sample = 0.5f;
float processedSample = flangerEffect.Process(sample);
// Output processed sample
Console.WriteLine($"Processed Sample: {processedSample}");
}
}Vorcyc.Mathematics.SignalProcessing.Effects.MorphEffect is a morph effect mixing two signals, inheriting AudioEffect.
No public properties.
-
public MorphEffect(int hopSize, int fftSize = 0)- Constructs MorphEffect instance.
- Parameters:
-
hopSize: Hop size (samples). -
fftSize: FFT size; default 0.
-
-
public float Process(float sample, float mix)- Processes one input sample and one mix sample.
- Parameters:
-
sample: input signalSample. -
mix: Mix signal sample.
-
- Returns: processed sample.
-
protected void ProcessFrame()- Processes one frame (block).
-
public override void Reset()- Resets the effect.
-
public Signal ApplyTo(Signal signal, Signal mix)- Applies effect to entire input and mix signals.
- Parameters:
-
signal: input signal. -
mix: Signal to mix with input.
-
- Returns: Processed
Signal.
-
public override float Process(float sample)- Processes one sample. Not implemented in MorphEffect.
- Parameters:
-
sample: Input sample.
-
- Returns: processed sample.
The following example uses MorphEffect with comments:
using System;
using Vorcyc.Mathematics.SignalProcessing.Effects;
using Vorcyc.Mathematics.SignalProcessing;
using Vorcyc.Mathematics.SignalProcessing.Signals;
public class MorphEffectExample
{
public static void Main()
{
// Create MorphEffect instance
var morphEffect = new MorphEffect(256, 1024);
// Define input and mix signals
float[] inputSamples = { 0.5f, 0.6f, 0.55f, 0.7f, 0.65f };
float[] mixSamples = { 0.4f, 0.5f, 0.45f, 0.6f, 0.55f };
var inputSignal = Signal.FromCopy(inputSamples, 44100);
var mixSignal = Signal.FromCopy(mixSamples, 44100);
// Apply effect to entire signal
var processedSignal = morphEffect.ApplyTo(inputSignal, mixSignal);
// Output processed signal samples
Console.WriteLine("Processed Signal:");
foreach (var sample in processedSignal.Samples)
{
Console.WriteLine(sample);
}
}
}Vorcyc.Mathematics.SignalProcessing.Effects.PhaserEffect is a phaser effect, inheriting AudioEffect.
-
public float Q { get; set; }- Gets or sets Q factor (quality factor / resonance).
-
public float LfoFrequency { get; set; }- Gets or sets LFO frequency (Hz).
-
public float MinFrequency { get; set; }- Gets or setsMinimum LFO frequency (Hz).
-
public float MaxFrequency { get; set; }- Gets or setsMaximum LFO frequency (Hz).
-
public ISampleGenerator Lfo { get; set; }- Gets or sets LFO sample generator.
-
public PhaserEffect(int samplingRate, float lfoFrequency = 1.0f, float minFrequency = 300, float maxFrequency = 3000, float q = 0.5f)- Constructs PhaserEffect instance.
- Parameters:
-
samplingRate: Sampling rate. -
lfoFrequency: LFO frequency (Hz); default 1.0 Hz. -
minFrequency: Minimum LFO frequency (Hz); default 300 Hz. -
maxFrequency: Maximum LFO frequency (Hz); default 3000 Hz. -
q: Q factor; default 0.5.
-
-
public PhaserEffect(int samplingRate, ISampleGenerator lfo, float q = 0.5f)- Constructs PhaserEffect from LFO.
- Parameters:
-
samplingRate: Sampling rate. -
lfo: LFO sample generator. -
q: Q factor; default 0.5.
-
-
public override float Process(float sample)- Processes one sample.
- Parameters:
-
sample: Input sample.
-
- Returns: processed sample.
-
public override void Reset()- Resets the effect.
The following example uses PhaserEffect with comments:
using System;
using Vorcyc.Mathematics.SignalProcessing.Effects;
public class PhaserEffectExample
{
public static void Main()
{
// Create PhaserEffect instance
var phaserEffect = new PhaserEffect(44100, 0.5f, 300, 3000, 0.7f);
// Set parameters
phaserEffect.LfoFrequency = 0.8f;
phaserEffect.MinFrequency = 200;
phaserEffect.MaxFrequency = 4000;
phaserEffect.Q = 0.6f;
// Process sample
float sample = 0.5f;
float processedSample = phaserEffect.Process(sample);
// Output processed sample
Console.WriteLine($"Processed Sample: {processedSample}");
}
}Vorcyc.Mathematics.SignalProcessing.Effects.PitchShiftEffect is an offline pitch-shift effect using TSM algorithms and linear interpolation. Does not support online Process(float).
-
public float Shift { get; set; }- Gets or setsPitch shift ratio.
-
public TsmAlgorithm Tsm { get; set; }- Gets or setsTime-scale modification algorithm.
-
public int WindowSize { get; set; }- Gets or setsWindow size (frame length).
-
public int HopSize { get; set; }- Gets or setsHop size.
-
public PitchShiftEffect(float shift, int windowSize = 1024, int hopSize = 128, TsmAlgorithm tsm = TsmAlgorithm.PhaseVocoderPhaseLocking)- Constructs PitchShiftEffect instance.
- Parameters:
-
shift: Pitch shift ratio. -
windowSize: Window size; default 1024. -
hopSize: Hop size; default 128. -
tsm: TSM algorithm; defaultTsmAlgorithm.PhaseVocoderPhaseLocking.
-
-
public override Signal ApplyTo(Signal signal, FilteringMethod method = FilteringMethod.Auto)- Applies effect to entire signal; returns pitch-shifted signal.
- Parameters:
-
signal: input signal. -
method: Filtering method; defaultFilteringMethod.Auto.
-
- Returns: Processed
Signal.
-
public override void Apply(Signal signal, FilteringMethod method = FilteringMethod.Auto)- Applies effect to entire signal (in-place).
- Parameters:
-
signal: input signal. -
method: Filtering method; defaultFilteringMethod.Auto.
-
-
public override float Process(float sample)- Processes one sample. Not implemented in PitchShiftEffect.
- Parameters:
-
sample: Input sample.
-
- Returns: processed sample.
-
public override void Reset()- Resets the effect.
The following example uses PitchShiftEffect with comments:
using System;
using Vorcyc.Mathematics.SignalProcessing;
using Vorcyc.Mathematics.SignalProcessing.Effects;
using Vorcyc.Mathematics.SignalProcessing.Signals;
public class PitchShiftEffectExample
{
public static void Main()
{
// Create PitchShiftEffect instance
var pitchShiftEffect = new PitchShiftEffect(1.2f, 1024, 128, TsmAlgorithm.PhaseVocoderPhaseLocking);
// Define input signal
float[] samples = { 0.5f, 0.6f, 0.55f, 0.7f, 0.65f };
var signal = Signal.FromCopy(samples, 44100);
// Apply effect to entire signal
var processedSignal = pitchShiftEffect.ApplyTo(signal);
// Output processed signal samples
Console.WriteLine("Processed Signal:");
foreach (var sample in processedSignal.Samples)
{
Console.WriteLine(sample);
}
}
}Vorcyc.Mathematics.SignalProcessing.Effects.PitchShiftVocoderEffect is a pitch-shift vocoder effect via overlap-add, inheriting OverlapAddFilter.
-
public float Shift { get; set; }- Gets or setsPitch shift ratio.
-
public PitchShiftVocoderEffect(int samplingRate, float shift, int fftSize = 1024, int hopSize = 64)- Constructs PitchShiftVocoderEffect instance.
- Parameters:
-
samplingRate: Sampling rate. -
shift: Pitch shift ratio. -
fftSize: FFT size; default 1024. -
hopSize: Hop size; default 64.
-
-
protected override void ProcessSpectrum(float[] re, float[] im, float[] filteredRe, float[] filteredIm)- Processes one spectrum per overlap-add STFT step.
- Parameters:
-
re: Real part of input spectrum. -
im: Imaginary part of input spectrum. -
filteredRe: Real part of output spectrum. -
filteredIm: Imaginary part of output spectrum.
-
-
public override void Reset()- Resets the effect.
The following example uses PitchShiftVocoderEffect with comments:
using System;
using Vorcyc.Mathematics.SignalProcessing;
using Vorcyc.Mathematics.SignalProcessing.Effects;
using Vorcyc.Mathematics.SignalProcessing.Signals;
public class PitchShiftVocoderEffectExample
{
public static void Main()
{
// Create PitchShiftVocoderEffect instance
var pitchShiftVocoderEffect = new PitchShiftVocoderEffect(44100, 1.2f, 1024, 64);
// Define input signal
float[] samples = { 0.5f, 0.6f, 0.55f, 0.7f, 0.65f };
var signal = Signal.FromCopy(samples, 44100);
// Apply effect to entire signal
var processedSignal = pitchShiftVocoderEffect.ApplyTo(signal);
// Output processed signal samples
Console.WriteLine("Processed Signal:");
foreach (var sample in processedSignal.Samples)
{
Console.WriteLine(sample);
}
}
}Vorcyc.Mathematics.SignalProcessing.Effects.RobotEffect is a robot voice effect, inheriting OverlapAddFilter.
-
public RobotEffect(int hopSize, int fftSize = 0)- Constructs RobotEffect instance.
- Parameters:
-
hopSize: Hop size (samples). -
fftSize: FFT size; default 0.
-
-
protected override void ProcessSpectrum(float[] re, float[] im, float[] filteredRe, float[] filteredIm)- Processes spectrum per overlap-add STFT step (sets phase to 0).
- Parameters:
-
re: Real part of input spectrum. -
im: Imaginary part of input spectrum. -
filteredRe: Real part of output spectrum. -
filteredIm: Imaginary part of output spectrum.
-
The following example uses RobotEffect with comments:
using System;
using Vorcyc.Mathematics.SignalProcessing;
using Vorcyc.Mathematics.SignalProcessing.Effects;
using Vorcyc.Mathematics.SignalProcessing.Signals;
public class RobotEffectExample
{
public static void Main()
{
// Create RobotEffect instance
var robotEffect = new RobotEffect(256, 1024);
// Define input signal
float[] samples = { 0.5f, 0.6f, 0.55f, 0.7f, 0.65f };
var signal = Signal.FromCopy(samples, 44100);
// Apply effect to entire signal
var processedSignal = robotEffect.ApplyTo(signal);
// Output processed signal samples
Console.WriteLine("Processed Signal:");
foreach (var sample in processedSignal.Samples)
{
Console.WriteLine(sample);
}
}
}Vorcyc.Mathematics.SignalProcessing.Effects.TremoloEffect is a tremolo effect, inheriting AudioEffect.
-
public float Depth { get; set; }- Gets or setsDepth.
-
public float Frequency { get; set; }- Gets or setsTremolo frequency (modulation rate) (Hz).
-
public float Index { get; set; }- Gets or setsTremolo index (modulation index).
-
public ISampleGenerator Lfo { get; set; }- Gets or sets LFO sample generator.
-
public TremoloEffect(int samplingRate, float depth = 0.5f, float frequency = 10f, float tremoloIndex = 0.5f)- Constructs TremoloEffect instance.
- Parameters:
-
samplingRate: Sampling rate. -
depth: Depth; default 0.5. -
frequency: Tremolo frequency (Hz); default 10 Hz. -
tremoloIndex: Tremolo index; default 0.5.
-
-
public TremoloEffect(ISampleGenerator lfo, float depth = 0.5f)- Constructs TremoloEffect from LFO.
- Parameters:
-
lfo: LFO sample generator. -
depth: Depth; default 0.5.
-
-
public override float Process(float sample)- Processes one sample.
- Parameters:
-
sample: Input sample.
-
- Returns: processed sample.
-
public override void Reset()- Resets the effect.
The following example uses TremoloEffect with comments:
using System;
using Vorcyc.Mathematics.SignalProcessing;
using Vorcyc.Mathematics.SignalProcessing.Effects;
using Vorcyc.Mathematics.SignalProcessing.Signals;
public class TremoloEffectExample
{
public static void Main()
{
// Create TremoloEffect instance
var tremoloEffect = new TremoloEffect(44100, 0.5f, 10f, 0.5f);
// Define input signal
float[] samples = { 0.5f, 0.6f, 0.55f, 0.7f, 0.65f };
var signal = Signal.FromCopy(samples, 44100);
// Process sample
foreach (var sample in signal.Samples)
{
var processedSample = tremoloEffect.Process(sample);
Console.WriteLine($"Processed Sample: {processedSample}");
}
}
}Vorcyc.Mathematics.SignalProcessing.Effects.TubeDistortionEffect is a tube distortion effect, inheriting AudioEffect.
-
public float InputGain { get; set; }- Gets or setsInput gain (dB).
-
public float OutputGain { get; set; }- Gets or setsOutput gain (dB).
-
public float Q { get; set; }- Gets or sets Q factor (operating point). Controls linearity at low input levels; more negative is more linear.
-
public float Dist { get; set; }- Gets or setsDistortion character; higher values yield harder distortion.
-
public float Rh { get; }- Gets Filter coefficient (near 1.0) for highpass pole position (DC removal).
-
public float Rl { get; }- Gets Filter coefficient [0,1] for lowpass pole (tube amp capacitance model).
-
public TubeDistortionEffect(float inputGain = 20f, float outputGain = -12f, float q = -0.2f, float dist = 5, float rh = 0.995f, float rl = 0.5f)- Constructs TubeDistortionEffect instance.
- Parameters:
-
inputGain: Input gain (dB); default 20 dB. -
outputGain: Output gain (dB); default -12 dB. -
q: Q factor; default -0.2. -
dist: Distortion character; default 5. -
rh: Highpass coefficient; default 0.995. -
rl: Lowpass coefficient; default 0.5.
-
-
public override float Process(float sample)- Processes one sample.
- Parameters:
-
sample: Input sample.
-
- Returns: processed sample.
-
public override void Reset()- Resets the effect.
The following example uses TubeDistortionEffect with comments:
using System;
using Vorcyc.Mathematics.SignalProcessing;
using Vorcyc.Mathematics.SignalProcessing.Effects;
using Vorcyc.Mathematics.SignalProcessing.Signals;
public class TubeDistortionEffectExample
{
public static void Main()
{
// Create TubeDistortionEffect instance
var tubeDistortionEffect = new TubeDistortionEffect(20f, -12f, -0.2f, 5, 0.995f, 0.5f);
// Define input signal
float[] samples = { 0.5f, 0.6f, 0.55f, 0.7f, 0.65f };
var signal = Signal.FromCopy(samples, 44100);
// Process sample
foreach (var sample in signal.Samples)
{
var processedSample = tubeDistortionEffect.Process(sample);
Console.WriteLine($"Processed Sample: {processedSample}");
}
}
}Vorcyc.Mathematics.SignalProcessing.Effects.VibratoEffect is a tremolo effect, inheriting AudioEffect.
-
public float Width { get; set; }- Gets or setsWidth (seconds).
-
public float LfoFrequency { get; set; }- Gets or sets LFO frequency (Hz).
-
public ISampleGenerator Lfo { get; set; }- Gets or sets LFO sample generator.
-
public InterpolationMode InterpolationMode { get; set; }- Gets or setsInterpolation mode.
-
public VibratoEffect(int samplingRate, float lfoFrequency = 1f, float width = 0.003f, InterpolationMode interpolationMode = InterpolationMode.Linear, float reserveWidth = 0f)- Constructs VibratoEffect instance.
- Parameters:
-
samplingRate: Sampling rate. -
lfoFrequency: LFO frequency (Hz); default 1 Hz. -
width: Width (seconds); default 0.003 s. -
interpolationMode: Interpolation mode; defaultInterpolationMode.Linear. -
reserveWidth: Maximum reserved width; default 0 s.
-
-
public VibratoEffect(int samplingRate, ISampleGenerator lfo, float width = 0.003f, InterpolationMode interpolationMode = InterpolationMode.Linear, float reserveWidth = 0f)- Constructs VibratoEffect from LFO.
- Parameters:
-
samplingRate: Sampling rate. -
lfo: LFO sample generator. -
width: Width (seconds); default 0.003 s. -
interpolationMode: Interpolation mode; defaultInterpolationMode.Linear. -
reserveWidth: Maximum reserved width; default 0 s.
-
-
public override float Process(float sample)- Processes one sample.
- Parameters:
-
sample: Input sample.
-
- Returns: processed sample.
-
public override void Reset()- Resets the effect.
The following example uses VibratoEffect with comments:
using System;
using Vorcyc.Mathematics.SignalProcessing;
using Vorcyc.Mathematics.SignalProcessing.Effects;
using Vorcyc.Mathematics.SignalProcessing.Signals;
public class VibratoEffectExample
{
public static void Main()
{
// Create VibratoEffect instance
var vibratoEffect = new VibratoEffect(44100, 1f, 0.003f, InterpolationMode.Linear, 0f);
// Define input signal
float[] samples = { 0.5f, 0.6f, 0.55f, 0.7f, 0.65f };
var signal = Signal.FromCopy(samples, 44100);
// Process sample
foreach (var sample in signal.Samples)
{
var processedSample = vibratoEffect.Process(sample);
Console.WriteLine($"Processed Sample: {processedSample}");
}
}
}Vorcyc.Mathematics.SignalProcessing.Effects.WahwahEffect is a wah-wah effect, inheriting AudioEffect.
-
public float LfoFrequency { get; set; }- Gets or sets LFO frequency (Hz).
-
public float MinFrequency { get; set; }- Gets or setsMinimum LFO frequency (Hz).
-
public float MaxFrequency { get; set; }- Gets or setsMaximum LFO frequency (Hz).
-
public float Q { get; set; }- Gets or sets Q factor (quality factor / resonance).
-
public ISampleGenerator Lfo { get; set; }- Gets or sets LFO sample generator.
-
public WahwahEffect(int samplingRate, float lfoFrequency = 1.0f, float minFrequency = 300, float maxFrequency = 1500, float q = 0.5f)- Constructs WahwahEffect instance.
- Parameters:
-
samplingRate: Sampling rate. -
lfoFrequency: LFO frequency (Hz); default 1.0 Hz. -
minFrequency: Minimum LFO frequency (Hz); default 300 Hz. -
maxFrequency: Maximum LFO frequency (Hz); default 1500 Hz. -
q: Q factor; default 0.5.
-
-
public WahwahEffect(int samplingRate, ISampleGenerator lfo, float q = 0.5f)- Constructs WahwahEffect from LFO.
- Parameters:
-
samplingRate: Sampling rate. -
lfo: LFO sample generator. -
q: Q factor; default 0.5.
-
-
public override float Process(float sample)- Processes one sample.
- Parameters:
-
sample: Input sample.
-
- Returns: processed sample.
-
public override void Reset()- Resets the effect.
The following example uses WahwahEffect with comments:
using System;
using Vorcyc.Mathematics.SignalProcessing;
using Vorcyc.Mathematics.SignalProcessing.Effects;
using Vorcyc.Mathematics.SignalProcessing.Signals;
public class WahwahEffectExample
{
public static void Main()
{
// Create WahwahEffect instance
var wahwahEffect = new WahwahEffect(44100, 1.0f, 300, 1500, 0.5f);
// Define input signal
float[] samples = { 0.5f, 0.6f, 0.55f, 0.7f, 0.65f };
var signal = Signal.FromCopy(samples, 44100);
// Process sample
foreach (var sample in signal.Samples)
{
var processedSample = wahwahEffect.Process(sample);
Console.WriteLine($"Processed Sample: {processedSample}");
}
}
}Vorcyc.Mathematics.SignalProcessing.Effects.WhisperEffect is a whisper voice effect, inheriting OverlapAddFilter.
-
public WhisperEffect(int hopSize, int fftSize = 0)- Constructs WhisperEffect instance.
- Parameters:
-
hopSize: Hop size (samples). -
fftSize: FFT size; default 0.
-
-
protected override void ProcessSpectrum(float[] re, float[] im, float[] filteredRe, float[] filteredIm)- Processes one spectrum per overlap-add STFT step.
- Parameters:
-
re: Real part of input spectrum. -
im: Imaginary part of input spectrum. -
filteredRe: Real part of output spectrum. -
filteredIm: Imaginary part of output spectrum.
-
The following example uses WhisperEffect with comments:
using System;
using Vorcyc.Mathematics.SignalProcessing;
using Vorcyc.Mathematics.SignalProcessing.Effects;
using Vorcyc.Mathematics.SignalProcessing.Signals;
public class WhisperEffectExample
{
public static void Main()
{
// Create WhisperEffect instance
var whisperEffect = new WhisperEffect(256, 1024);
// Define input signal
float[] samples = { 0.5f, 0.6f, 0.55f, 0.7f, 0.65f };
var signal = Signal.FromCopy(samples, 44100);
// Apply effect to entire signal
var processedSignal = whisperEffect.ApplyTo(signal);
// Output processed signal samples
Console.WriteLine("Processed Signal:");
foreach (var sample in processedSignal.Samples)
{
Console.WriteLine(sample);
}
}
}-
- 🔖 ArrayExtension class
- 🔖 BaseConverter class
- 🔖 BitMathExtension class
- 🔖 Combinatorics class
- 🔖 ConstantsFp32 class
- 🔖 NumberMapper class
- 🔖 PinnableArray<T> class
- 🔖 SimpleRNG_Fp32 and SimpleRNG_Fp64 classes
- 🔖 TrigonometryHelper class
- 🔖 VMath class
- 🔖 Pinned buffers (Buffers)
- 🔖 IPinnedBuffer<T> interface
- 🔖 POHBuffer<T> class
- 🔖 NativeBuffer<T> class
-
- 🔖 0.9 classifier walkthrough
- 🔖 KNN<T> class
- 🔖 MultipleLinearRegression<T> class
- 🔖 SimpleLinearRegression<T> class
- 🔖 SupportVectorMachine<TSelf> class
- 🔖 DBSCAN<T> class
- 🔖 ExpectationMaximization<T> class
- 🔖 GMM<T> class
- 🔖 HierarchicalClustering<T> class
- 🔖 KMeansClusterer<T> class
- 🔖 VectorQuantization<T> class
- 🔖 FactorAnalysis<T> class
- 🔖 PCA<TSelf> class
- 🔖 TSNE<T> class
- 🔖 Distance metric classes
-
📒 Examples
-
📒 GPU 策略说明
- 🔖 为何放弃主包 GPU
- 🔖 当前性能路径
- 🔖 若仍需要更强算力
-
📒 计算上下文模块
-
📒 核心模块
-
📒 深度学习模块
-
📒 线性代数模块
-
📒 机器学习模块
- 🔖 0.9 分类器完整示例
- 🔖 KNN<T> 类
- 🔖 MultipleLinearRegression<T> 类
- 🔖 SimpleLinearRegression<T> 类
- 🔖 SupportVectorMachine<TSelf> 类
- 🔖 DBSCAN<T> 类
- 🔖 ExpectationMaximization<T> 类
- 🔖 GMM<T> 类
- 🔖 HierarchicalClustering<T> 类
- 🔖 KMeansClusterer<T> 类
- 🔖 VectorQuantization<T> 类
- 🔖 FactorAnalysis<T> 类
- 🔖 PCA<TSelf> 类
- 🔖 TSNE<T> 类
- 🔖 距离度量类
-
📒 信号处理模块
-
📒 数值模块
-
📒 统计模块
- 🔖 基础统计函数
- 🔖 高级统计函数
- 🔖 稳健统计 / RunningMoments
- 🔖 其它统计函数
- 🔖 分布相关函数
- 🔖 时间序列分析
- 🔖 IComparable 扩展
- 🔖 ExtremeValueFinder
- 🔖 INumber 扩展
-
📒 FFTW 扩展
-
📒 示例