Nicotto Town


毎日えんやこらせっせ


Windwosで音を鳴らす

 だいたい判ったと思うので、少しまとめてみる。

 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はやめて、ちゃんとした開発環境に移ろうとしかけたもんな。そんな事したら、もっとどっぷり遊んでしまう。




Copyright © 2025 SMILE-LAB Co., Ltd. All Rights Reserved.