我正在尝试创建一个简单的程序,使用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开始播放,但是现在,请注意.我玩了几件事,但到目前为止还没有提出任何建议.
解决方法:
NAudio可以从SoundFont文件中读取信息,但不包括SoundFont引擎.为此,如果您要播放MIDI文件,则需要一个好的音高转换算法,一些滤波器和一些语音管理,以及一个音序器.
我最近一次构建类似这样的东西的过程是我为自己的NAudio Pluralsight课程制作的演示,其中我根据一些钢琴音符录音构建了一个简单的采样钢琴.如果您是订户,则可以*使用它.我使用的技术是将样本加载到内存中,将RawSourceWaveStream连接到该样本,将其转换为样本提供者,然后基于我移植到07#的C#的基础上,将其传递给一个音调转换器样本提供者.