我正在尝试用C#构建一个虚拟钢琴,想要一种从头开始创建音符音阶的方法。
我知道我可以简单地找到或创建一堆.wav文件,每个音符1个,但这会在用户的硬盘上创建太多空间,并且对我自己来说不太直观。
有没有办法在不使用.wav文件的情况下在C#中创建一个合适的声音 - 例如B flat,所有代码都是#,如果没有,有没有办法用不同的语言来做到这一点 - C ++
谢谢,我尽力让它变得清晰。
答案 0 :(得分:7)
我认为这看起来应该让你开始:
编辑:我应该补充说,在没有.wav样本和模拟钢琴的情况下生成声音是相互矛盾的。
如果你想获得一个“真正的”钢琴音色,最好使用样本(如果你不想将它们保存在文件系统中,请将它们保存在内存中)。如果您只是想要一种简单的方式来发出准确的音符(听起来就像真正的钢琴一样),那么以编程方式进行操作就是最佳选择!
答案 1 :(得分:4)
如果你想特别模仿钢琴,你只有两个选项,一个是使用样本,另一个是physical modelling。物理建模需要一些非常先进的DSP知识(滤波,卷积等),钢琴将是一个具有挑战性的工具,但它已由Pianoteq
等人完成。关于样本的主题,要创建一个接近令人信服的模拟的钢琴,理想情况下,每个音符需要多个样本以获得不同的速度,并且它们之间有交叉淡化,但是你可以在有限的范围内使用样本。减少样本总数的笔记范围。
答案 2 :(得分:0)
你可能想看看MIDI。
你可以用C ++包装windows API,然后公开你可以在C#中使用的托管界面。
答案 3 :(得分:0)
也许使用MIDI库可以提供帮助吗?我不是这个问题,但如果你不想使用音频文件,那么我就会想到这一点。有一个问题here。
答案 4 :(得分:0)
Here你会找到一篇文章,内容包括如何从零开始创建至少一个八度音符音符的钢琴声音(它是可扩展的)。