Microsoft DirectX 8.0 (C++)

PlayMotif

説明

PlayMotif サンプルは、セカンダリ セグメントとして再生されるモチーフをプライマリ セグメントのリズムに割り当てるさまざまな方法を示す。

パス

ソース :(SDK ルート)\Samples\Multimedia\DirectMusic\PlayMotif

実行可能ファイル :(SDK ルート)\Samples\Multimedia\DirectMusic\Bin

ユーザーズ ガイド

デフォルトのセグメントを再生するか、モチーフを含むスタイルに基づく別の DirectMusic セグメントをロードする。リスト ボックスからパターンを 1 つ選択し、[Align Option] ボタンを 1 つ選択して、[Play Motif] をクリックする。プライマリ セグメントの適切な境界に到達するまで、モチーフの再生は開始されない。

プログラミング メモ

PlayMotif サンプルは、PlayAudio サンプルと形式がよく似ている。このサンプルを基本としたノートのプログラミングの詳細については、「PlayAudio」を参照すること。

ファイルをロードする際、PlayMotif は、PlayAudio と同じ手順を実行した後、LoadSegmentFile 関数を実行する。

  1. ループ処理により、セグメントに含まれるスタイル内のモチーフを検索する。IDirectMusicSegment8::GetParam を呼び出して、GUID_IDirectMusicStyle とインクリメントするインデックスを渡し、各スタイルを取得する。このメソッドは、次に検索すべきスタイルがなくなると失敗する。
  2. 各スタイルに対して、IDirectMusicStyle8::EnumMotif を呼び出して、インクリメントするモチーフ インデックスを渡す。この呼び出しは、そのインデックスを使ってモチーフ名を取得する。S_FALSE が返された場合は、そのスタイル内にほかにモチーフがないことを意味する。

モチーフ名を IDirectMusicStyle8::GetMotif に渡して、モチーフへの IDirectMusicSegment8 インターフェイス ポインタを取得し、これをリスト ボックス内の項目と関連付けられたデータとして保存する。

[Play Motif] をクリックすると、OnPlayMotif 関数によって次のタスクが実行される。

  1. インターフェイスから目的のアライメント オプションを取得する。
  2. リスト ボックスから選択されたモチーフとその MOTIF_NODE 項目データを取得する。MOTIF_NODE 構造体は、現在再生されている演奏の回数のカウントと、モチーフの IDirectMusicSegment インターフェイスへのポインタを保持する。
  3. IDirectMusicPerformance8::PlaySegment を呼び出して、モチーフの IdirectMusicSegment、DMUS_SEGF_SECONDARY などのフラグ、およびアライメント オプションを渡す。

DirectMusic 通知は、通常、PlayAudio 内で処理される。ただし、このアプリケーションは、開始または終了するモチーフのノートを取得してMOTIF_NODE 構造体内の演奏カウントを更新する。演奏カウントが 0 よりも大きいと、ユーザー インターフェイスを更新してそのモチーフが再生中であることを示す。

参照

モチーフの使い方