Microsoft DirectX 8.1 (C++) |
A motif is a special kind of
All the motifs authored into a style become available to you as soon as you have loaded that style. To get a particular motif ready for playback, call the IDirectMusicStyle8::GetMotif method, passing in the following parameters:
The following example function obtains and plays the motif whose name is passed in as pwszMotifName:
void PlayMotif(IDirectMusicPerformance8* pPerf,
IDirectMusicStyle8* pStyle,
WCHAR* pwszMotifName)
{
IDirectMusicSegment* pSeg;
// Get the motif segment from the style. Check for S_OK
// specifically, because GetMotif() returns S_FALSE if it
// does not find the motif.
if (S_OK == pStyle->GetMotif(pwszMotifName, &pSeg))
{
// Play the segment.
pPerf->PlaySegment(pSeg,
DMUS_SEGF_BEAT | DMUS_SEGF_SECONDARY,
0,
NULL);
pSeg->Release();
}
}
Note that pSeg is played as a secondary segment, because a motif is normally played over a primary segment. You cannot play a motif as a primary segment, because it does not have a chord track or band track. If you do want to play a motif against silence, create a primary segment from a style that has only blank patterns, and keep that segment playing while you play the motif.