如何从头开始创建一个声音c#

How to create a sound from scratch C#

本文关键字:一个 声音 从头开始 创建      更新时间:2023-10-16

我正在尝试在c#中构建一个虚拟钢琴,并且想要一种从头开始创建音符音阶的方法。

我知道我可以简单地找到或创建一堆。wav文件,每个音符1个,但这会在用户硬盘上创建太多空间,并且在将来对我自己来说不是很直观。

那么有没有一种方法来创建一个适当的声音-例如,B平面,在c#中不使用。wav文件,所有的代码通过c#,如果没有,有没有一种方法来做这个在不同的语言- c++。

谢谢,我已经尽量说清楚了。

我想这看起来应该可以让你开始:

http://blogs.msdn.com/b/dawate/archive/2009/06/24/intro-to-audio-programming-part-3-synthesizing-simple-wave-audio-using-c.aspx

编辑:我应该补充一下,在没有。wav样本的情况下产生声音和模拟钢琴是不一致的。

如果你想要得到一个"真正的"钢琴声音,最好使用样本(如果你不想把它们保存在文件系统中,就把它们保存在内存中)。如果你只是想用一种简单的方法来发出准确的音符(听起来一点也不像真正的钢琴),那么用程序来做就是最好的方法!

如果你想模拟钢琴,你只有两个选择,其中一个是使用样本,另一个是物理建模。物理建模需要一些相当高级的DSP知识(滤波,卷积等),钢琴将是一个具有挑战性的乐器,但它已经完成了像Pianoteq

关于样本的主题,要创建一个接近令人信服的模拟的钢琴,理想情况下,您需要每个音符的不同速度和它们之间的交叉淡出的多个样本,但是您可能可以在有限的音符范围内使用样本来减少样本总数。

你可能想看看MIDI。

你可以用c++封装一个windows API,然后公开一个可以在c#中使用的托管接口。

也许使用MIDI库可以帮助?我对这个问题不感兴趣,但如果你不想使用音频文件,这是我想到的唯一办法。这里有一个问题

这里有一篇文章,包括如何从头开始创建至少一个八度音符的钢琴声音(它是可扩展的)。