MIDI再生部分を考える。

公開:2010-12-20 08:00
更新:2020-02-15 04:36
カテゴリ:windows,sted2,midi,c++,audio

MIDI IN/OUTができるようになったところで、次にしようと思っているのはMIDIデータの読み込みと演奏である。
演奏部分はXS-1+サウンドフォントを使って再生できるようにしたいとか考えている。

大まかな仕組み

  1. スタンダードMIDI・RCP形式のファイルを読み込む
  2. VSTインターフェースを経由してXS-1に渡し、Waveデータをもらう
  3. WaveデータをWASAPIに渡して音を鳴らす

スタンダードMIDI・RCP形式のファイルを読み込む

STed2およびRecopを参考にしながら、スタンダードMIDIファイルおよびRCP形式のデータを読み込むコードをつくる。

VSTインターフェースを経由してXS-1に渡し、Waveデータをもらう。

XS-1はVSTi版を使おうと思うが、32bit DLLなのでそのままで64bitアプリから使うことはできない。32bit DLLを64bitコードから使う方法はあるようだが、簡単にはいかないようだ。
http://www.dnjonline.com/article.aspx?ID=jun07_access3264
VSTiにアクセスさえできれば後はMIDIメッセージを渡してWaveデータ(float)をもらうだけである。

Timidiy++のソースコードをベースに64ビット化するという手もあるので、その線も探ってみることにする。

WaveデータをWASAPIに渡して音を鳴らす

VSTiからもらったWaveデータをWASAPIに渡して音を鳴らす。共有モードだとfloatでデータを渡せそうな気もするのでちょっと調べてみることにする。

とりあえずはファイルの読み込みからすすめようかな。