繁体   English   中英

如何从头开始创建声音C#

[英]How to create a sound from scratch C#

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

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

那么有没有办法在不使用.wav文件的情况下在C#中创建一个合适的声音 - 例如B flat,所有代码都是#,如果没有,有没有办法用不同的语言 - 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库可以帮助? 我不是这个问题,但如果你不想使用音频文件,那么我就会想到这一点。 有一个关于它的问题在这里

在这里你可以找到一篇文章,其中包括如何从零开始创建至少一个八度音符音符的钢琴声音的源(它是可扩展的)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM