使用SoundFonts和NAudio播放MIDI文件

时间:2013-12-17 01:29:19

标签: c# naudio visual-c#-express-2010

我正在尝试创建一个简单的程序,使用Soundfont内部的预设来播放一些音符。为此,我尝试使用NAudio。到目前为止,我已经能够成功打开SoundFont,并获得所有乐器,预设等的名称:

NAudio.SoundFont.SoundFont sf = new NAudio.SoundFont.SoundFont("SoundFont.sf2");
MessageBox.Show(sf.Presets[0].Name); //Just looking at the first name

现在我希望能够使用这些声音字体播放声音,最后是midi,但是现在,只是一个音符。我玩过一些东西,但到目前为止还没有想出任何东西。

1 个答案:

答案 0 :(得分:4)

NAudio可以从SoundFont文件中读取信息,但它不包含SoundFont引擎。为此你需要一个好的音高变换算法,一些滤波器和一些语音管理,以及一个音序器,如果你想播放MIDI文件。

我最接近建造这样的东西的是我为我的NAudio Pluralsight课程制作的一个演示,其中我根据一些钢琴音符录制了一个简单的采样钢琴。如果您是订阅者,则可以自由使用它。我使用的技术是将样本加载到内存中,将RawSourceWaveStream连接到它,将其转换为样本提供程序,然后通过一个pitch shifter样本提供程序传递它,基于我移植到C#this open source project的那个