MIDIファイルを使った自動作曲の試み,いきなりつまずく
Mathematicaで,MIDIファイルを使った自動作曲を試みた.
しかし,Mathematica内でMIDIをwavとして出力する,効率のよい方法がなかった.
とりあえず,正弦波で合成するものを書いたが,処理が悲劇的に遅い.
たった1秒,4つの正弦波を合算するだけのものを,何十分もかかってしまった.
それどころか,Mathematicaで既に生成したMIDIファイル群を,wavファイル化するモノまで書いている.
それでもOctaveさんは,扱うデータ,スクリプト,モニタ出力の長さ次第ではストップするし,やはり重い.
結局,C言語なりで素朴に自分で書いた方が,早いし手っ取り早いかもしれない.
ところで,Mathematicaさんで出力したMIDIファイル,各音の終了タイムの情報と思しき箇所の値が,どうもおかしい気がする.
私が横着して与えるべき値を省いていた可能性もある.検討します.
なお,MATLAB/Octaveでは,MIDIを扱う関数群は標準で用意されていない模様.
調べてみると,以下の2つが一般的なToolboxのようだ.
http://www.kenschutte.com/midi
https://www.jyu.fi/hum/laitokset/musiikki/en/research/coe/materials/miditoolbox/
加えて,http://cs.uccs.edu/~cs525/midi/midi.html に掲載の例が,簡潔で感動した.