shingoushori's dialy

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

MIDIファイルを使った自動作曲の試み,いきなりつまずく

Mathematicaで,MIDIファイルを使った自動作曲を試みた.
しかし,Mathematica内でMIDIをwavとして出力する,効率のよい方法がなかった.
とりあえず,正弦波で合成するものを書いたが,処理が悲劇的に遅い.
たった1秒,4つの正弦波を合算するだけのものを,何十分もかかってしまった.

仕方なく,MATLAB/Octaveで同じモノを書いてる.
それどころか,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 に掲載の例が,簡潔で感動した.