' dmplugin.sbp - This module contains the API for plugins for the DirectMusic performance layer Class IDirectMusicTool Inherits IUnknown Public 'IDirectMusicTool Abstract Function Init(pGraph As *IDirectMusicGraph) As DWord Abstract Function GetMsgDeliveryType(pdwDeliveryType As DWordPtr) As DWord Abstract Function GetMediaTypeArraySize(pdwNumElements As DWordPtr) As DWord Abstract Function GetMediaTypes(padwMediaTypes As **DWord, dwNumElements As DWord) As DWord Abstract Function ProcessPMsg(pPerf As *IDirectMusicPerformance, pPMSG As *DMUS_PMSG) As DWord Abstract Function Flush(pPerf As *IDirectMusicPerformance, pPMSG As *DMUS_PMSG, rtTime As REFERENCE_TIME) As DWord End Class Class IDirectMusicTool8 Inherits IDirectMusicTool Public 'IDirectMusicTool8 Abstract Function Clone(ppTool As **IDirectMusicTool) As DWord End Class ' The following flags are sent in the IDirectMusicTrack::Play() method inside the dwFlags parameter Const Enum DMUS_TRACKF_FLAGS DMUS_TRACKF_SEEK = 1 'set on a seek DMUS_TRACKF_LOOP = 2 'set on a loop (repeat) DMUS_TRACKF_START = 4 'set on first call to Play DMUS_TRACKF_FLUSH = 8 'set when this call is in response to a flush on the perfomance DMUS_TRACKF_DIRTY = &H10 'set when the track should consider any cached values from a previous call to GetParam to be invalidated 'The following flags are DX8 only. DMUS_TRACKF_NOTIFY_OFF = &H20 'tells track not to send notifications. DMUS_TRACKF_PLAY_OFF = &H40 'tells track not to play anything (but can still send notifications.) DMUS_TRACKF_LOOPEND = &H80 'set when the end of range is also a loop end. DMUS_TRACKF_STOP = &H100 'set when the end of range is also end of playing this segment. DMUS_TRACKF_RECOMPOSE = &H200 'set to indicate the track should compose. DMUS_TRACKF_CLOCK = &H400 'set when time parameters are in reference (clock) time. Only valid for PlayEx(). End Enum ' The following flags are sent in the IDirectMusicTrack8::GetParamEx() and SetParamEx() methods ' inside the dwFlags parameter. Const DMUS_TRACK_PARAMF_CLOCK = &H01 'set when the time is measured is in reference (clock) time Class IDirectMusicTrack Inherits IUnknown Public 'IDirectMusicTrack Abstract Function Init(pSegment As *IDirectMusicSegment) As DWord Abstract Function InitPlay(pSegmentState As *IDirectMusicSegmentState, pPerformance As *IDirectMusicPerformance, ppStateData As DWordPtr, dwVirtualTrackID As DWord, dwFlags As DWord) As DWord Abstract Function EndPlay(pStateData As VoidPtr) As DWord Abstract Function Play(pStateData As VoidPtr, mtStart As MUSIC_TIME, mtEnd As MUSIC_TIME, mtOffset As MUSIC_TIME, dwFlags As DWord, pPerf As *IDirectMusicPerformance, pSegSt As *IDirectMusicSegmentState, dwVirtualID As DWord) As DWord Abstract Function GetParam(ByRef rguidType As GUID, mtTime As MUSIC_TIME, pmtNext As *MUSIC_TIME, pParam As VoidPtr) As DWord Abstract Function SetParam(ByRef rguidType As GUID, mtTime As MUSIC_TIME, pParam As VoidPtr) As DWord Abstract Function IsParamSupported(ByRef rguidType As GUID) As DWord Abstract Function AddNotificationType(ByRef rguidNotificationType As GUID) As DWord Abstract Function RemoveNotificationType(ByRef rguidNotificationType As GUID) As DWord Abstract Function Clone(mtStart As MUSIC_TIME, mtEnd As MUSIC_TIME, ppTrack As **IDirectMusicTrack) As DWord End Class Class IDirectMusicTrack8 Inherits IDirectMusicTrack Public 'IDirectMusicTrack8 Abstract Function PlayEx(pStateData As VoidPtr, rtStart As REFERENCE_TIME, rtEnd As REFERENCE_TIME, rtOffset As REFERENCE_TIME, dwFlags As DWord, pPerf As *IDirectMusicPerformance, pSegSt As *IDirectMusicSegmentState, dwVirtualID As DWord) As DWord Abstract Function GetParamEx(ByRef rguidType As GUID, rtTime As REFERENCE_TIME, prtNext As *REFERENCE_TIME, pParam As VoidPtr, pStateData As VoidPtr, dwFlags As DWord) As DWord Abstract Function SetParamEx(ByRef rguidType As GUID, rtTime As REFERENCE_TIME, pParam As VoidPtr, pStateData As VoidPtr, dwFlags As DWord) As DWord Abstract Function Compose(pContext As *IUnknown, dwTrackGroup As DWord, ppResultTrack As **IDirectMusicTrack) As DWord Abstract Function Join(pNewTrack As *IDirectMusicTrack, mtJoin As MUSIC_TIME, pContext As *IUnknown, dwTrackGroup As DWord, ppResultTrack As **IDirectMusicTrack) As DWord End Class