Repository navigation
Module_SignalProcessing_Effects_zh
Vorcyc.Mathematics.SignalProcessing.Effects 命名空间包含多种音频效果类,包括基础类 AudioEffect 和 WetDryMixer,以及立体声效果类如 BinauralPanEffect、ItdIldPanEffect 和 StereoDelayEffect。其他效果类包括 AutowahEffect、BitCrusherEffect、ChorusEffect、DelayEffect、DistortionEffect、EchoEffect、FlangerEffect、MorphEffect、PhaserEffect、PitchShiftEffect、PitchShiftVocoderEffect、RobotEffect、TremoloEffect、TubeDistortionEffect、VibratoEffect、WahwahEffect 和 WhisperEffect。这些类提供了丰富的音频处理功能,从延迟、失真到合唱、移相和音高移位,适用于各种音频信号处理需求。
以下类型的根命名空间为 :Vorcyc.Mathematics.SignalProcessing.Effects
📒目录
- 🔖 Vorcyc.Mathematics.SignalProcessing.Effects.Base.AudioEffect 类
- 🔖 Vorcyc.Mathematics.SignalProcessing.Effects.Base.WetDryMixer 类
- 🔖 Vorcyc.Mathematics.SignalProcessing.Effects.Stereo.BinauralPanEffect 类
- 🔖 Vorcyc.Mathematics.SignalProcessing.Effects.Stereo.ItdIldPanEffect 类
- 🔖 Vorcyc.Mathematics.SignalProcessing.Effects.Stereo.PanEffect 类
- 🔖 Vorcyc.Mathematics.SignalProcessing.Effects.Stereo.PingPongDelayEffect 类
- 🔖 Vorcyc.Mathematics.SignalProcessing.Effects.Stereo.StereoDelayEffect 类
- 🔖 Vorcyc.Mathematics.SignalProcessing.Effects.Stereo.StereoEffect 类
- 🔖 Vorcyc.Mathematics.SignalProcessing.Effects.AutowahEffect 类
- 🔖 Vorcyc.Mathematics.SignalProcessing.Effects.BitCrusherEffect 类
- 🔖 Vorcyc.Mathematics.SignalProcessing.Effects.ChorusEffect 类
- 🔖 Vorcyc.Mathematics.SignalProcessing.Effects.DelayEffect 类
- 🔖 Vorcyc.Mathematics.SignalProcessing.Effects.DistortionEffect 类
- 🔖 Vorcyc.Mathematics.SignalProcessing.Effects.EchoEffect 类
- 🔖 Vorcyc.Mathematics.SignalProcessing.Effects.FlangerEffect 类
- 🔖 Vorcyc.Mathematics.SignalProcessing.Effects.MorphEffect 类
- 🔖 Vorcyc.Mathematics.SignalProcessing.Effects.PhaserEffect 类
- 🔖 Vorcyc.Mathematics.SignalProcessing.Effects.PitchShiftEffect 类
- 🔖 Vorcyc.Mathematics.SignalProcessing.Effects.PitchShiftVocoderEffect 类
- 🔖 Vorcyc.Mathematics.SignalProcessing.Effects.RobotEffect 类
- 🔖 Vorcyc.Mathematics.SignalProcessing.Effects.TremoloEffect 类
- 🔖 Vorcyc.Mathematics.SignalProcessing.Effects.TubeDistortionEffect 类
- 🔖 Vorcyc.Mathematics.SignalProcessing.Effects.VibratoEffect 类
- 🔖 Vorcyc.Mathematics.SignalProcessing.Effects.WahwahEffect 类
- 🔖 Vorcyc.Mathematics.SignalProcessing.Effects.WhisperEffect 类
以下类型均位于命名空间 :Vorcyc.Mathematics.SignalProcessing.Effects
Vorcyc.Mathematics.SignalProcessing.Effects.Base.AudioEffect 是一个用于音频效果的抽象类,继承了 WetDryMixer 类,并实现了 IFilter 和 IOnlineFilter 接口。
-
public abstract float Process(float sample)- 处理一个样本。
- 参数:
-
sample: 输入样本。
-
- 返回值: 处理后的样本。
-
public abstract void Reset()- 重置效果。
-
public virtual Signal ApplyTo(Signal signal, FilteringMethod method = FilteringMethod.Auto)- 将效果应用于整个信号,并返回处理后的新信号。
- 参数:
-
signal: 信号。 -
method: 过滤方法,默认为FilteringMethod.Auto。
-
- 返回值: 处理后的
Signal对象。
-
public virtual void Apply(Signal signal, FilteringMethod method = FilteringMethod.Auto)- 将效果应用于整个信号(就地处理)。
- 参数:
-
signal: 信号。 -
method: 过滤方法,默认为FilteringMethod.Auto。
-
以下是一个使用 AudioEffect 类中多个方法的示例,并在示例中加入了注释:
using System;
using Vorcyc.Mathematics.SignalProcessing.Effects.Base;
using Vorcyc.Mathematics.SignalProcessing.Signals;
public class CustomAudioEffect : AudioEffect
{
public override float Process(float sample)
{ // 自定义处理逻辑
return sample * 0.5f;
}
public override void Reset()
{
// 自定义重置逻辑
}
}
public class AudioEffectExample
{
public static void Main()
{
// 定义信号
float[] samples = { 0.5f, 0.6f, 0.55f, 0.7f, 0.65f };
var signal = Signal.FromCopy(samples, 1000);
// 创建自定义音频效果实例
var effect = new CustomAudioEffect();
// 将效果应用于整个信号
var processedSignal = effect.ApplyTo(signal);
// 输出处理后的信号样本
Console.WriteLine("Processed Signal:");
foreach (var sample in processedSignal.Samples)
{
Console.WriteLine(sample);
}
}
}Vorcyc.Mathematics.SignalProcessing.Effects.Base.WetDryMixer 是一个实现了湿/干混合逻辑的基类,实现了 IMixable 接口。
-
public float Wet { get; set; } = 1f- 获取或设置湿增益(默认值为 1)。
-
public float Dry { get; set; } = 0f- 获取或设置干增益(默认值为 0)。
-
public void WetDryMix(float mix, MixingRule mixingRule = MixingRule.Linear)- 设置湿/干混合(范围 [0..1])。
- 参数:
-
mix: 湿/干混合比例。 -
mixingRule: 混合规则,默认为MixingRule.Linear。
-
-
public void WetDryDb(float wetDb, float dryDb)- 设置湿/干增益(以分贝为单位)并应用线性混合规则。
- 参数:
-
wetDb: 湿增益(以分贝为单位)。 -
dryDb: 干增益(以分贝为单位)。
-
以下是一个使用 WetDryMixer 类中多个方法的示例,并在示例中加入了注释:
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()
{ // 定义信号
float[] samples = { 0.5f, 0.6f, 0.55f, 0.7f, 0.65f };
// 创建自定义湿/干混合器实例
var mixer = new CustomWetDryMixer();
// 设置湿/干混合比例
mixer.WetDryMix(0.7f, MixingRule.Sin3Db);
// 应用效果
mixer.ApplyEffect(samples);
// 输出处理后的信号样本
Console.WriteLine("Processed Signal:");
foreach (var sample in samples)
{
Console.WriteLine(sample);
}
}
}Vorcyc.Mathematics.SignalProcessing.Effects.Stereo.BinauralPanEffect 是一个用于双耳声像处理的音频效果类,支持 HRIR/BRIR 插值和可选的分频滤波器。
-
public float Azimuth { get; set; }- 获取或设置方位角(theta)。
-
public float Elevation { get; set; }- 获取或设置仰角(phi)。
-
public BinauralPanEffect(float[] azimuths, float[] elevations, float[][][] leftHrirs, float[][][] rightHrirs)- 构造 BinauralPanEffect 实例。
- 参数:
-
azimuths: 方位角数组(必须按升序排序)。 -
elevations: 仰角数组(必须按升序排序)。 -
leftHrirs: 左耳 HRIR 集合。 -
rightHrirs: 右耳 HRIR 集合。
-
-
public void UseCrossover(bool useCrossover)- 打开或关闭分频滤波。
- 参数:
-
useCrossover: 是否使用分频滤波。
-
-
public void SetCrossoverParameters(float freq, int samplingRate)- 更新分频滤波器的频率(仅适用于 BiQuadFilters)。
- 参数:
-
freq: 频率。 -
samplingRate: 采样率。
-
-
public void SetCrossoverFilters(IOnlineFilter lowpassLeft, IOnlineFilter highpassLeft, IOnlineFilter lowpassRight, IOnlineFilter highpassRight)- 设置自定义分频滤波器。
- 参数:
-
lowpassLeft: 左声道的低通滤波器。 -
highpassLeft: 左声道的高通滤波器。 -
lowpassRight: 右声道的低通滤波器。 -
highpassRight: 右声道的高通滤波器。
-
-
protected void UpdateHrir(float azimuth, float elevation)- 更新 HRIR(使用 HRIR 表进行插值)。
- 参数:
-
azimuth: 方位角(theta)。 -
elevation: 仰角(phi)。
-
-
public override void Process(ref float left, ref float right)- 处理每个声道的一个样本:[输入左声道,输入右声道] -> [输出左声道,输出右声道]。
- 参数:
-
left: 左声道输入样本。 -
right: 右声道输入样本。
-
-
public override void Reset()- 重置双耳声像效果。
以下是一个使用 BinauralPanEffect 类中多个方法的示例,并在示例中加入了注释:
using System;
using Vorcyc.Mathematics.SignalProcessing.Effects.Stereo;
public class BinauralPanEffectExample
{
public static void Main()
{
// 定义 HRIR 数据
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][][];
// 初始化 HRIR 数据(示例数据)
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]; // 示例长度
rightHrirs[i][j] = new float[128]; // 示例长度
}
}
// 创建 BinauralPanEffect 实例
var binauralPanEffect = new BinauralPanEffect(azimuths, elevations, leftHrirs, rightHrirs);
// 设置方位角和仰角
binauralPanEffect.Azimuth = 30;
binauralPanEffect.Elevation = 45;
// 打开分频滤波
binauralPanEffect.UseCrossover(true);
// 处理样本
float leftSample = 0.5f;
float rightSample = 0.6f;
binauralPanEffect.Process(ref leftSample, ref rightSample);
// 输出处理后的样本
Console.WriteLine($"Processed Left Sample: {leftSample}");
Console.WriteLine($"Processed Right Sample: {rightSample}");
}
}Vorcyc.Mathematics.SignalProcessing.Effects.Stereo.ItdIldPanEffect 是一个基于 ITD-ILD(Interaural Time Difference - Interaural Level Difference)的立体声声像音频效果类。
-
public float HeadRadius { get; }- 获取头部半径。
-
public float Pan { get; set; }- 获取或设置声像。
-
public ItdIldPanEffect(int samplingRate, float pan, InterpolationMode interpolationMode = InterpolationMode.Linear, double reserveDelay = 0.005, float headRadius = 8.5e-2f)- 构造 ItdIldPanEffect 实例。
- 参数:
-
samplingRate: 采样率。 -
pan: 声像。 -
interpolationMode: 分数延迟线的插值模式,默认为InterpolationMode.Linear。 -
reserveDelay: 保留延迟的最大时间(以秒为单位),默认为 0.005 秒。 -
headRadius: 头部半径,默认为 8.5e-2f。
-
-
public override void Process(ref float left, ref float right)- 处理每个声道的一个样本:[输入左声道,输入右声道] -> [输出左声道,输出右声道]。
- 参数:
-
left: 左声道输入样本。 -
right: 右声道输入样本。
-
-
public override void Reset()- 重置效果。
以下是一个使用 ItdIldPanEffect 类中多个方法的示例,并在示例中加入了注释:
using System;
using Vorcyc.Mathematics.SignalProcessing.Effects.Stereo;
public class ItdIldPanEffectExample
{
public static void Main()
{
// 创建 ItdIldPanEffect 实例
var itdIldPanEffect = new ItdIldPanEffect(44100, 0.5f);
// 设置声像
itdIldPanEffect.Pan = 0.8f;
// 处理样本
float leftSample = 0.5f;
float rightSample = 0.6f;
itdIldPanEffect.Process(ref leftSample, ref rightSample);
// 输出处理后的样本
Console.WriteLine($"Processed Left Sample: {leftSample}");
Console.WriteLine($"Processed Right Sample: {rightSample}");
}
}Vorcyc.Mathematics.SignalProcessing.Effects.Stereo.PanEffect 是一个用于立体声声像处理的音频效果类。
-
public float Pan { get; set; }- 获取或设置声像(范围 [-1..1])。
-
public PanRule PanRule { get; set; }- 获取或设置声像规则(声像定律)。
-
public PanEffect(float pan, PanRule panRule)- 构造 PanEffect 实例。
- 参数:
-
pan: 声像。 -
panRule: 声像规则(声像定律)。
-
-
public override void Process(ref float left, ref float right)- 处理每个声道的一个样本:[输入左声道,输入右声道] -> [输出左声道,输出右声道]。
- 参数:
-
left: 左声道输入样本。 -
right: 右声道输入样本。
-
-
public override void Reset()- 重置效果。
以下是一个使用 PanEffect 类中多个方法的示例,并在示例中加入了注释:
using System;
using Vorcyc.Mathematics.SignalProcessing.Effects.Stereo;
public class PanEffectExample
{
public static void Main()
{
// 创建 PanEffect 实例
var panEffect = new PanEffect(0.5f, PanRule.ConstantPower);
// 设置声像
panEffect.Pan = -0.3f;
// 处理样本
float leftSample = 0.5f;
float rightSample = 0.6f;
panEffect.Process(ref leftSample, ref rightSample);
// 输出处理后的样本
Console.WriteLine($"Processed Left Sample: {leftSample}");
Console.WriteLine($"Processed Right Sample: {rightSample}");
}
}Vorcyc.Mathematics.SignalProcessing.Effects.Stereo.PingPongDelayEffect 是一个用于立体声乒乓延迟音频效果的类。
-
public float Pan { get; set; }- 获取或设置声像。
-
public float Delay { get; set; }- 获取或设置延迟时间(以秒为单位)。
-
public float Feedback { get; set; }- 获取或设置反馈系数。
-
public PingPongDelayEffect(int samplingRate, float pan, float delay, float feedback = 0.5f, InterpolationMode interpolationMode = InterpolationMode.Nearest, float reserveDelay = 0)- 构造 PingPongDelayEffect 实例。
- 参数:
-
samplingRate: 采样率。 -
pan: 声像。 -
delay: 延迟时间(以秒为单位)。 -
feedback: 反馈系数,默认为 0.5。 -
interpolationMode: 分数延迟线的插值模式,默认为InterpolationMode.Nearest。 -
reserveDelay: 保留延迟的最大时间,默认为 0 秒。
-
-
public override void Process(ref float left, ref float right)- 处理每个声道的一个样本:[输入左声道,输入右声道] -> [输出左声道,输出右声道]。
- 参数:
-
left: 左声道输入样本。 -
right: 右声道输入样本。
-
-
public override void Reset()- 重置效果。
以下是一个使用 PingPongDelayEffect 类中多个方法的示例,并在示例中加入了注释:
using System;
using Vorcyc.Mathematics.SignalProcessing.Effects.Stereo;
public class PingPongDelayEffectExample
{
public static void Main()
{
// 创建 PingPongDelayEffect 实例
var pingPongDelayEffect = new PingPongDelayEffect(44100, 0.5f, 0.3f, 0.6f);
// 设置声像和延迟
pingPongDelayEffect.Pan = 0.8f;
pingPongDelayEffect.Delay = 0.4f;
pingPongDelayEffect.Feedback = 0.7f;
// 处理样本
float leftSample = 0.5f;
float rightSample = 0.6f;
pingPongDelayEffect.Process(ref leftSample, ref rightSample);
// 输出处理后的样本
Console.WriteLine($"Processed Left Sample: {leftSample}");
Console.WriteLine($"Processed Right Sample: {rightSample}");
}
}Vorcyc.Mathematics.SignalProcessing.Effects.Stereo.StereoDelayEffect 是一个用于立体声延迟音频效果的类。
-
public float DelayLeft { get; set; }- 获取或设置左声道延迟时间(以秒为单位)。
-
public float DelayRight { get; set; }- 获取或设置右声道延迟时间(以秒为单位)。
-
public float FeedbackLeft { get; set; }- 获取或设置左声道反馈系数。
-
public float FeedbackRight { get; set; }- 获取或设置右声道反馈系数。
-
public float Pan { get; set; }- 获取或设置声像。
-
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)- 构造 StereoDelayEffect 实例。
- 参数:
-
samplingRate: 采样率。 -
pan: 声像。 -
delayLeft: 左声道延迟时间(以秒为单位)。 -
delayRight: 右声道延迟时间(以秒为单位)。 -
feedbackLeft: 左声道反馈系数,默认为 0.5。 -
feedbackRight: 右声道反馈系数,默认为 0.5。 -
interpolationMode: 分数延迟线的插值模式,默认为InterpolationMode.Nearest。 -
reserveDelay: 保留延迟的最大时间,默认为 0 秒。
-
-
public override void Process(ref float left, ref float right)- 处理每个声道的一个样本:[输入左声道,输入右声道] -> [输出左声道,输出右声道]。
- 参数:
-
left: 左声道输入样本。 -
right: 右声道输入样本。
-
-
public override void Reset()- 重置效果。
以下是一个使用 StereoDelayEffect 类中多个方法的示例,并在示例中加入了注释:
using System;
using Vorcyc.Mathematics.SignalProcessing.Effects.Stereo;
public class StereoDelayEffectExample
{
public static void Main()
{
// 创建 StereoDelayEffect 实例
var stereoDelayEffect = new StereoDelayEffect(44100, 0.5f, 0.3f, 0.4f, 0.6f, 0.7f);
// 设置声像和延迟
stereoDelayEffect.Pan = 0.8f;
stereoDelayEffect.DelayLeft = 0.4f;
stereoDelayEffect.DelayRight = 0.5f;
stereoDelayEffect.FeedbackLeft = 0.7f;
stereoDelayEffect.FeedbackRight = 0.8f;
// 处理样本
float leftSample = 0.5f;
float rightSample = 0.6f;
stereoDelayEffect.Process(ref leftSample, ref rightSample);
// 输出处理后的样本
Console.WriteLine($"Processed Left Sample: {leftSample}");
Console.WriteLine($"Processed Right Sample: {rightSample}");
}
}Vorcyc.Mathematics.SignalProcessing.Effects.Stereo.StereoEffect 是一个用于立体声音频效果的抽象类,继承了 WetDryMixer 类。
-
public abstract void Process(ref float left, ref float right)- 处理每个声道的一个样本:[输入左声道,输入右声道] -> [输出左声道,输出右声道]。
- 参数:
-
left: 左声道输入样本。 -
right: 右声道输入样本。
-
-
public virtual void Process(float sample, out float left, out float right)- 处理单声道样本:输入样本 -> [输出左声道,输出右声道]。
- 参数:
-
sample: 单声道输入样本。 -
left: 左声道输出样本。 -
right: 右声道输出样本。
-
-
public virtual void Process(float[] inputLeft, float[] inputRight, float[] outputLeft, float[] outputRight, int count = 0, int inputPos = 0, int outputPos = 0)- 处理每个声道的样本块:[输入左声道,输入右声道] -> [输出左声道,输出右声道]。
- 参数:
-
inputLeft: 左声道输入样本块。 -
inputRight: 右声道输入样本块。 -
outputLeft: 左声道输出样本块。 -
outputRight: 右声道输出样本块。 -
count: 要处理的样本数量,默认为 0。 -
inputPos: 输入起始索引,默认为 0。 -
outputPos: 输出起始索引,默认为 0。
-
-
public virtual void Process(float[] input, float[] outputLeft, float[] outputRight, int count = 0, int inputPos = 0, int outputPos = 0)- 处理单声道样本块:[输入] -> [输出左声道,输出右声道]。
- 参数:
-
input: 单声道输入样本块。 -
outputLeft: 左声道输出样本块。 -
outputRight: 右声道输出样本块。 -
count: 要处理的样本数量,默认为 0。 -
inputPos: 输入起始索引,默认为 0。 -
outputPos: 输出起始索引,默认为 0。
-
-
public virtual (Signal, Signal) ApplyTo(Signal signal)- 将效果应用于整个信号,并返回输出信号的元组 [左信号,右信号]。
- 参数:
-
signal: 输入信号。
-
-
public virtual (Signal, Signal) ApplyTo(Signal leftSignal, Signal rightSignal)- 将效果应用于左、右声道的整个信号,并返回输出信号的元组 [左信号,右信号]。
- 参数:
-
leftSignal: 左声道输入信号。 -
rightSignal: 右声道输入信号。
-
-
public abstract void Reset()- 重置效果。
以下是一个使用 StereoEffect 类中多个方法的示例,并在示例中加入了注释:
using System;
using Vorcyc.Mathematics.SignalProcessing.Effects.Stereo;
public class CustomStereoEffect : StereoEffect
{
public override void Process(ref float left, ref float right)
{
// 自定义处理逻辑
left *= 0.5f;
right *= 0.5f;
}
public override void Reset()
{
// 自定义重置逻辑
}
}
public class StereoEffectExample
{
public static void Main()
{
// 创建 CustomStereoEffect 实例
var stereoEffect = new CustomStereoEffect();
// 处理样本
float leftSample = 0.5f;
float rightSample = 0.6f;
stereoEffect.Process(ref leftSample, ref rightSample);
// 输出处理后的样本
Console.WriteLine($"Processed Left Sample: {leftSample}");
Console.WriteLine($"Processed Right Sample: {rightSample}");
}
}Vorcyc.Mathematics.SignalProcessing.Effects.AutowahEffect 是一个用于自动哇音效的音频效果类,结合了包络跟随器和哇音效果。
-
public float Q { get; set; }- 获取或设置 Q 因子(也称为质量因子,谐振)。
-
public float MinFrequency { get; set; }- 获取或设置最小 LFO 频率(以 Hz 为单位)。
-
public float MaxFrequency { get; set; }- 获取或设置最大 LFO 频率(以 Hz 为单位)。
-
public float AttackTime { get; set; }- 获取或设置攻击时间(以秒为单位)。
-
public float ReleaseTime { get; set; }- 获取或设置释放时间(以秒为单位)。
-
public AutowahEffect(int samplingRate, float minFrequency = 30, float maxFrequency = 2000, float q = 0.5f, float attackTime = 0.01f, float releaseTime = 0.05f)- 构造 AutowahEffect 实例。
- 参数:
-
samplingRate: 采样率。 -
minFrequency: 最小 LFO 频率(以 Hz 为单位),默认为 30 Hz。 -
maxFrequency: 最大 LFO 频率(以 Hz 为单位),默认为 2000 Hz。 -
q: Q 因子(也称为质量因子,谐振),默认为 0.5。 -
attackTime: 攻击时间(以秒为单位),默认为 0.01 秒。 -
releaseTime: 释放时间(以秒为单位),默认为 0.05 秒。
-
-
public override float Process(float sample)- 处理一个样本。
- 参数:
-
sample: 输入样本。
-
- 返回值: 处理后的样本。
-
public override void Reset()- 重置效果。
以下是一个使用 AutowahEffect 类中多个方法的示例,并在示例中加入了注释:
using System;
using Vorcyc.Mathematics.SignalProcessing.Effects;
using Vorcyc.Mathematics.SignalProcessing.Signals;
public class AutowahEffectExample
{
public static void Main()
{
// 创建 AutowahEffect 实例
var autowahEffect = new AutowahEffect(44100, 30, 2000, 0.5f, 0.01f, 0.05f);
// 定义输入信号
float[] samples = { 0.5f, 0.6f, 0.55f, 0.7f, 0.65f };
var signal = Signal.FromCopy(samples, 44100);
// 处理样本
foreach (var sample in signal.Samples)
{
var processedSample = autowahEffect.Process(sample);
Console.WriteLine($"Processed Sample: {processedSample}");
}
}
}Vorcyc.Mathematics.SignalProcessing.Effects.BitCrusherEffect 是一个用于比特压缩(失真)音频效果的类,继承了 AudioEffect 类。
-
public int BitDepth { get; set; }- 获取或设置比特深度(位数)。
-
public BitCrusherEffect(int bitDepth)- 构造 BitCrusherEffect 实例。
- 参数:
-
bitDepth: 比特深度(位数)。
-
-
public override float Process(float sample)- 处理一个样本。
- 参数:
-
sample: 输入样本。
-
- 返回值: 处理后的样本。
-
public override void Reset()- 重置效果。
以下是一个使用 BitCrusherEffect 类中多个方法的示例,并在示例中加入了注释:
using System;
using Vorcyc.Mathematics.SignalProcessing.Effects;
public class BitCrusherEffectExample
{
public static void Main()
{
// 创建 BitCrusherEffect 实例
var bitCrusherEffect = new BitCrusherEffect(8);
// 设置比特深度
bitCrusherEffect.BitDepth = 6;
// 处理样本
float sample = 0.5f;
float processedSample = bitCrusherEffect.Process(sample);
// 输出处理后的样本
Console.WriteLine($"Processed Sample: {processedSample}");
}
}Vorcyc.Mathematics.SignalProcessing.Effects.ChorusEffect 是一个用于合唱音频效果的类,继承了 AudioEffect 类。
-
public float[] Widths { get; set; }- 获取或设置每个声部的宽度(最大延迟,以秒为单位)。
-
public float[] LfoFrequencies { get; set; }- 获取或设置每个声部的 LFO 频率。
-
public ChorusEffect(int samplingRate, float[] lfoFrequencies, float[] widths)- 构造 ChorusEffect 实例。
- 参数:
-
samplingRate: 采样率。 -
lfoFrequencies: 每个声部的 LFO 频率。 -
widths: 每个声部的宽度(最大延迟,以秒为单位)。
-
-
public ChorusEffect(int samplingRate, ISampleGenerator[] lfos, float[] widths)- 从 LFO 构造 ChorusEffect 实例。
- 参数:
-
samplingRate: 采样率。 -
lfos: LFO(以信号生成器的形式)。 -
widths: 每个声部的宽度(最大延迟,以秒为单位)。
-
-
public override float Process(float sample)- 处理一个样本。
- 参数:
-
sample: 输入样本。
-
- 返回值: 处理后的样本。
-
public override void Reset()- 重置效果。
以下是一个使用 ChorusEffect 类中多个方法的示例,并在示例中加入了注释:
using System;
using Vorcyc.Mathematics.SignalProcessing.Effects;
public class ChorusEffectExample
{
public static void Main()
{
// 创建 ChorusEffect 实例
float[] lfoFrequencies = { 0.25f, 0.3f, 0.35f };
float[] widths = { 0.002f, 0.003f, 0.004f };
var chorusEffect = new ChorusEffect(44100, lfoFrequencies, widths);
// 处理样本
float sample = 0.5f;
float processedSample = chorusEffect.Process(sample);
// 输出处理后的样本
Console.WriteLine($"Processed Sample: {processedSample}");
}
}Vorcyc.Mathematics.SignalProcessing.Effects.DelayEffect 是一个用于延迟音频效果的类,继承了 AudioEffect 类。
-
public float Delay { get; set; }- 获取或设置延迟时间(以秒为单位)。
-
public float Feedback { get; set; }- 获取或设置反馈参数。
-
public DelayEffect(int samplingRate, float delay, float feedback = 0.5f, InterpolationMode interpolationMode = InterpolationMode.Nearest, float reserveDelay = 0f)- 构造 DelayEffect 实例。
- 参数:
-
samplingRate: 采样率。 -
delay: 延迟时间(以秒为单位)。 -
feedback: 反馈参数,默认为 0.5。 -
interpolationMode: 分数延迟线的插值模式,默认为InterpolationMode.Nearest。 -
reserveDelay: 保留延迟的最大时间,默认为 0 秒。
-
-
public override float Process(float sample)- 处理一个样本。
- 参数:
-
sample: 输入样本。
-
- 返回值: 处理后的样本。
-
public override void Reset()- 重置效果。
以下是一个使用 DelayEffect 类中多个方法的示例,并在示例中加入了注释:
using System;
using Vorcyc.Mathematics.SignalProcessing.Effects;
public class DelayEffectExample
{
public static void Main()
{
// 创建 DelayEffect 实例
var delayEffect = new DelayEffect(44100, 0.5f, 0.6f);
// 设置延迟和反馈
delayEffect.Delay = 0.4f;
delayEffect.Feedback = 0.7f;
// 处理样本
float sample = 0.5f;
float processedSample = delayEffect.Process(sample);
// 输出处理后的样本
Console.WriteLine($"Processed Sample: {processedSample}");
}
}Vorcyc.Mathematics.SignalProcessing.Effects.DistortionEffect 是一个用于失真音频效果的类,继承了 AudioEffect 类。
-
public DistortionMode Mode { get; set; }- 获取或设置失真模式(软/硬削波、指数、全波/半波整流)。
-
public float InputGain { get; set; }- 获取或设置输入增益(以 dB 为单位)。
-
public float OutputGain { get; set; }- 获取或设置输出增益(以 dB 为单位)。
-
public DistortionEffect(DistortionMode mode, float inputGain = 12f, float outputGain = -12f)- 构造 DistortionEffect 实例。
- 参数:
-
mode: 失真模式。 -
inputGain: 输入增益(以 dB 为单位),默认为 12 dB。 -
outputGain: 输出增益(以 dB 为单位),默认为 -12 dB。
-
-
public override float Process(float sample)- 处理一个样本。
- 参数:
-
sample: 输入样本。
-
- 返回值: 处理后的样本。
-
public override void Reset()- 重置效果。
以下是一个使用 DistortionEffect 类中多个方法的示例,并在示例中加入了注释:
using System;
using Vorcyc.Mathematics.SignalProcessing.Effects;
public class DistortionEffectExample
{
public static void Main()
{
// 创建 DistortionEffect 实例
var distortionEffect = new DistortionEffect(DistortionMode.HardClipping, 12f, -12f);
// 设置失真模式和增益
distortionEffect.Mode = DistortionMode.SoftClipping;
distortionEffect.InputGain = 10f;
distortionEffect.OutputGain = -10f;
// 处理样本
float sample = 0.5f;
float processedSample = distortionEffect.Process(sample);
// 输出处理后的样本
Console.WriteLine($"Processed Sample: {processedSample}");
}
}Vorcyc.Mathematics.SignalProcessing.Effects.EchoEffect 是一个用于回声音频效果的类,继承了 AudioEffect 类。
-
public float Delay { get; set; }- 获取或设置延迟时间(以秒为单位)。
-
public float Feedback { get; set; }- 获取或设置反馈参数。
-
public EchoEffect(int samplingRate, float delay, float feedback = 0.5f, InterpolationMode interpolationMode = InterpolationMode.Nearest, float reserveDelay = 0f)- 构造 EchoEffect 实例。
- 参数:
-
samplingRate: 采样率。 -
delay: 延迟时间(以秒为单位)。 -
feedback: 反馈参数,默认为 0.5。 -
interpolationMode: 分数延迟线的插值模式,默认为InterpolationMode.Nearest。 -
reserveDelay: 保留延迟的最大时间,默认为 0 秒。
-
-
public override float Process(float sample)- 处理一个样本。
- 参数:
-
sample: 输入样本。
-
- 返回值: 处理后的样本。
-
public override void Reset()- 重置效果。
以下是一个使用 EchoEffect 类中多个方法的示例,并在示例中加入了注释:
using System;
using Vorcyc.Mathematics.SignalProcessing.Effects;
public class EchoEffectExample
{
public static void Main()
{
// 创建 EchoEffect 实例
var echoEffect = new EchoEffect(44100, 0.5f, 0.6f);
// 设置延迟和反馈
echoEffect.Delay = 0.4f;
echoEffect.Feedback = 0.7f;
// 处理样本
float sample = 0.5f;
float processedSample = echoEffect.Process(sample);
// 输出处理后的样本
Console.WriteLine($"Processed Sample: {processedSample}");
}
}Vorcyc.Mathematics.SignalProcessing.Effects.FlangerEffect 是一个用于镶边音频效果的类,继承了 AudioEffect 类。
-
public float Width { get; set; }- 获取或设置宽度(以秒为单位)。
-
public float LfoFrequency { get; set; }- 获取或设置 LFO 频率(以 Hz 为单位)。
-
public ISampleGenerator Lfo { get; set; }- 获取或设置 LFO 信号生成器。
-
public float Depth { get; set; }- 获取或设置深度。
-
public float Feedback { get; set; }- 获取或设置反馈参数。
-
public bool Inverted { get; set; }- 获取或设置反转模式标志。
-
public InterpolationMode InterpolationMode { get; set; }- 获取或设置插值模式。
-
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)- 构造 FlangerEffect 实例。
- 参数:
-
samplingRate: 采样率。 -
lfoFrequency: LFO 频率(以 Hz 为单位),默认为 1 Hz。 -
width: 宽度(以秒为单位),默认为 0.003 秒。 -
depth: 深度,默认为 0.5。 -
feedback: 反馈参数,默认为 0。 -
inverted: 反转模式,默认为 false。 -
interpolationMode: 分数延迟线的插值模式,默认为InterpolationMode.Linear。 -
reserveWidth: 保留宽度的最大时间,默认为 0 秒。
-
-
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)- 从 LFO 构造 FlangerEffect 实例。
- 参数:
-
samplingRate: 采样率。 -
lfo: LFO 信号生成器。 -
width: 宽度(以秒为单位),默认为 0.003 秒。 -
depth: 深度,默认为 0.5。 -
feedback: 反馈参数,默认为 0。 -
inverted: 反转模式,默认为 false。 -
interpolationMode: 分数延迟线的插值模式,默认为InterpolationMode.Linear。 -
reserveWidth: 保留宽度的最大时间,默认为 0 秒。
-
-
public override float Process(float sample)- 处理一个样本。
- 参数:
-
sample: 输入样本。
-
- 返回值: 处理后的样本。
-
public override void Reset()- 重置效果。
以下是一个使用 FlangerEffect 类中多个方法的示例,并在示例中加入了注释:
using System;
using Vorcyc.Mathematics.SignalProcessing.Effects;
public class FlangerEffectExample
{
public static void Main()
{
// 创建 FlangerEffect 实例
var flangerEffect = new FlangerEffect(44100, 0.25f, 0.003f, 0.5f, 0.6f, false);
// 设置参数
flangerEffect.Width = 0.004f;
flangerEffect.LfoFrequency = 0.5f;
flangerEffect.Depth = 0.7f;
flangerEffect.Feedback = 0.8f;
flangerEffect.Inverted = true;
// 处理样本
float sample = 0.5f;
float processedSample = flangerEffect.Process(sample);
// 输出处理后的样本
Console.WriteLine($"Processed Sample: {processedSample}");
}
}Vorcyc.Mathematics.SignalProcessing.Effects.MorphEffect 是一个用于混合(变形)两个声音信号的音频效果类,继承了 AudioEffect 类。
无公开属性。
-
public MorphEffect(int hopSize, int fftSize = 0)- 构造 MorphEffect 实例。
- 参数:
-
hopSize: 跳跃长度(样本数)。 -
fftSize: FFT 大小,默认为 0。
-
-
public float Process(float sample, float mix)- 处理一个输入信号样本和一个要混合的信号样本。
- 参数:
-
sample: 输入信号样本。 -
mix: 要与输入信号混合的信号样本。
-
- 返回值: 处理后的样本。
-
protected void ProcessFrame()- 处理一个帧(块)。
-
public override void Reset()- 重置效果。
-
public Signal ApplyTo(Signal signal, Signal mix)- 将效果应用于整个输入信号和混合信号。
- 参数:
-
signal: 输入信号。 -
mix: 要与输入信号混合的信号。
-
- 返回值: 处理后的
Signal对象。
-
public override float Process(float sample)- 处理一个样本。此方法在 MorphEffect 类中未实现。
- 参数:
-
sample: 输入样本。
-
- 返回值: 处理后的样本。
以下是一个使用 MorphEffect 类中多个方法的示例,并在示例中加入了注释:
using System;
using Vorcyc.Mathematics.SignalProcessing.Effects;
using Vorcyc.Mathematics.SignalProcessing;
using Vorcyc.Mathematics.SignalProcessing.Signals;
public class MorphEffectExample
{
public static void Main()
{
// 创建 MorphEffect 实例
var morphEffect = new MorphEffect(256, 1024);
// 定义输入信号和混合信号
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);
// 将效果应用于整个信号
var processedSignal = morphEffect.ApplyTo(inputSignal, mixSignal);
// 输出处理后的信号样本
Console.WriteLine("Processed Signal:");
foreach (var sample in processedSignal.Samples)
{
Console.WriteLine(sample);
}
}
}Vorcyc.Mathematics.SignalProcessing.Effects.PhaserEffect 是一个用于移相音频效果的类,继承了 AudioEffect 类。
-
public float Q { get; set; }- 获取或设置 Q 因子(也称为质量因子,谐振)。
-
public float LfoFrequency { get; set; }- 获取或设置 LFO 频率(以 Hz 为单位)。
-
public float MinFrequency { get; set; }- 获取或设置最小 LFO 频率(以 Hz 为单位)。
-
public float MaxFrequency { get; set; }- 获取或设置最大 LFO 频率(以 Hz 为单位)。
-
public ISampleGenerator Lfo { get; set; }- 获取或设置 LFO 信号生成器。
-
public PhaserEffect(int samplingRate, float lfoFrequency = 1.0f, float minFrequency = 300, float maxFrequency = 3000, float q = 0.5f)- 构造 PhaserEffect 实例。
- 参数:
-
samplingRate: 采样率。 -
lfoFrequency: LFO 频率(以 Hz 为单位),默认为 1.0 Hz。 -
minFrequency: 最小 LFO 频率(以 Hz 为单位),默认为 300 Hz。 -
maxFrequency: 最大 LFO 频率(以 Hz 为单位),默认为 3000 Hz。 -
q: Q 因子(也称为质量因子,谐振),默认为 0.5。
-
-
public PhaserEffect(int samplingRate, ISampleGenerator lfo, float q = 0.5f)- 从 LFO 构造 PhaserEffect 实例。
- 参数:
-
samplingRate: 采样率。 -
lfo: LFO 信号生成器。 -
q: Q 因子(也称为质量因子,谐振),默认为 0.5。
-
-
public override float Process(float sample)- 处理一个样本。
- 参数:
-
sample: 输入样本。
-
- 返回值: 处理后的样本。
-
public override void Reset()- 重置效果。
以下是一个使用 PhaserEffect 类中多个方法的示例,并在示例中加入了注释:
using System;
using Vorcyc.Mathematics.SignalProcessing.Effects;
public class PhaserEffectExample
{
public static void Main()
{
// 创建 PhaserEffect 实例
var phaserEffect = new PhaserEffect(44100, 0.5f, 300, 3000, 0.7f);
// 设置参数
phaserEffect.LfoFrequency = 0.8f;
phaserEffect.MinFrequency = 200;
phaserEffect.MaxFrequency = 4000;
phaserEffect.Q = 0.6f;
// 处理样本
float sample = 0.5f;
float processedSample = phaserEffect.Process(sample);
// 输出处理后的样本
Console.WriteLine($"Processed Sample: {processedSample}");
}
}Vorcyc.Mathematics.SignalProcessing.Effects.PitchShiftEffect 是一个用于离线音高移位音频效果的类,基于可用的 TSM 算法和线性插值。PitchShiftEffect 不实现在线处理(方法 Process(float))。
-
public float Shift { get; set; }- 获取或设置音高移位比率。
-
public TsmAlgorithm Tsm { get; set; }- 获取或设置时间尺度修改算法。
-
public int WindowSize { get; set; }- 获取或设置窗口大小(帧长度)。
-
public int HopSize { get; set; }- 获取或设置跳跃长度。
-
public PitchShiftEffect(float shift, int windowSize = 1024, int hopSize = 128, TsmAlgorithm tsm = TsmAlgorithm.PhaseVocoderPhaseLocking)- 构造 PitchShiftEffect 实例。
- 参数:
-
shift: 音高移位比率。 -
windowSize: 窗口大小(帧长度),默认为 1024。 -
hopSize: 跳跃长度,默认为 128。 -
tsm: 时间尺度修改算法,默认为TsmAlgorithm.PhaseVocoderPhaseLocking。
-
-
public override Signal ApplyTo(Signal signal, FilteringMethod method = FilteringMethod.Auto)- 将效果应用于整个信号,并返回新的音高移位信号。
- 参数:
-
signal: 输入信号。 -
method: 过滤方法,默认为FilteringMethod.Auto。
-
- 返回值: 处理后的
Signal对象。
-
public override void Apply(Signal signal, FilteringMethod method = FilteringMethod.Auto)- 将效果应用于整个信号(就地处理)。
- 参数:
-
signal: 输入信号。 -
method: 过滤方法,默认为FilteringMethod.Auto。
-
-
public override float Process(float sample)- 处理一个样本。此方法在 PitchShiftEffect 类中未实现。
- 参数:
-
sample: 输入样本。
-
- 返回值: 处理后的样本。
-
public override void Reset()- 重置效果。
以下是一个使用 PitchShiftEffect 类中多个方法的示例,并在示例中加入了注释:
using System;
using Vorcyc.Mathematics.SignalProcessing;
using Vorcyc.Mathematics.SignalProcessing.Effects;
using Vorcyc.Mathematics.SignalProcessing.Signals;
public class PitchShiftEffectExample
{
public static void Main()
{
// 创建 PitchShiftEffect 实例
var pitchShiftEffect = new PitchShiftEffect(1.2f, 1024, 128, TsmAlgorithm.PhaseVocoderPhaseLocking);
// 定义输入信号
float[] samples = { 0.5f, 0.6f, 0.55f, 0.7f, 0.65f };
var signal = Signal.FromCopy(samples, 44100);
// 将效果应用于整个信号
var processedSignal = pitchShiftEffect.ApplyTo(signal);
// 输出处理后的信号样本
Console.WriteLine("Processed Signal:");
foreach (var sample in processedSignal.Samples)
{
Console.WriteLine(sample);
}
}
}Vorcyc.Mathematics.SignalProcessing.Effects.PitchShiftVocoderEffect 是一个基于重叠加法滤波和频域音高移位的音频效果类,继承了 OverlapAddFilter 类。
-
public float Shift { get; set; }- 获取或设置音高移位比率。
-
public PitchShiftVocoderEffect(int samplingRate, float shift, int fftSize = 1024, int hopSize = 64)- 构造 PitchShiftVocoderEffect 实例。
- 参数:
-
samplingRate: 采样率。 -
shift: 音高移位比率。 -
fftSize: FFT 大小,默认为 1024。 -
hopSize: 跳跃长度,默认为 64。
-
-
protected override void ProcessSpectrum(float[] re, float[] im, float[] filteredRe, float[] filteredIm)- 在每个重叠加法 STFT 步骤中处理一个频谱。
- 参数:
-
re: 输入频谱的实部。 -
im: 输入频谱的虚部。 -
filteredRe: 输出频谱的实部。 -
filteredIm: 输出频谱的虚部。
-
-
public override void Reset()- 重置效果。
以下是一个使用 PitchShiftVocoderEffect 类中多个方法的示例,并在示例中加入了注释:
using System;
using Vorcyc.Mathematics.SignalProcessing;
using Vorcyc.Mathematics.SignalProcessing.Effects;
using Vorcyc.Mathematics.SignalProcessing.Signals;
public class PitchShiftVocoderEffectExample
{
public static void Main()
{
// 创建 PitchShiftVocoderEffect 实例
var pitchShiftVocoderEffect = new PitchShiftVocoderEffect(44100, 1.2f, 1024, 64);
// 定义输入信号
float[] samples = { 0.5f, 0.6f, 0.55f, 0.7f, 0.65f };
var signal = Signal.FromCopy(samples, 44100);
// 将效果应用于整个信号
var processedSignal = pitchShiftVocoderEffect.ApplyTo(signal);
// 输出处理后的信号样本
Console.WriteLine("Processed Signal:");
foreach (var sample in processedSignal.Samples)
{
Console.WriteLine(sample);
}
}
}Vorcyc.Mathematics.SignalProcessing.Effects.RobotEffect 是一个用于语音机器人化的音频效果类,继承了 OverlapAddFilter 类。
-
public RobotEffect(int hopSize, int fftSize = 0)- 构造 RobotEffect 实例。
- 参数:
-
hopSize: 跳跃长度(样本数)。 -
fftSize: FFT 大小,默认为 0。
-
-
protected override void ProcessSpectrum(float[] re, float[] im, float[] filteredRe, float[] filteredIm)- 在每个重叠加法 STFT 步骤中处理一个频谱(简单地将相位设置为 0)。
- 参数:
-
re: 输入频谱的实部。 -
im: 输入频谱的虚部。 -
filteredRe: 输出频谱的实部。 -
filteredIm: 输出频谱的虚部。
-
以下是一个使用 RobotEffect 类中多个方法的示例,并在示例中加入了注释:
using System;
using Vorcyc.Mathematics.SignalProcessing;
using Vorcyc.Mathematics.SignalProcessing.Effects;
using Vorcyc.Mathematics.SignalProcessing.Signals;
public class RobotEffectExample
{
public static void Main()
{
// 创建 RobotEffect 实例
var robotEffect = new RobotEffect(256, 1024);
// 定义输入信号
float[] samples = { 0.5f, 0.6f, 0.55f, 0.7f, 0.65f };
var signal = Signal.FromCopy(samples, 44100);
// 将效果应用于整个信号
var processedSignal = robotEffect.ApplyTo(signal);
// 输出处理后的信号样本
Console.WriteLine("Processed Signal:");
foreach (var sample in processedSignal.Samples)
{
Console.WriteLine(sample);
}
}
}Vorcyc.Mathematics.SignalProcessing.Effects.TremoloEffect 是一个用于颤音音频效果的类,继承了 AudioEffect 类。
-
public float Depth { get; set; }- 获取或设置深度。
-
public float Frequency { get; set; }- 获取或设置颤音频率(调制频率)(以 Hz 为单位)。
-
public float Index { get; set; }- 获取或设置颤音指数(调制指数)。
-
public ISampleGenerator Lfo { get; set; }- 获取或设置 LFO 信号生成器。
-
public TremoloEffect(int samplingRate, float depth = 0.5f, float frequency = 10f, float tremoloIndex = 0.5f)- 构造 TremoloEffect 实例。
- 参数:
-
samplingRate: 采样率。 -
depth: 深度,默认为 0.5。 -
frequency: 颤音频率(调制频率)(以 Hz 为单位),默认为 10 Hz。 -
tremoloIndex: 颤音指数(调制指数),默认为 0.5。
-
-
public TremoloEffect(ISampleGenerator lfo, float depth = 0.5f)- 从 LFO 构造 TremoloEffect 实例。
- 参数:
-
lfo: LFO 信号生成器。 -
depth: 深度,默认为 0.5。
-
-
public override float Process(float sample)- 处理一个样本。
- 参数:
-
sample: 输入样本。
-
- 返回值: 处理后的样本。
-
public override void Reset()- 重置效果。
以下是一个使用 TremoloEffect 类中多个方法的示例,并在示例中加入了注释:
using System;
using Vorcyc.Mathematics.SignalProcessing;
using Vorcyc.Mathematics.SignalProcessing.Effects;
using Vorcyc.Mathematics.SignalProcessing.Signals;
public class TremoloEffectExample
{
public static void Main()
{
// 创建 TremoloEffect 实例
var tremoloEffect = new TremoloEffect(44100, 0.5f, 10f, 0.5f);
// 定义输入信号
float[] samples = { 0.5f, 0.6f, 0.55f, 0.7f, 0.65f };
var signal = Signal.FromCopy(samples, 44100);
// 处理样本
foreach (var sample in signal.Samples)
{
var processedSample = tremoloEffect.Process(sample);
Console.WriteLine($"Processed Sample: {processedSample}");
}
}
}Vorcyc.Mathematics.SignalProcessing.Effects.TubeDistortionEffect 是一个用于管失真音频效果的类,继承了 AudioEffect 类。
-
public float InputGain { get; set; }- 获取或设置输入增益(以 dB 为单位)。
-
public float OutputGain { get; set; }- 获取或设置输出增益(以 dB 为单位)。
-
public float Q { get; set; }- 获取或设置 Q 因子(工作点)。控制低输入电平的传递函数的线性度。越负越线性。
-
public float Dist { get; set; }- 获取或设置失真的特性。数值越高,失真越硬。
-
public float Rh { get; }- 获取滤波器系数(接近 1.0),定义高通滤波器中极点的位置,用于去除直流分量。
-
public float Rl { get; }- 获取滤波器系数(范围 [0, 1]),定义低通滤波器中极点的位置,用于模拟管放大器中的电容。
-
public TubeDistortionEffect(float inputGain = 20f, float outputGain = -12f, float q = -0.2f, float dist = 5, float rh = 0.995f, float rl = 0.5f)- 构造 TubeDistortionEffect 实例。
- 参数:
-
inputGain: 输入增益(以 dB 为单位),默认为 20 dB。 -
outputGain: 输出增益(以 dB 为单位),默认为 -12 dB。 -
q: Q 因子,默认为 -0.2。 -
dist: 失真的特性,默认为 5。 -
rh: 高通滤波器系数,默认为 0.995。 -
rl: 低通滤波器系数,默认为 0.5。
-
-
public override float Process(float sample)- 处理一个样本。
- 参数:
-
sample: 输入样本。
-
- 返回值: 处理后的样本。
-
public override void Reset()- 重置效果。
以下是一个使用 TubeDistortionEffect 类中多个方法的示例,并在示例中加入了注释:
using System;
using Vorcyc.Mathematics.SignalProcessing;
using Vorcyc.Mathematics.SignalProcessing.Effects;
using Vorcyc.Mathematics.SignalProcessing.Signals;
public class TubeDistortionEffectExample
{
public static void Main()
{
// 创建 TubeDistortionEffect 实例
var tubeDistortionEffect = new TubeDistortionEffect(20f, -12f, -0.2f, 5, 0.995f, 0.5f);
// 定义输入信号
float[] samples = { 0.5f, 0.6f, 0.55f, 0.7f, 0.65f };
var signal = Signal.FromCopy(samples, 44100);
// 处理样本
foreach (var sample in signal.Samples)
{
var processedSample = tubeDistortionEffect.Process(sample);
Console.WriteLine($"Processed Sample: {processedSample}");
}
}
}Vorcyc.Mathematics.SignalProcessing.Effects.VibratoEffect 是一个用于颤音音频效果的类,继承了 AudioEffect 类。
-
public float Width { get; set; }- 获取或设置宽度(以秒为单位)。
-
public float LfoFrequency { get; set; }- 获取或设置 LFO 频率(以 Hz 为单位)。
-
public ISampleGenerator Lfo { get; set; }- 获取或设置 LFO 信号生成器。
-
public InterpolationMode InterpolationMode { get; set; }- 获取或设置插值模式。
-
public VibratoEffect(int samplingRate, float lfoFrequency = 1f, float width = 0.003f, InterpolationMode interpolationMode = InterpolationMode.Linear, float reserveWidth = 0f)- 构造 VibratoEffect 实例。
- 参数:
-
samplingRate: 采样率。 -
lfoFrequency: LFO 频率(以 Hz 为单位),默认为 1 Hz。 -
width: 宽度(以秒为单位),默认为 0.003 秒。 -
interpolationMode: 插值模式,默认为InterpolationMode.Linear。 -
reserveWidth: 保留宽度的最大时间,默认为 0 秒。
-
-
public VibratoEffect(int samplingRate, ISampleGenerator lfo, float width = 0.003f, InterpolationMode interpolationMode = InterpolationMode.Linear, float reserveWidth = 0f)- 从 LFO 构造 VibratoEffect 实例。
- 参数:
-
samplingRate: 采样率。 -
lfo: LFO 信号生成器。 -
width: 宽度(以秒为单位),默认为 0.003 秒。 -
interpolationMode: 插值模式,默认为InterpolationMode.Linear。 -
reserveWidth: 保留宽度的最大时间,默认为 0 秒。
-
-
public override float Process(float sample)- 处理一个样本。
- 参数:
-
sample: 输入样本。
-
- 返回值: 处理后的样本。
-
public override void Reset()- 重置效果。
以下是一个使用 VibratoEffect 类中多个方法的示例,并在示例中加入了注释:
using System;
using Vorcyc.Mathematics.SignalProcessing;
using Vorcyc.Mathematics.SignalProcessing.Effects;
using Vorcyc.Mathematics.SignalProcessing.Signals;
public class VibratoEffectExample
{
public static void Main()
{
// 创建 VibratoEffect 实例
var vibratoEffect = new VibratoEffect(44100, 1f, 0.003f, InterpolationMode.Linear, 0f);
// 定义输入信号
float[] samples = { 0.5f, 0.6f, 0.55f, 0.7f, 0.65f };
var signal = Signal.FromCopy(samples, 44100);
// 处理样本
foreach (var sample in signal.Samples)
{
var processedSample = vibratoEffect.Process(sample);
Console.WriteLine($"Processed Sample: {processedSample}");
}
}
}Vorcyc.Mathematics.SignalProcessing.Effects.WahwahEffect 是一个用于 Wah-Wah 音频效果的类,继承了 AudioEffect 类。
-
public float LfoFrequency { get; set; }- 获取或设置 LFO 频率(以 Hz 为单位)。
-
public float MinFrequency { get; set; }- 获取或设置最小 LFO 频率(以 Hz 为单位)。
-
public float MaxFrequency { get; set; }- 获取或设置最大 LFO 频率(以 Hz 为单位)。
-
public float Q { get; set; }- 获取或设置 Q 因子(也称为质量因子,谐振)。
-
public ISampleGenerator Lfo { get; set; }- 获取或设置 LFO 信号生成器。
-
public WahwahEffect(int samplingRate, float lfoFrequency = 1.0f, float minFrequency = 300, float maxFrequency = 1500, float q = 0.5f)- 构造 WahwahEffect 实例。
- 参数:
-
samplingRate: 采样率。 -
lfoFrequency: LFO 频率(以 Hz 为单位),默认为 1.0 Hz。 -
minFrequency: 最小 LFO 频率(以 Hz 为单位),默认为 300 Hz。 -
maxFrequency: 最大 LFO 频率(以 Hz 为单位),默认为 1500 Hz。 -
q: Q 因子(也称为质量因子,谐振),默认为 0.5。
-
-
public WahwahEffect(int samplingRate, ISampleGenerator lfo, float q = 0.5f)- 从 LFO 构造 WahwahEffect 实例。
- 参数:
-
samplingRate: 采样率。 -
lfo: LFO 信号生成器。 -
q: Q 因子(也称为质量因子,谐振),默认为 0.5。
-
-
public override float Process(float sample)- 处理一个样本。
- 参数:
-
sample: 输入样本。
-
- 返回值: 处理后的样本。
-
public override void Reset()- 重置效果。
以下是一个使用 WahwahEffect 类中多个方法的示例,并在示例中加入了注释:
using System;
using Vorcyc.Mathematics.SignalProcessing;
using Vorcyc.Mathematics.SignalProcessing.Effects;
using Vorcyc.Mathematics.SignalProcessing.Signals;
public class WahwahEffectExample
{
public static void Main()
{
// 创建 WahwahEffect 实例
var wahwahEffect = new WahwahEffect(44100, 1.0f, 300, 1500, 0.5f);
// 定义输入信号
float[] samples = { 0.5f, 0.6f, 0.55f, 0.7f, 0.65f };
var signal = Signal.FromCopy(samples, 44100);
// 处理样本
foreach (var sample in signal.Samples)
{
var processedSample = wahwahEffect.Process(sample);
Console.WriteLine($"Processed Sample: {processedSample}");
}
}
}Vorcyc.Mathematics.SignalProcessing.Effects.WhisperEffect 是一个用于语音耳语化的音频效果类,继承了 OverlapAddFilter 类。
-
public WhisperEffect(int hopSize, int fftSize = 0)- 构造 WhisperEffect 实例。
- 参数:
-
hopSize: 跳跃长度(样本数)。 -
fftSize: FFT 大小,默认为 0。
-
-
protected override void ProcessSpectrum(float[] re, float[] im, float[] filteredRe, float[] filteredIm)- 在每个重叠加法 STFT 步骤中处理一个频谱。
- 参数:
-
re: 输入频谱的实部。 -
im: 输入频谱的虚部。 -
filteredRe: 输出频谱的实部。 -
filteredIm: 输出频谱的虚部。
-
以下是一个使用 WhisperEffect 类中多个方法的示例,并在示例中加入了注释:
using System;
using Vorcyc.Mathematics.SignalProcessing;
using Vorcyc.Mathematics.SignalProcessing.Effects;
using Vorcyc.Mathematics.SignalProcessing.Signals;
public class WhisperEffectExample
{
public static void Main()
{
// 创建 WhisperEffect 实例
var whisperEffect = new WhisperEffect(256, 1024);
// 定义输入信号
float[] samples = { 0.5f, 0.6f, 0.55f, 0.7f, 0.65f };
var signal = Signal.FromCopy(samples, 44100);
// 将效果应用于整个信号
var processedSignal = whisperEffect.ApplyTo(signal);
// 输出处理后的信号样本
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 扩展
-
📒 示例