Visual Studio .NET 2002.NET 1.0Visual Studio .NET 2003Windows 2003.NET 1.1Windows 2000Windows XP中级开发Visual StudioWindows.NETC#
C# 中的音频 DSP






4.55/5 (19投票s)
2003年9月7日
2分钟阅读

223761

8759
一个用于音频处理的 .NET 类库。
引言
Garbe.Sound 是一个用于音频处理的小型 .NET 类库。其主要思想是为程序员提供一个用于开发音频滤波器的 RAD 环境。它包含一些基本类,并已经实现了一些滤波器,例如:
- 增益滤波器
- 延迟滤波器
- 低通滤波器
- 混音器
- 混响
- 头部相关传递函数 (HRTF)
- 读取和写入波形文件(目前仅支持单声道)
该库仍然是 Beta 1 版本,但已经可以正常工作。欢迎提出任何意见! :)
使用代码
该库的一个想法是易于编程。为了做到这一点,我选择了一种系统化的类视图,其中每个滤波器都可以被视为一个具有输入和输出信号的盒子。
库中的几乎所有类都继承自 SoundObj 类,该类实现了这种基本的系统化视图。这允许您编写如下代码:
WaveReader wr1 = new WaveReader("teste2.wav");
WaveReader wr2 = new WaveReader("teste.wav");
Gain ga1 = new Gain(0.5f);
Gain ga2 = new Gain(0.5f);
Mixer mx = new Mixer(2);
WaveWriter wwl = new WaveWriter("exit.wav", wr1.NumChannels,
wr1.SampleRate, wr1.BitsPerSamples, 1, true);
ga1.Input = wr1;
ga2.Input = wr2;
mx[0] = ga1;
mx[1] = ga2;
wwl.Input = mx;
for(int k = 0; k < wwl.Interations; k++)
{
wr1.DoProcess();
wr2.DoProcess();
ga1.DoProcess();
ga2.DoProcess();
mx.DoProcess();
wwl.DoProcess();
}
wr1.Close();
wr2.Close();
wwl.Close();
这是一个非常简单的代码,它只有 2 个信号输入(teste.wav 和 teste2.wav),将两者都放大 0.5 倍(ga1 和 ga2 对象),将两者混合成一个信号,该信号作为 exit.wav 保存。
链接
- SndObj 音频对象库页面
Victor Lazzarini 的原始作品页面。 - Bill Gardner 的项目
虚拟声学房间。硕士论文。 - 数字音频效果会议
这是会议网站的链接。 - 用于模拟矩形封闭空间中波运动的图像源方法
Peter Yardley 的硕士项目论文。 - CIPIC HRTF 数据库
C.P. Brown、R.O. Duda、V.R. Algazi 等人关于 HRTF 的出版物。
历史
- 2003.09.02 - Beta 1
错误和评论
如果您有任何意见或发现任何错误,我很乐意听取并改进它。