Windwosで音を鳴らす
- カテゴリ:パソコン/インターネット
- 2011/12/12 21:33:06
だいたい判ったと思うので、少しまとめてみる。
Midi等ではなく、直接的に音を鳴らす為のAPIは標準では、ほぼこの3種類。
1..Net FrameWork
2.DirectX
3.レガシー(winmm.dll)
ほぼなんて微妙な言い回しなのは、始めの二つが最初からWindwosに搭載されてるとは限らなくて、完全に標準と言い切れないから。特にDirectXはバージョンによって使い方が相当違う。バージョン依存性が強すぎる。この中で楽器用に一番向いてるのは、DirectXかなとか思う。
DirectXは元々ゲーム用のAPIだけど、楽器は物凄くリアルタイム性を要求されてて、ある意味究極の音ゲーとも言えるのが理由。もっとも、DAWなんかはOSのオーバーヘッドを極端に嫌ってて、DirectXすら生ぬるいってんでもっと下の階層のオーディオストリームだかを使う。ASIOドライバーなんてのが、それ。Midiキーボードの入力や録音する音が微妙に遅れるのを、「レイテンシーが大きい(多い)」とか言うけど、OSやらなんやらが色々親切な事をしようとするので、時間が掛かってしまう訳。シャキシャキ動かしたいのに、大きなお世話だって話。
いずれにしても開発環境としてエクセルを使う限りは、レガシーしか道は無いみたい。そして、レガシーにも WavOut*** なる最低階層のAPIが在る事を発見。ついに辿り着きましたな。VBAでもタイマーのコールバック関数が書けるみたいだし。VBAはなかなかどうして、一丁前の開発環境だ。 WavOut*** を使おうとすると、自分で Wave データを作ったり、再生バッファの管理をしないといけないが、逆にVBAのスピードさえ間に合えば、どんな音でも出せるって事。
自分に取って一番ありがたいと思えるのは、おそらくWin2KからWin7までの総てのWindwosで動きそうな事。MSが互換性の維持に必至になってくれてるのは、ありがたい事だ。そして、フィルター不要の音質変更アイデアを思いついてしまった。カオシレーターもどきを作れそうだ。ぼちぼち弄って、物になるかどうか試してみよう。
MacだとOpneALになるかな、昔から触ってる人はCore Audioの方が慣れてて使い易いだろうけど。
あ~、しかし、色々調べてプログラムするのは楽しすぎる。現実逃避だから楽しく感じてるのは判ってるのに、やめられない。VBAはやめて、ちゃんとした開発環境に移ろうとしかけたもんな。そんな事したら、もっとどっぷり遊んでしまう。