shingoushori's dialy

音信号処理を専ら研究していた元博士後期課程の学生によるメモ

PythonでMIDIをWAVにする ...

PythonMIDI をいじってみています。
とりあえず、pretty_midi にしています。

http://shingoushori.hatenablog.jp/entry/2017/06/11/233154

今回は、MIDIをWAVにしてみました。

... 結論
・FluidSynth 頼み
・サウンドフォントっていうのでMIDIをWAVに置き換える
・WAVファイルへの書き出しやらは SciPy で

[FluidSynth]
MIDIをWAVにできそうなあれこれは、いくつか見かけます。
しかし、結局はFluidSynthを呼び出すだけのもの...に見えます。

midi2audio 0.1.1 : Python Package Index

何より、pretty_midi は FluidSynth を使って合成する関数を装備しています。

pretty_midi — pretty_midi 0.2.8 documentation

自由研究の準備(その9)PythonでのMIDI操作(SMF編) - クーの自由研究

ただし、使うのにpyFluidSynth が必要だったような。

pyFluidSynth 1.2.4 : Python Package Index

[サウンドフォント ~ SoundFont]
FluidSynthで置き換えるのに、サウンドフォントが必要だそうだ。

FluidSynth / Wiki / SoundFont

↓ ここのページで色々紹介されていますな。

サウンドフォント | MuseScore

[wav file]
pretty_midi の FluidSynth を使って合成する関数〜の出力は、np.ndarray らしい。
... で np.ndarray をwavファイルに書き出す方法で手軽そうだったのが、
scipy.io.wavfile.write かなと。

scipy.io.wavfile.write — SciPy v0.19.1 Reference Guide

...
こんな感じで地味にめんどくさいですね。
準備ができれば数行で終わってしまうので...まあ。

出来上がったWAVファイルは、懐かしい感じのMIDIらしい音でした。
np.ndarray なので、いよいよ信号処理です。