Microsoft DirectX 8.0 (C++) |
モチーフとは、通常はインタラクティブ イベントに応じて演奏されるもので、基本的なスタイル パターン上で演奏されることを意図した、スタイル内の特種なパターンである。モチーフには、ほかのパターンと同様の複雑さを与えることができる。また、バリエーションや複数の音色パートを備えることも可能であるが、通常はさまざまなバックグラウンド パターンと組み合わせても適切に聞こえる、短い単純な音型である。カスタム DLS 音色で演奏するサウンド エフェクトにもなる。
どのモチーフもスタイルの一部としてオーサリングされるので、スタイルをロードするとすぐにモチーフを利用できる。特定のモチーフを再生できるようにするには、IDirectMusicStyle8::GetMotif メソッドを呼び出し、次のパラメータを渡す。
次のサンプル コードでは、pwszMotifName で名前を指定されたモチーフを取得し、演奏する。
void PlayMotif(IDirectMusicPerformance8* pPerf, IDirectMusicStyle8* pStyle, WCHAR* pwszMotifName) { IDirectMusicSegment* pSeg; // スタイルからモチーフ セグメントを取得する。GetMotif() は、 // モチーフを見つけられなかった場合は S_FALSE を返すので、 // S_OK が返されることを確認する。 if (S_OK == pStyle->GetMotif(pwszMotifName, &pSeg)) { // セグメントを演奏する。 pPerf->PlaySegment(pSeg, DMUS_SEGF_BEAT | DMUS_SEGF_SECONDARY, 0, NULL); pSeg->Release(); } }
通常、モチーフはプライマリ セグメントに重ねて演奏されるため、pSeg はセカンダリ セグメントとして演奏される点に注意すること。モチーフにはコード トラックやバンド トラックがないため、これをプライマリ セグメントとして演奏することはできない。無音の状態のときにモチーフを演奏する場合は、スタイルから空白のパターンだけを含むプライマリ セグメントを作成し、モチーフを演奏する間、このセグメントを演奏しておく。