我一直在使用这个库(http://kenschutte.com/midi)来处理midi文件,这里的功能非常有用。但是,midi2audio()
方法只会产生乱码的.wav文件,无论我放入什么midi(尽管音符是可识别的并且正在播放正确的midi)。有没有其他人使用过这个函数库并遇到同样的问题,如果是这样,我怎么能解决这个问题呢?或者是否有其他功能我可以在某处使用同样的东西在网上使用?
以下是用于生成.wav文件的代码(从上面的链接复制并粘贴)
[y,Fs] = midi2audio(midi);
% save to file:
% (normalize so as not clipped in writing to wav)
y = .95.*y./max(abs(y));
wavwrite(y, Fs, 'out.wav');
答案 0 :(得分:0)
midi2audio似乎只包含非常基本的声音合成,默认情况下使用频率调制合成。如果你改成简单的正弦波合成可能会听起来更好吗?
[y,Fs] = midi2audio(midi, 'sine')
如果仍然没有削减它,你可能想要使用更复杂的软件工具。
最简单的跨平台方法可能是FluidSynth(也可以通过MacPorts,Homebrew,apt-get,GitHub等各种存储库获得) FluidSynth使用基于样本的声音合成将MIDI指令转换为音频,并且需要SoundFont2格式的样本库才能使其工作。其中一个可以找到here。
对此进行排序后,您需要做的就是在MIDI文件中输入WAVE文件:将其输入终端/控制台:
fluidsynth -F out.wav path-to-fm2-file in.mid