使用C#进行声音合成

是否有可能在C#中生成声音? 我的意思是不只是发出哔哔声或打开并播放波形文件。 我的意思是使用不同种类的波(罪,锯等)及其选项(频率,振幅等)来构建信号

在codeplex上查看NAudio 。

NAudio是一个开源的.NET音频和MIDI库,包含许多有用的音频相关类,旨在加速.NET中音频相关实用程序的开发。 它自2001年以来一直在开发中,并且已经发展到包括各种各样的function。 虽然库的某些部分相对较新且不完整,但更成熟的function已经过大量测试,可以快速用于向现有.NET应用程序添加音频function。

您可以直接使用该库,也可以查看其源代码以了解它在低级别的工作方式。

这是我写的关于如何用NAudio创建正弦波的博客文章。 显然,这只是制作全function合成器的第一步,因为您还需要创建其他波形,ADSR包络,滤波器等,但它至少应该让您开始。

我强烈建议您查看VST .Net平台。 这将允许您在.Net中创建自己的VST。 如果你想进行综合,你可能会发现更容易创建一个VST并将其托管在你选择的DAW中而不是创建一次性应用程序。 这是因为如果你创建一个VST,你不必担心处理音频接口驱动程序或ASIO等.https://vstnet.codeplex.com/

此外,您还需要一组用户界面控件。 标准的Windows窗体或WPF控件可能会起到作用,但合成爱好者通常喜欢看到很好的皮肤控件。 我最近发布了这些控件,其行为类似于普通的WPF控件,但是专为合成而设计: https : //bitbucket.org/MelbourneDeveloper/vst-controls-.net/

您可以使用FLooping 。 它是一个用F#编写的库,为振荡器,信封,滤波器等音频合成提供了通用的构建模块。它目前处于实验状态。

披露:我是FLooping的开发人员。