Platform SDK: DirectX

モチーフの使い方

モチーフとは、通常はインタラクティブ イベントに応じて演奏されるもので、基本的なスタイル パターン上で演奏されることを意図した、スタイル内の特種なパターンである。モチーフには、ほかのパターンと同様の複雑さを与えることができる。また、バリエーションや複数の音色パートを備えることも可能であるが、通常はさまざまなバックグラウンド パターンと組み合わせても適切に聞こえる、短い単純な音型である。カスタム DLS 音色で演奏するサウンド エフェクトにもなる。

[C++]

どのモチーフもスタイルの一部としてオーサリングされるので、スタイルをロードするとすぐにモチーフを利用できる。特定のモチーフを再生できるようにするには、IDirectMusicStyle::GetMotif メソッドを呼び出し、次のパラメータを渡す。

次のコード例では、pwszMotifName で名前を指定されたモチーフを取得し、演奏する。

void PlayMotif(IDirectMusicPerformance* pPerf, 
         IDirectMusicStyle* pStyle, 
         WCHAR* pwszMotifName)
{
  IDirectMusicSegment* pSeg;
 
// スタイルからモチーフ セグメントを取得する。GetMotif() は、
// モチーフを見つけられなかった場合は S_FALSE を返すので、
// S_OK が返されることを確認する。
 
  if (S_OK == pStyle->GetMotif(pwszMotifName, &pSeg))
  {
/* セグメントを演奏する。DMUS_SEGF_BEAT は、現在演奏中のセグメントが
ある場合に、次の拍を演奏することを意味する。DMUS_SEGF_SECONDARY は、
セグメントをセカンダリ セグメントとして演奏することを意味する。
セカンダリ セグメントは、現在演奏中のプライマリ セグメント上で演奏される。0 は、
すぐに演奏を開始することを意味する。最後の NULL は、
再生の状態を追跡する必要がないため、
最後のパラメータに IDirectMusicSegmentState* を返さないことを意味する。*/
 
    pPerf->PlaySegment(pSeg, 
                       DMUS_SEGF_BEAT | DMUS_SEGF_SECONDARY,
                       0, 
                       NULL);
    pSeg->Release();
  }
}

通常、モチーフはプライマリ セグメントに重ねて演奏されるため、pSeg はセカンダリ セグメントとして演奏される点に注意すること。モチーフにはコード トラックやバンド トラックがないため、これをプライマリ セグメントとして演奏することはできない。無音の状態のときにモチーフを演奏する場合は、スタイルから空白のパターンだけを含むプライマリ セグメントを作成し、モチーフを演奏する間、このセグメントを演奏しておく。

[Visual Basic]

どのモチーフもスタイルの一部としてオーサリングされるので、スタイルをロードするとすぐにモチーフを利用できる。特定のモチーフを再生できるようにするには、IDirectMusicStyle::GetMotif メソッドを呼び出し、モチーフの名前を渡す。この情報はスタイルのドキュメントで確認するか、DirectMusicStyle.GetMotifName メソッドを使ってインデックス値から取得する。

次のコード例では、スタイルの最初のモチーフを取得して演奏している。

' style は DirectMusicStyle である。
' perf は DirectMusicPerformance である。
Dim MotifName As String
Dim segMotif As DirectMusicSegment
 
MotifName = style.GetMotifName(0)
Set segMotif = style.GetMotif(MotifName)
Call perf.PlaySegment(segMotif, DMUS_SEGF_SECONDARY, 0)

通常、モチーフはプライマリ セグメントに重ねて演奏されるため、segMotif はセカンダリ セグメントとして演奏される点に注意すること。モチーフにはコード トラックやバンド トラックがないため、これをプライマリ セグメントとして演奏することはできない。無音の状態のときにモチーフを演奏する場合は、スタイルから空白のパターンだけを含むプライマリ セグメントを作成し、モチーフを演奏する間、このセグメントを演奏しておく。