【Python】MIDIをwavファイルに変換
MIDIをwavファイルに変換するためにFluidSynthというライブラリを使った。結構めんどくさかった。
手順はほとんど下記のとおり。
参考:(Windows) pythonでMIDIからWAVを出力 - Qiita
Windowsだからかもしれないけど、参考ページにあるようにライブラリのファイルを修正しないといけなかった。
vcpkgのインストール
- ダウンロードする。https://github.com/Microsoft/vcpkg.git
- 解凍する。
- 解凍したフォルダに移動して下記を実行。
cd vcpkg .\bootstrap-vcpkg.bat .\vcpkg integrate install #管理者権限が要求されるので許可する ※下記コマンドの前にVisual Studioに言語パック(英語)をインストール .\vcpkg install sdl2 curl # 不要かもしれないけど一応下記コマンド。 .\vcpkg integrate powershell
fluidsynthをインストール
- ダウンロードする。https://github.com/FluidSynth/fluidsynth
- 解凍する。
- 解凍したフォルダに移動して下記を実行。
cd path/to/fluidsynth-2.0.5 path/to/vcpkg install fluidsynth:x64-windows # 上記コマンドでインストールされるので、下記は不要 # path/to/vcpkg install glib:x64-windows
pyfluidsynthをインストール
- pip install pyfluidsynth
- path\to\Anaconda3\Lib\site-packages\fluidsynth.pyを修正する。 参考ページの方に従ってファイルを修正。
#変更前 # lib = find_library('fluidsynth') or \ # find_library('libfluidsynth') or \ # find_library('libfluidsynth-1') #変更後 lib = find_library('fluidsynth') or \ find_library('libfluidsynth') or \ find_library('libfluidsynth-2')以下の変数定義をコメントアウト。
fluid_synth_get_channel_info fluid_synth_set_reverb_full fluid_synth_set_chorus_full fluid_synth_get_chorus_speed_Hz fluid_synth_get_chorus_depth_ms fluid_synth_set_midi_router
3. ビルドしたfluidsynthのパスを上記ファイルの先頭に追加。
improt sys sys.path.append("path\\to\\vcpkg\\installed\\x64-windows\\bin") #バックスラッシュを使うときは二つずつにしないといけない。エスケープ文字になっちゃうから。
確認
import fluidsynth
ができればOK