存在は、皆さんも知っていることと思います。Windowsが提供するシステムコンポーネントの1つです。ハードウェアの持つ能力を直接制御することによって、できる限り細かく、高速な機能を提供できるように設計されています。用途に応じた複数のコンポーネントを提供しています。以下に、その例をいくつか示します。形で提供されていて、そのオブジェクトクラスの数は多く、使われるインターフェースもまた膨大なものになります。機能のごく一部のみを取り扱っていくつもりです。ほかのインターフェースが提供する機能を使いたい場合は、このページで記述されているものだけでは足りません。関係するヘッダファイルやリファレンス(英語版)が手に入ります。日本語版のリファレンスが公開されているので、そちらもあわせて参照してください。使ってみたいと思います。追加されたコンポーネントで、MIDIなどのメッセージベースのサウンドを再生させる機能を持ち、主に音楽を再生するのに使用されます。合成して実際に音を発生させる、ということが行なわれます。(実際にはもっと複雑ですが。フォーマットのものだけです。ほとんどがうまく演奏されないようです。ファイルを再生させてみることにします。手順は以下のようになります。複雑ですが、注意してみていきましょう。メソッドで初期化する。メソッドを呼び出してパフォーマンスにポートを割り当てる。インターフェースを取得する。インターフェースを取得する。指定し、SMF(スタンダードMIDIファイル)として再生されるように設定する。指定し、音色データをダウンロードしてパフォーマンスに割り当てる。メソッドでセグメントを再生する。指定し、音色データをアンロードする。メソッドでパフォーマンスオブジェクトをクローズする。メソッドを呼び出して、オブジェクトを解放する。各メソッドのインデックスなどの定義は、定義用のスクリプトを別ファイル(def.as)で作成しておきます。パフォーマンスオブジェクト(以下パフォーマンスと呼ぶ)が演奏全体の管理・処理を行ないます。インターフェースを取得することから行ないます。パフォーマンスのクラスIDは{d2ac2881-b39b-11d1-8704-00600893b1bd}です。インターフェースのインターフェースIDは{07d43d03-6523-11d2-871d-00600893b1bd}になります。命令に渡すことで、インターフェースポインタを取得できます。メソッドを呼び出して、パフォーマンスを初期化しなくてはなりません。インターフェイスポインタを指定しなければいけないことになっています。オブジェクトが1つのプロセス1つだけしか作成できないことになっているためです。オブジェクトが作成され管理されます。作成に使うウィンドウハンドルを指定します。指定することで、前面ウィンドウが指定されます。3ポートの割り当て次に、パフォーマンスにポートを割り当てます。メソッドを呼び出します。ローダーオブジェクト(以下ローダーと呼ぶ)が、他のオブジェクトのロードを行ないます。スタンダードMIDIファイル(SMF)のロードもローダーで行なうことができます。インターフェースを取得しなくてはなりません。ローダーのクラスIDは{d2ac2892-b39b-11d1-8704-00600893b1bd}です。インターフェースのインターフェースIDは{2ffaaca2-5dca-11d2-afa6-00aa0024d8b6}になります。命令に渡すことで、ローダーのインターフェースポインタを取得できます。セグメントオブジェクト(以下セグメントと呼ぶ)は、シーケンス化されたサウンドデータを表すオブジェクトです。1つのSMFのデータを、1つのセグメントオブジェクトとして扱います。メソッドを呼び出します。構造体は以下のように定義されています。