Zero3用のプログラムを何か作りたいなと思っているんですが、簡単に作れそうなものってほぼ作られてるんですね。さて何を作ろう・・・
今日思いついたのが、自分にできることと言えばPsmPlayerをZero3用に移植すること。MIDI再生のAPIを使えば何とかなるだろうと調べたところ、Windows MobileではMIDIが再生できないことが判明。早速挫折…
なにかフリーのMIDIドライバがないか探したんですが、ソフト音源を内蔵したMIDI再生ソフトはいくつかあったんですが、外から呼んで使うのは無理そう。
えーい、最終手段でソフト音源まで自作してしまえー!ってことで、まずは調査を開始することにしました。PsmPlayer for Windows Mobileプロジェクト始動です(^^; MIDI音源の自作は無理だとしても、調査経過をブログに書いておけば、誰か作ってくれないかと(他力本願・・・(^^;;;)
大まかな流れは、MIDIをWAVEに変換して鳴らす。幸い(限りなく不幸中のですが)、Windows MobileでもWAVEは再生でき、Sound APIも用意されていました。
問題としては、和音を再生するには、SoundAPIでは同時発音できないので、波形を重ねてあげないといけない。ただ、波形の重ね合わせは単純な足し算でよさそうなのでなんとかなりそう。
2つめは、1曲分のWAVファイルを作ると膨大になってしまうので、WAVデータを作りながら再生させないといけない。低レベルAPIを使うしかなさそう。
3つめは、WAVEへの音色変換ですが、DLSファイルを利用しようと考えてます。どうやらWindowsにもgm.dlsというファイルが音色ファイルが標準で入っているようです。まだバイナリエディタで眺めただけですが、RIFF形式のファイルに音色データとしてWAVEファイルが沢山埋め込まれているようです。これなら何とかなりそう???