研究テーマ->音楽ソフトの開発->準備  
  MIDIを扱うソフトの開発について紹介します。  
MIDIとWAVを同時に扱うソフトの開発
MIDIとWAVとを同時に扱うソフトを開発したいというようなことがあるかもしれません。たとえば、最近のMidiシーケンサーは、Midiデータを入力して再生できるというだけでなく、Wav形式のデータも録音して、midiと同期させて再生できるようになっています。私の場合は、カラオケのソフトに、歌の採点の機能を組み込む際に、Midiを再生しながら、Wavを録音するというソフトを作ったことがあります。
それぞれの機能を、別々に作成するのは難しくないのですが、タイミングをピッタリ一致させるのは難しいです。
主な問題は、
(1)Wavの録音は、録音開始のAPIを呼び出して、すぐに始まるわけではない(数ミリ秒遅れる)
(2)マルチメディアタイマーを使用しても、Midiを再生していると、実際にあるべきタイミングから、だんだんズレてくる
などです。
(2)は、何のことかというと、Midiデータの中みから、それぞれの音が実際に発音されるのが何ミリ秒後かということが計算できますが、これが計算上の時間と、実際に鳴る時間とがズレていくということです。曲の後ろになるほど、ズレが蓄積されて、ズレが大きくなっていきます。
このようなことから考えて、MIDIとWAVとを同時に扱う場合、はじめからズレるものと想定して、両者を同期させるための仕組みを組み込んでおく必要があります。
ポイント
マルチメディアタイマーによるmidi再生は正確ではない