使用 MATLAB 将 .mid 转换为 .wav

Convert .mid to .wav using MATLAB

我一直在使用这个库 (http://kenschutte.com/midi) 处理 MIDI 文件,这里的功能非常有用。但是,无论我输入什么 midi,midi2audio() 方法都只会产生乱码的 .wav 文件(尽管可以识别音符并且正在播放正确的 midi)。有没有其他人使用这个函数库和 运行 解决同样的问题,如果是这样,我该如何解决这个问题?或者我可以在某个地方在线使用另一个功能来做同样的事情吗?

下面是用于生成 .wav 文件的代码(从上面的 link 复制粘贴)

[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');

midi2audio 似乎只包含非常基本的声音合成,默认情况下频率调制合成。如果换成简单的正弦波合成可能会更好听?

[y,Fs] = midi2audio(midi, 'sine')

如果仍然不能解决问题,您可能需要使用更复杂的软件工具。

最简单的跨平台方法可能是 FluidSynth(也可以通过各种存储库获得,例如 MacPorts、Homebrew、apt-get、GitHub…) FluidSynth 使用基于样本的声音合成将 MIDI 指令转换为音频,并且需要 SoundFont2 格式的样本库才能工作。 here.

就是其中之一

解决了这个问题后,要从您的 MIDI 文件制作一个 WAVE 文件,您只需将其输入到您的 terminal/console:

fluidsynth -F out.wav path-to-fm2-file in.mid