ぼちぼちと実装を始めることにする。
ファイルの読み込み部分はboost.asioか、もしくはAPIでゴリゴリ書くかする。スレッドはboost.threadで管理する。読み込んだファイルの再生はwasapiを以前いじった時のテストコードをベースに作る。最初は共有モードで作ってみようと思っている。サンプルレートのコンバートなどをAPI側に任せることができたと思うので、楽できそうなので。それと引換に音質は若干悪くなってしまう。排他モードだとビット・パーフェクト再生が可能となるけど、再生できるWAVファイルフォーマットがサウンドI/Fがサポートされているものに限定されてしまう。さらにフォーマットが異なる場合自前でコンバートする必要がある。
読み込み部分を作る前に、wavファイルフォーマットのおさらいをしておくことにする。
UIをどうしようか。ファイルを選べるようにして、選んだファイルを再生できるようにするか。複数ファイルをミックスする昨日もほしいけどそれは後で。再生位置を表示するようにして自由に位置を移動できるようにするかな。後再生・停止・一時停止のボタンも容易するか。とりあえずはウェーブファイルの波形をDirect2Dで表示するようにしようか。するとUIは下記のようになるかな。
当初はダイアログでつくろうかな。これくらいならボタンを自前で生成してもよいかもしれないが。VC2010はリソースエディタがないから、reseditをつかってダイアログ・リソースを作ることにしよう。
とりあえずこんな感じで作っていくことにする。