使用 C# 弹奏钢琴音色
Posted
技术标签:
【中文标题】使用 C# 弹奏钢琴音色【英文标题】:playing piano tones using C# 【发布时间】:2011-11-13 02:39:07 【问题描述】:我正在尝试用 C# 制作一个简单的钢琴应用程序。
它应该是一架非常简单的钢琴(最多 5 或 6 个键)。我找到了不同的替代方案,到目前为止我发现的有:
consol.beep ();但我觉得它的声音不像钢琴的音色 保存和播放 WAV 文件。我想获得钢琴音色的 wav 文件,但我觉得这样做很难,而且它不会卖得很好,可能会占用很多不需要的空间是否有一个库可以演奏类似钢琴的音调或不同乐器的任何不同音调?
【问题讨论】:
【参考方案1】:查看 Mike Gold 的 Virtual Piano in C# 的可下载源。我想它有你要找的东西。
您可能还想查看这篇文章:Is it possible to generate a constant sound in C# while adjusting its frequency?。基本思想是你有一个单一的样本,你可以通过编程方式操纵声音文件的频率,从而生成不同的音符。
至于可以帮助你的库,你可以看看:
NAudio@codeplex C# MIDI Toolkit@codeproject Wrapper Library for Windows MIDI API@codeproject【讨论】:
【参考方案2】:你考虑过使用 MIDI 吗?
这很有用。
见http://grouplab.cpsc.ucalgary.ca/cookbook/index.php/VisualStudio/HowToPlayMIDIInstruments
这个很有趣,它可以让你以这样一种简单的方式播放声音:
MidiPlayer.Play( new NoteOn( 0, 1, "C4", 127 ) );
您还可以查看此代码项目页面。 见http://www.codeproject.com/KB/audio-video/MIDIToolkit.aspx
【讨论】:
grouplab.cpsc.ucalgary.ca 页面不再指向可行的库。【参考方案3】:保存和播放 WAV 文件我想到了获取钢琴的 wav 文件 音调,但我觉得这样做很难,而且不会有任何销售 可能会占用很多不需要的空间
我不知道您在寻求什么级别的真实感,但高端数码钢琴的每个键都有几个数字样本来表示硬/软按键的不同动态,所以我不排除这种可能性.一个重要的考虑因素是复音,即一次可以听到多少个音符。
细微的音高调整可以减少所需的样本数量,例如一个音符通常可以上/下几个半音而不会造成太大的降级。
或者,您可以考虑播放 MIDI 样本。几乎所有现代声卡都有基本的 128 个 MIDI 补丁,尽管质量可能差别很大。
【讨论】:
以上是关于使用 C# 弹奏钢琴音色的主要内容,如果未能解决你的问题,请参考以下文章