まずはMIDIに関連するクラス作りから始めている。Sound TrackerやVST Hostを作りかけては挫折しているので、MIDI周りのコードはざっくりとは理解しているが細かなところはすっかり忘れている。
年齢を追うごとに記憶力は減退していくな。やっぱり。僕も若い頃はほとんどメモを取らなかったけれど最近はメモを取らないと不安でしょうがない。
それはさておき、つくらなくてはいけないのは、
- MIDI IN/OUTコード
- SMFファイルのRead/Write
- RCPファイルのRead/Write
- MIDI演奏コード
- MIDI編集コード
- ソフトMIDIシンセのコード
MIDIインターフェース自体は十分に枯れているし、Windows3.1からサポートされているのでMIDI IN/OUT周りのコードもネットにたくさんある。その中で下記のコードはなかなかよさそうだ。
Wrapper Library for Windows MIDI API
http://www.codeproject.com/KB/audio-video/midiwrapper.aspx
Sound TrackerやVST Hostに取り組んで中途で投げ出したコードの中にMIDI INの実装してみているので、そのコードもチェックしてみよう。
MIDI再生部分はもうマルチメディア・タイマの出番はないだろうね。今時はスレッドで時間管理して再生するのが普通なのだろうとか思っていたら比較的新しめの下記記事が。
楽しいハック講座(1) マルチメディアタイマー
http://blogs.msdn.com/b/windows_multimedia_jp/archive/2009/02/16/9425129.aspx
楽しいハック講座(3) マルチメディア タイマー その 2
http://blogs.msdn.com/b/windows_multimedia_jp/archive/2009/10/12/3-2.aspx
なかなかディープな内容だ。
そういえばMIDIマッパーとかいう機能があったけど、どんな機能だったっけ?すっかり忘れてしまっている。これもおさらいしてみなければいけないな。なんとなくobsoleteな感じがするが。
あ、さらにDirect Musicってのもあったな。これは完全にobsoleteだな。
できればソフトウェアMIDIシンセのコードを漁ってコンパイルし直して組み込んでみたいのだけれど、TiMidity++あたりがいいだろうか。
TiMidity++ windows synthesizer(TWSYNTH)
http://sourceforge.jp/projects/twsynth/
TiMidity++をチェックしていたらLMMSの存在に気がついた。
LMMS
http://lmms.sourceforge.net/
これはソースコードもあるし、早速中身を見てみようとか思ってみたり。
あ、そうだRECOPも久しぶりにチェックしてみるか。
RECOPのページ
http://hp.vector.co.jp/authors/VA003493/recop/index.htm
こんなふうにしてリソースを追ってばかりで実装は一向に進まないのだが、気持ちはなぜか充実感で満たされてしまう私なのである。