使用MATLAB将.mid转换为.wav

时间:2016-10-27 03:38:29

标签: matlab audio wav midi

我一直在使用这个库(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');

1 个答案:

答案 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