' dmusic.sbp - This module contains the API for the DirectMusic performance layer #ifndef _INC_DMUSIC #define _INC_DMUSIC #include #include #include #include TypeDef REFERENCE_TIME = Int64 TypeDef MUSIC_TIME = Long ' For DMUS_PMSG dwFlags Const Enum DMUS_PMSGF_FLAGS DMUS_PMSGF_REFTIME = 1 DMUS_PMSGF_MUSICTIME = 2 DMUS_PMSGF_TOOL_IMMEDIATE = 4 DMUS_PMSGF_TOOL_QUEUE = 8 DMUS_PMSGF_TOOL_ATTIME = &H10 DMUS_PMSGF_TOOL_FLUSH = &H20 DMUS_PMSGF_LOCKTOREFTIME = &H40 DMUS_PMSGF_DX8 = &H80 End Enum Const Enum DMUS_PMSGT_TYPES DMUS_PMSGT_MIDI = 0 DMUS_PMSGT_NOTE = 1 DMUS_PMSGT_SYSEX = 2 DMUS_PMSGT_NOTIFICATION = 3 DMUS_PMSGT_TEMPO = 4 DMUS_PMSGT_CURVE = 5 DMUS_PMSGT_TIMESIG = 6 DMUS_PMSGT_PATCH = 7 DMUS_PMSGT_TRANSPOSE = 8 DMUS_PMSGT_CHANNEL_PRIORITY = 9 DMUS_PMSGT_STOP = 10 DMUS_PMSGT_DIRTY = 11 DMUS_PMSGT_WAVE = 12 DMUS_PMSGT_LYRIC = 13 DMUS_PMSGT_SCRIPTLYRIC = 14 DMUS_PMSGT_USER = 255 End Enum Const DMUS_PCHANNEL_BROADCAST_PERFORMANCE = &HFFFFFFFF 'PMsg is sent on all PChannels of the performance. Const DMUS_PCHANNEL_BROADCAST_AUDIOPATH = &HFFFFFFFE 'PMsg is sent on all PChannels of the audio path. Const DMUS_PCHANNEL_BROADCAST_SEGMENT = &HFFFFFFFD 'PMsg is sent on all PChannels of the segment. Const DMUS_PCHANNEL_BROADCAST_GROUPS = &HFFFFFFFC 'A duplicate PMsg is for each Channels Groups in the performance. Const DMUS_PATH_SEGMENT = &H1000 'Get the segment itself (from a segment state.) Const DMUS_PATH_SEGMENT_TRACK = &H1100 'Look in Track List of Segment. Const DMUS_PATH_SEGMENT_GRAPH = &H1200 'Get the segment's tool graph. Const DMUS_PATH_SEGMENT_TOOL = &H1300 'Look in Tool Graph of Segment. Const DMUS_PATH_AUDIOPATH = &H2000 'Get the audiopath itself (from a segment state.) Const DMUS_PATH_AUDIOPATH_GRAPH = &H2200 'Get the audiopath's tool graph. Const DMUS_PATH_AUDIOPATH_TOOL = &H2300 'Look in Tool Graph of Audio Path. Const DMUS_PATH_PERFORMANCE = &H3000 'Access the performance. Const DMUS_PATH_PERFORMANCE_GRAPH = &H3200 'Get the performance's tool graph. Const DMUS_PATH_PERFORMANCE_TOOL = &H3300 'Look in Tool Graph of Performance. Const DMUS_PATH_PORT = &H4000 'Access the synth. Const DMUS_PATH_BUFFER = &H6000 'Look in DirectSoundBuffer. Const DMUS_PATH_BUFFER_DMO = &H6100 'Access a DMO in the buffer. Const DMUS_PATH_MIXIN_BUFFER = &H7000 'Look in a global mixin buffer. Const DMUS_PATH_MIXIN_BUFFER_DMO = &H7100 'Access a DMO in a global mixin buffer. Const DMUS_PATH_PRIMARY_BUFFER = &H8000 'Access the primary buffer. Const DMUS_PCHANNEL_ALL = &HFFFFFFFB Type DMUS_PMSG dwSize As DWord rtTime As REFERENCE_TIME mtTime As MUSIC_TIME dwFlags As DWord dwPChannel As DWord dwVirtualTrackID As DWord pTool As *IDirectMusicTool pGraph As *IDirectMusicGraph dwType As DWord dwVoiceID As DWord dwGroupID As DWord punkUser As *IUnknown End Type Const DMUS_APATH_SHARED_STEREOPLUSREVERB = 1 Const DMUS_APATH_DYNAMIC_3D = 6 Const DMUS_APATH_DYNAMIC_MONO = 7 Const DMUS_APATH_DYNAMIC_STEREO = 8 ' For DMUS_AUDIOPARAMS dwFeatures Const DMUS_AUDIOF_3D = &H1 Const DMUS_AUDIOF_ENVIRON = &H2 Const DMUS_AUDIOF_EAX = &H4 Const DMUS_AUDIOF_DMOS = &H8 Const DMUS_AUDIOF_STREAMING = &H10 Const DMUS_AUDIOF_BUFFERS = &H20 Const DMUS_AUDIOF_ALL = &H3F ' For DMUS_AUDIOPARAMS dwValidData Const DMUS_AUDIOPARAMS_FEATURES = &H00000001 Const DMUS_AUDIOPARAMS_VOICES = &H00000002 Const DMUS_AUDIOPARAMS_SAMPLERATE = &H00000004 Const DMUS_AUDIOPARAMS_DEFAULTSYNTH = &H00000008 Type DMUS_AUDIOPARAMS dwSize As DWord fInitNow As Long dwValidData As DWord dwFeatures As DWord dwVoices As DWord dwSampleRate As DWord clsidDefaultSynth As GUID End Type ' DMUS_SEGF_FLAGS correspond to IDirectMusicPerformance::PlaySegment Const Enum DMUS_SEGF_FLAGS DMUS_SEGF_REFTIME = 1<<6 '&H40 Time parameter is in reference time DMUS_SEGF_SECONDARY = 1<<7 '&H80 Secondary segment DMUS_SEGF_QUEUE = 1<<8 '&H100 Queue at the end of the primary segment queue (primary only) DMUS_SEGF_CONTROL = 1<<9 '&H200 Play as a control track (secondary segments only) DMUS_SEGF_AFTERPREPARETIME = 1<<10 '&H400 Play after the prepare time (See IDirectMusicPerformance::GetPrepareTime) DMUS_SEGF_GRID = 1<<11 '&H800 Play on grid boundary DMUS_SEGF_BEAT = 1<<12 '&H1000 Play on beat boundary DMUS_SEGF_MEASURE = 1<<13 '&H2000 Play on measure boundary DMUS_SEGF_DEFAULT = 1<<14 '&H4000 Use segment's default boundary DMUS_SEGF_NOINVALIDATE = 1<<15 '&H8000 Play without invalidating the currently playing segment(s) DMUS_SEGF_ALIGN = 1<<16 '&H10000 Align segment with requested boundary, but switch at first valid point DMUS_SEGF_VALID_START_BEAT = 1<<17 '&H20000 In conjunction with DMUS_SEGF_ALIGN, allows the switch to occur on any beat. DMUS_SEGF_VALID_START_GRID = 1<<18 '&H40000 In conjunction with DMUS_SEGF_ALIGN, allows the switch to occur on any grid. DMUS_SEGF_VALID_START_TICK = 1<<19 '&H80000 In conjunction with DMUS_SEGF_ALIGN, allows the switch to occur any time. DMUS_SEGF_AUTOTRANSITION = 1<<20 '&H100000 Compose and play a transition segment, using the transition template. DMUS_SEGF_AFTERQUEUETIME = 1<<21 '&H200000 Make sure to play after the queue time. This is default for primary segments DMUS_SEGF_AFTERLATENCYTIME = 1<<22 '&H400000 Make sure to play after the latency time. This is true for all segments, so this is a nop DMUS_SEGF_SEGMENTEND = 1<<23 '&H800000 Play at the next end of segment. DMUS_SEGF_MARKER = 1<<24 '&H1000000 Play at next marker in the primary segment. If there are no markers, default to any other resolution requests. DMUS_SEGF_TIMESIG_ALWAYS = 1<<25 '&H2000000 Even if there is no primary segment, align start time with current time signature. DMUS_SEGF_USE_AUDIOPATH = 1<<26 '&H4000000 Uses the audio path that is embedded in the segment. DMUS_SEGF_VALID_START_MEASURE = 1<<27 '&H8000000 In conjunction with DMUS_SEGF_ALIGN, allows the switch to occur on any bar. DMUS_SEGF_INVALIDATE_PRI = 1<<28 '&H10000000 invalidate only the current primary seg state End Enum Const DMUS_SEG_REPEAT_INFINITE = &HFFFFFFFF 'For IDirectMusicSegment::SetRepeat Const DMUS_SEG_ALLTRACKS = &H80000000 'For IDirectMusicSegment::SetParam() and SetTrackConfig() - selects all tracks instead on nth index. Const DMUS_SEG_ANYTRACK = &H80000000 'For IDirectMusicSegment::GetParam() - checks each track until it finds one that returns data (not DMUS_E_NOT_FOUND.) Const Enum DMUS_TIME_RESOLVE_FLAGS DMUS_TIME_RESOLVE_AFTERPREPARETIME = DMUS_SEGF_AFTERPREPARETIME DMUS_TIME_RESOLVE_AFTERQUEUETIME = DMUS_SEGF_AFTERQUEUETIME DMUS_TIME_RESOLVE_AFTERLATENCYTIME = DMUS_SEGF_AFTERLATENCYTIME DMUS_TIME_RESOLVE_GRID = DMUS_SEGF_GRID DMUS_TIME_RESOLVE_BEAT = DMUS_SEGF_BEAT DMUS_TIME_RESOLVE_MEASURE = DMUS_SEGF_MEASURE DMUS_TIME_RESOLVE_MARKER = DMUS_SEGF_MARKER DMUS_TIME_RESOLVE_SEGMENTEND = DMUS_SEGF_SEGMENTEND End Enum ' The following flags are sent inside the DMUS_CHORD_KEY.dwFlags parameter Const Enum DMUS_CHORDKEYF_FLAGS DMUS_CHORDKEYF_SILENT = 1 'is the chord silent? End Enum Const DMUS_MAXSUBCHORD = 8 Type DMUS_SUBCHORD dwChordPattern As DWord dwScalePattern As DWord dwInversionPoints As DWord dwLevels As DWord bChordRoot As Byte bScaleRoot As Byte End Type Type DMUS_CHORD_KEY wszName[16-1] As WCHAR wMeasure As Word bBeat As Byte bSubChordCount As Byte SubChordList[DMUS_MAXSUBCHORD-1] As DMUS_SUBCHORD dwScale As DWord bKey As Byte bFlags As Byte End Type Type DMUS_NOTIFICATION_PMSG dwSize As DWord rtTime As REFERENCE_TIME mtTime As MUSIC_TIME dwFlags As DWord dwPChannel As DWord dwVirtualTrackID As DWord pTool As *IDirectMusicTool pGraph As *IDirectMusicGraph dwType As DWord dwVoiceID As DWord dwGroupID As DWord punkUser As *IUnknown guidNotificationType As GUID dwNotificationOption As DWord dwField1 As DWord dwField2 As DWord End Type Const DMUS_MAX_NAME = 64 Const DMUS_MAX_CATEGORY = 64 Const DMUS_MAX_FILENAME = MAX_PATH Type DMUS_VERSION dwVersionMS As DWord dwVersionLS As DWord End Type Type DMUS_TIMESIGNATURE mtTime As MUSIC_TIME bBeatsPerMeasure As Byte bBeat As Byte wGridsPerBeat As Word End Type ' For DMUS_OBJECTDESC dwValidData Const DMUS_OBJ_OBJECT = 1 << 0 'Object GUID is valid. Const DMUS_OBJ_CLASS = 1 << 1 'Class GUID is valid. Const DMUS_OBJ_NAME = 1 << 2 'Name is valid. Const DMUS_OBJ_CATEGORY = 1 << 3 'Category is valid. Const DMUS_OBJ_FILENAME = 1 << 4 'File path is valid. Const DMUS_OBJ_FULLPATH = 1 << 5 'Path is full path. Const DMUS_OBJ_URL = 1 << 6 'Path is URL. Const DMUS_OBJ_VERSION = 1 << 7 'Version is valid. Const DMUS_OBJ_DATE = 1 << 8 'Date is valid. Const DMUS_OBJ_LOADED = 1 << 9 'Object is currently loaded in memory. Const DMUS_OBJ_MEMORY = 1 << 10 'Object is pointed to by pbMemData. Const DMUS_OBJ_STREAM = 1 << 11 'Object is stored in pStream. Type DMUS_OBJECTDESC dwSize As DWord dwValidData As DWord guidObject As GUID guidClass As GUID ftDate As FILETIME vVersion As DMUS_VERSION wszName[DMUS_MAX_NAME-1] As WCHAR wszCategory[DMUS_MAX_CATEGORY-1] As WCHAR wszFileName[DMUS_MAX_FILENAME-1] As WCHAR llMemLength As Int64 pbMemData As BytePtr pStream As *IStream End Type Type DMUS_SCRIPT_ERRORINFO dwSize As DWord hr As DWord ulLineNumber As DWord ichCharPosition As Long wszSourceFile[DMUS_MAX_FILENAME-1] As WCHAR wszSourceComponent[DMUS_MAX_FILENAME-1] As WCHAR wszDescription[DMUS_MAX_FILENAME-1] As WCHAR wszSourceLineText[DMUS_MAX_FILENAME-1] As WCHAR End Type ' Track configuration flags, used with IDirectMusicSegment8::SetTrackConfig() Const DMUS_TRACKCONFIG_OVERRIDE_ALL = 1 'This track should get parameters from this segment before controlling and primary tracks. Const DMUS_TRACKCONFIG_OVERRIDE_PRIMARY = 2 'This track should get parameters from this segment before the primary segment tracks. Const DMUS_TRACKCONFIG_FALLBACK = 4 'This track should get parameters from this segment if the primary and controlling segments don't succeed. Const DMUS_TRACKCONFIG_CONTROL_ENABLED = 8 'GetParam() enabled for this track. Const DMUS_TRACKCONFIG_PLAY_ENABLED = &H10 'Play() enabled for this track. Const DMUS_TRACKCONFIG_NOTIFICATION_ENABLED = &H20 'Notifications enabled for this track. Const DMUS_TRACKCONFIG_PLAY_CLOCKTIME = &H40 'This track plays in clock time, not music time. Const DMUS_TRACKCONFIG_PLAY_COMPOSE = &H80 'This track should regenerate data each time it starts playing. Const DMUS_TRACKCONFIG_LOOP_COMPOSE = &H100 'This track should regenerate data each time it repeats. Const DMUS_TRACKCONFIG_COMPOSING = &H200 'This track is used to compose other tracks. Const DMUS_TRACKCONFIG_CONTROL_PLAY = &H10000 'This track, when played in a controlling segment, overrides playback of primary segment tracks. Const DMUS_TRACKCONFIG_CONTROL_NOTIFICATION = &H20000 'This track, when played in a controlling segment, overrides notification of primary segment tracks. ' Additional track config flags for composing transitions Const DMUS_TRACKCONFIG_TRANS1_FROMSEGSTART = &H400 'Get track info from start of From segment Const DMUS_TRACKCONFIG_TRANS1_FROMSEGCURRENT = &H800 'Get track info from current place in From segment Const DMUS_TRACKCONFIG_TRANS1_TOSEGSTART = &H1000 'Get track info from start of To segment Const DMUS_TRACKCONFIG_DEFAULT = DMUS_TRACKCONFIG_CONTROL_ENABLED or DMUS_TRACKCONFIG_PLAY_ENABLED or DMUS_TRACKCONFIG_NOTIFICATION_ENABLED '----------------- ' Interfaces '----------------- Class IDirectMusicBand Inherits IUnknown Public 'IDirectMusicBand Abstract Function CreateSegment(ppSegment As **IDirectMusicSegment) As DWord Abstract Function Download(pPerformance As *IDirectMusicPerformance) As DWord Abstract Function Unload(pPerformance As *IDirectMusicPerformance) As DWord End Class TypeDef IDirectMusicBand8 = IDirectMusicBand Class IDirectMusicObject Inherits IUnknown Public 'IDirectMusicObject Abstract Function GetDescriptor(pDesc As *DMUS_OBJECTDESC) As DWord Abstract Function SetDescriptor(pDesc As *DMUS_OBJECTDESC) As DWord Abstract Function ParseDescriptor(pStream As LPSTREAM, pDesc As *DMUS_OBJECTDESC) As DWord End Class TypeDef IDirectMusicObject8 = IDirectMusicObject Class IDirectMusicLoader Inherits IUnknown Public 'IDirectMusicLoader Abstract Function GetObject(pDesc As *DMUS_OBJECTDESC, ByRef riid As GUID, ppv As VoidPtr) As DWord Abstract Function SetObject(pDesc As *DMUS_OBJECTDESC) As DWord Abstract Function SetSearchDirectory(ByRef rguidClass As GUID, pwzPath As *WCHAR, fClear As Long) As DWord Abstract Function ScanDirectory(ByRef rguidClass As GUID, pwzFileExtension As *WCHAR, pwzScanFileName As *WCHAR) As DWord Abstract Function CacheObject(pObject As *IDirectMusicObject) As DWord Abstract Function ReleaseObject(pObject As *IDirectMusicObject) As DWord Abstract Function ClearCache(ByRef rguidClass As GUID) As DWord Abstract Function EnableCache(ByRef rguidClass As GUID, fEnable As Long) As DWord Abstract Function EnumObject(ByRef rguidClass As GUID, dwIndex As DWord, pDesc As *DMUS_OBJECTDESC) As DWord End Class Class IDirectMusicLoader8 Inherits IDirectMusicLoader Public 'IDirectMusicLoader8 Abstract Sub CollectGarbage() Abstract Function ReleaseObjectByUnknown(pObject As *IUnknown) As DWord Abstract Function LoadObjectFromFile(ByRef rguidClassID As GUID, ByRef iidInterfaceID As GUID, pwzFilePath As *WCHAR, ppObject As DWordPtr) As DWord End Class Class IDirectMusicGetLoader Inherits IUnknown Public 'IDirectMusicGetLoader Abstract Function GetLoader(ppLoader As **IDirectMusicLoader) As DWord End Class Class IDirectMusicSegment Inherits IUnknown Public 'IDirectMusicSegment Abstract Function GetLength(pmtLength As *MUSIC_TIME) As DWord Abstract Function SetLength(mtLength As MUSIC_TIME) As DWord Abstract Function GetRepeats(pdwRepeats As DWordPtr) As DWord Abstract Function SetRepeats(dwRepeats As DWord) As DWord Abstract Function GetDefaultResolution(pdwResolution As DWordPtr) As DWord Abstract Function SetDefaultResolution(dwResolution As DWord) As DWord Abstract Function GetTrack(ByRef rguidType As GUID, dwGroupBits As DWord, dwIndex As DWord, ppTrack As **IDirectMusicTrack) As DWord Abstract Function GetTrackGroup(pTrack As *IDirectMusicTrack, pdwGroupBits As DWordPtr) As DWord Abstract Function InsertTrack(pTrack As *IDirectMusicTrack, dwGroupBits As DWord) As DWord Abstract Function RemoveTrack(pTrack As *IDirectMusicTrack) As DWord Abstract Function InitPlay(ppSegState As **IDirectMusicSegmentState, pPerformance As *IDirectMusicPerformance, dwFlags As DWord) As DWord Abstract Function GetGraph(ppGraph As **IDirectMusicGraph) As DWord Abstract Function SetGraph(pGraph As *IDirectMusicGraph) As DWord Abstract Function AddNotificationType(ByRef rguidNotificationType As GUID) As DWord Abstract Function RemoveNotificationType(ByRef rguidNotificationType As GUID) As DWord Abstract Function GetParam(ByRef rguidType As GUID, dwGroupBits As DWord, dwIndex As DWord, mtTime As MUSIC_TIME, pmtNext As *MUSIC_TIME, pParam As VoidPtr) As DWord Abstract Function SetParam(ByRef rguidType As GUID, dwGroupBits As DWord, dwIndex As DWord, mtTime As MUSIC_TIME, pParam As VoidPtr) As DWord Abstract Function Clone(mtStart As MUSIC_TIME, mtEnd As MUSIC_TIME, ppSegment As **IDirectMusicSegment) As DWord Abstract Function SetStartPoint(mtStart As MUSIC_TIME) As DWord Abstract Function GetStartPoint(pmtStart As *MUSIC_TIME) As DWord Abstract Function SetLoopPoints(mtStart As MUSIC_TIME, mtEnd As MUSIC_TIME) As DWord Abstract Function GetLoopPoints(pmtStart As *MUSIC_TIME, pmtEnd As *MUSIC_TIME) As DWord Abstract Function SetPChannelsUsed(dwNumPChannels As DWord, paPChannels As DWordPtr) As DWord End Class Class IDirectMusicSegment8 Inherits IDirectMusicSegment Public 'IDirectMusicSegment8 Abstract Function SetTrackConfig(ByRef rguidTrackClassID As GUID, dwGroupBits As DWord, dwIndex As DWord, dwFlagsOn As DWord, dwFlagsOff As DWord) As DWord Abstract Function GetAudioPathConfig(ppAudioPathConfig As **IUnknown) As DWord Abstract Function Compose(mtTime As MUSIC_TIME, pFromSegment As *IDirectMusicSegment, pToSegment As *IDirectMusicSegment, ppComposedSegment As **IDirectMusicSegment) As DWord Abstract Function Download(pAudioPath As *IUnknown) As DWord Abstract Function Unload(pAudioPath As *IUnknown) As DWord End Class Class IDirectMusicSegmentState Inherits IUnknown Public 'IDirectMusicSegmentState Abstract Function GetRepeats(pdwRepeats As DWordPtr) As DWord Abstract Function GetSegment(ppSegment As **IDirectMusicSegment) As DWord Abstract Function GetStartTime(pmtStart As *MUSIC_TIME) As DWord Abstract Function GetSeek(pmtSeek As *MUSIC_TIME) As DWord Abstract Function GetStartPoint(pmtStart As *MUSIC_TIME) As DWord End Class Class IDirectMusicSegmentState8 Inherits IDirectMusicSegmentState Public 'IDirectMusicSegmentState8 Abstract Function SetTrackConfig(ByRef rguidTrackClassID As GUID, dwGroupBits As DWord, dwIndex As DWord, dwFlagsOn As DWord, dwFlagsOff As DWord) As DWord Abstract Function GetObjectInPath(dwPChannel As DWord, dwStage As DWord, dwBuffer As DWord, ByRef guidObject As GUID, dwIndex As DWord, ByRef iidInterface As GUID, ppObject As DWordPtr) As DWord End Class Class IDirectMusicAudioPath Inherits IUnknown Public 'IDirectMusicAudioPath Abstract Function GetObjectInPath(dwPChannel As DWord, dwStage As DWord, dwBuffer As DWord, ByRef guidObject As GUID, dwIndex As DWord, ByRef iidInterface As GUID, ppObject As DWordPtr) As DWord Abstract Function Activate(fActivate As Long) As DWord Abstract Function SetVolume(lVolume As Long, dwDuration As DWord) As DWord Abstract Function ConvertPChannel(dwPChannelIn As DWord, pdwPChannelOut As DWordPtr) As DWord End Class TypeDef IDirectMusicAudioPath8 = IDirectMusicAudioPath Class IDirectMusicPerformance Inherits IUnknown Public 'IDirectMusicPerformance Abstract Function Init(ppDirectMusic As **IDirectMusic, pDirectSound As LPDIRECTSOUND, hWnd As HWND) As DWord Abstract Function PlaySegment(pSegment As *IDirectMusicSegment, dwFlags As DWord, i64StartTime As REFERENCE_TIME, ppSegmentState As **IDirectMusicSegmentState) As DWord Abstract Function Stop(pSegment As *IDirectMusicSegment, pSegmentState As *IDirectMusicSegmentState, mtTime As MUSIC_TIME, dwFlags As DWord) As DWord Abstract Function GetSegmentState(ppSegmentState As **IDirectMusicSegmentState, mtTime As MUSIC_TIME) As DWord Abstract Function SetPrepareTime(dwMilliSeconds As DWord) As DWord Abstract Function GetPrepareTime(pdwMilliSeconds As DWordPtr) As DWord Abstract Function SetBumperLength(dwMilliSeconds As DWord) As DWord Abstract Function GetBumperLength(pdwMilliSeconds As DWordPtr) As DWord Abstract Function SendPMsg(pPMSG As *DMUS_PMSG) As DWord Abstract Function MusicToReferenceTime(mtTime As MUSIC_TIME, prtTime As *REFERENCE_TIME) As DWord Abstract Function ReferenceToMusicTime(rtTime As REFERENCE_TIME, pmtTime As *MUSIC_TIME) As DWord Abstract Function IsPlaying(pSegment As *IDirectMusicSegment, pSegState As *IDirectMusicSegmentState) As DWord Abstract Function GetTime(prtNow As *REFERENCE_TIME, pmtNow As *MUSIC_TIME) As DWord Abstract Function AllocPMsg(cb As DWord, ppPMSG As **DMUS_PMSG) As DWord Abstract Function FreePMsg(pPMSG As *DMUS_PMSG) As DWord Abstract Function GetGraph(ppGraph As **IDirectMusicGraph) As DWord Abstract Function SetGraph(pGraph As *IDirectMusicGraph) As DWord Abstract Function SetNotificationHandle(hNotification As HANDLE, rtMinimum As REFERENCE_TIME) As DWord Abstract Function GetNotificationPMsg(ppNotificationPMsg As **DMUS_NOTIFICATION_PMSG) As DWord Abstract Function AddNotificationType(ByRef rguidNotificationType As GUID) As DWord Abstract Function RemoveNotificationType(ByRef rguidNotificationType As GUID) As DWord Abstract Function AddPort(pPort As *IDirectMusicPort) As DWord Abstract Function RemovePort(pPort As *IDirectMusicPort) As DWord Abstract Function AssignPChannelBlock(dwBlockNum As DWord, pPort As *IDirectMusicPort, dwGroup As DWord) As DWord Abstract Function AssignPChannel(dwPChannel As DWord, pPort As *IDirectMusicPort, dwGroup As DWord, dwMChannel As DWord) As DWord Abstract Function PChannelInfo(dwPChannel As DWord, ppPort As **IDirectMusicPort, pdwGroup As DWordPtr, pdwMChannel As DWordPtr) As DWord Abstract Function DownloadInstrument(pInst As *IDirectMusicInstrument, dwPChannel As DWord, ppDownInst As **IDirectMusicDownloadedInstrument, pNoteRanges As *DMUS_NOTERANGE, dwNumNoteRanges As DWord, ppPort As **IDirectMusicPort, pdwGroup As DWordPtr, pdwMChannel As DWordPtr) As DWord Abstract Function Invalidate(mtTime As MUSIC_TIME, dwFlags As DWord) As DWord Abstract Function GetParam(ByRef rguidType As GUID, dwGroupBits As DWord, dwIndex As DWord, mtTime As MUSIC_TIME, pmtNext As *MUSIC_TIME, pParam As VoidPtr) As DWord Abstract Function SetParam(ByRef rguidType As GUID, dwGroupBits As DWord, dwIndex As DWord, mtTime As MUSIC_TIME, pParam As VoidPtr) As DWord Abstract Function GetGlobalParam(ByRef rguidType As GUID, pParam As VoidPtr, dwSize As DWord) As DWord Abstract Function SetGlobalParam(ByRef rguidType As GUID, pParam As VoidPtr, dwSize As DWord) As DWord Abstract Function GetLatencyTime(prtTime As *REFERENCE_TIME) As DWord Abstract Function GetQueueTime(prtTime As *REFERENCE_TIME) As DWord Abstract Function AdjustTime(rtAmount As REFERENCE_TIME) As DWord Abstract Function CloseDown() As DWord Abstract Function GetResolvedTime(rtTime As REFERENCE_TIME, prtResolved As *REFERENCE_TIME, dwTimeResolveFlags As DWord) As DWord Abstract Function MIDIToMusic(bMIDIValue As Byte, pChord As *DMUS_CHORD_KEY, bPlayMode As Byte, bChordLevel As Byte, pwMusicValue As WordPtr) As DWord Abstract Function MusicToMIDI(wMusicValue As Word, pChord As *DMUS_CHORD_KEY, bPlayMode As Byte, bChordLevel As Byte, pbMIDIValue As BytePtr) As DWord Abstract Function TimeToRhythm(mtTime As MUSIC_TIME, pTimeSig As *DMUS_TIMESIGNATURE, pwMeasure As WordPtr, pbBeat As BytePtr, pbGrid As BytePtr, pnOffset As WordPtr) As DWord Abstract Function RhythmToTime(wMeasure As Word, bBeat As Byte, bGrid As Byte, nOffset As Integer, pTimeSig As *DMUS_TIMESIGNATURE, pmtTime As *MUSIC_TIME) As DWord End Class Class IDirectMusicPerformance8 Inherits IDirectMusicPerformance Public 'IDirectMusicPerformance8 Abstract Function InitAudio(ppDirectMusic As **IDirectMusic, ppDirectSound As **IDirectSound, hWnd As HWND, dwDefaultPathType As DWord, dwPChannelCount As DWord, dwFlags As DWord, pParams As *DMUS_AUDIOPARAMS) As DWord Abstract Function PlaySegmentEx(pSource As *IUnknown, pwzSegmentName As *WCHAR, pTransition As *IUnknown, dwFlags As DWord, i64StartTime As Int64, ppSegmentState As **IDirectMusicSegmentState, pFrom As *IUnknown, pAudioPath As *IUnknown) As DWord Abstract Function StopEx(pObjectToStop As *IUnknown, i64StopTime As Int64, dwFlags As DWord) As DWord Abstract Function ClonePMsg(pSourcePMSG As *DMUS_PMSG, ppCopyPMSG As **DMUS_PMSG) As DWord Abstract Function CreateAudioPath(pSourceConfig As *IUnknown, fActivate As Long, ppNewPath As **IDirectMusicAudioPath) As DWord Abstract Function CreateStandardAudioPath(dwType As DWord, dwPChannelCount As DWord, fActivate As Long, ppNewPath As **IDirectMusicAudioPath) As DWord Abstract Function SetDefaultAudioPath(pAudioPath As *IDirectMusicAudioPath) As DWord Abstract Function GetDefaultAudioPath(ppAudioPath As **IDirectMusicAudioPath) As DWord Abstract Function GetParamEx(ByRef rguidType As GUID, dwTrackID As DWord, dwGroupBits As DWord, dwIndex As DWord, mtTime As MUSIC_TIME, pmtNext As *MUSIC_TIME, pParam As VoidPtr) As DWord End Class Class IDirectMusicGraph Inherits IUnknown Public 'IDirectMusicGraph Abstract Function StampPMsg(pPMSG As *DMUS_PMSG) As DWord Abstract Function InsertTool(pTool As *IDirectMusicTool, pdwPChannels As DWordPtr, cPChannels As DWord, lIndex As Long) As DWord Abstract Function GetTool(dwIndex As DWord, ppTool As **IDirectMusicTool) As DWord Abstract Function RemoveTool(pTool As *IDirectMusicTool) As DWord End Class Class IDirectMusicStyle Inherits IUnknown Public 'IDirectMusicStyle Abstract Function GetBand(pwszName As *WCHAR, ppBand As **IDirectMusicBand) As DWord Abstract Function EnumBand(dwIndex As DWord, pwszName As *WCHAR) As DWord Abstract Function GetDefaultBand(ppBand As **IDirectMusicBand) As DWord Abstract Function EnumMotif(dwIndex As DWord, pwszName As *WCHAR) As DWord Abstract Function GetMotif(pwszName As *WCHAR, ppSegment As **IDirectMusicSegment) As DWord Abstract Function GetDefaultChordMap(ppChordMap As **IDirectMusicChordMap) As DWord Abstract Function EnumChordMap(dwIndex As DWord, pwszName As *WCHAR) As DWord Abstract Function GetChordMap(pwszName As *WCHAR, ppChordMap As **IDirectMusicChordMap) As DWord Abstract Function GetTimeSignature(pTimeSig As *DMUS_TIMESIGNATURE) As DWord Abstract Function GetEmbellishmentLength(dwType As DWord, dwLevel As DWord, pdwMin As DWordPtr, pdwMax As DWordPtr) As DWord Abstract Function GetTempo(pTempo As DoublePtr) As DWord End Class Class IDirectMusicStyle8 Inherits IDirectMusicStyle Public 'IDirectMusicStyle8 Abstract Function EnumPattern(dwIndex As DWord, dwPatternType As DWord, pwszName As *WCHAR) As DWord End Class Class IDirectMusicChordMap Inherits IUnknown Public 'IDirectMusicChordMap Abstract Function GetScale(pdwScale As DWordPtr) As DWord End Class TypeDef IDirectMusicChordMap8 = IDirectMusicChordMap Class IDirectMusicComposer Inherits IUnknown Public 'IDirectMusicComposer Abstract Function ComposeSegmentFromTemplate(pStyle As *IDirectMusicStyle, pTemplate As *IDirectMusicSegment, wActivity As Word, pChordMap As *IDirectMusicChordMap, ppSegment As **IDirectMusicSegment) As DWord Abstract Function ComposeSegmentFromShape(pStyle As *IDirectMusicStyle, wNumMeasures As Word, wShape As Word, wActivity As Word, fIntro As Long, fEnd As Long, pChordMap As *IDirectMusicChordMap, ppSegment As **IDirectMusicSegment) As DWord Abstract Function ComposeTransition(pFromSeg As *IDirectMusicSegment, pToSeg As *IDirectMusicSegment, mtTime As MUSIC_TIME, wCommand As Word, dwFlags As DWord, pChordMap As *IDirectMusicChordMap, ppTransSeg As **IDirectMusicSegment) As DWord Abstract Function AutoTransition(pPerformance As *IDirectMusicPerformance, pToSeg As *IDirectMusicSegment, wCommand As Word, dwFlags As DWord, pChordMap As *IDirectMusicChordMap, ppTransSeg As **IDirectMusicSegment, ppToSegState As **IDirectMusicSegmentState, ppTransSegState As **IDirectMusicSegmentState) As DWord Abstract Function ComposeTemplateFromShape(wNumMeasures As Word, wShape As Word, fIntro As Long, fEnd As Long, wEndLength As Word, ppTemplate As **IDirectMusicSegment) As DWord Abstract Function ChangeChordMap(pSegment As *IDirectMusicSegment, fTrackScale As Long, pChordMap As *IDirectMusicChordMap) As DWord End Class TypeDef IDirectMusicComposer8 = IDirectMusicComposer '----------------- ' CLSID and IID '----------------- ' CLSID's Dim CLSID_DirectMusicPerformance = [&Hd2ac2881, &Hb39b, &H11d1, [&H87, &H4, &H0, &H60, &H8, &H93, &Hb1, &Hbd]] As GUID Dim CLSID_DirectMusicSegment = [&Hd2ac2882, &Hb39b, &H11d1, [&H87, &H4, &H0, &H60, &H8, &H93, &Hb1, &Hbd]] As GUID Dim CLSID_DirectMusicSegmentState = [&Hd2ac2883, &Hb39b, &H11d1, [&H87, &H4, &H0, &H60, &H8, &H93, &Hb1, &Hbd]] As GUID Dim CLSID_DirectMusicGraph = [&Hd2ac2884, &Hb39b, &H11d1, [&H87, &H4, &H0, &H60, &H8, &H93, &Hb1, &Hbd]] As GUID Dim CLSID_DirectMusicStyle = [&Hd2ac288a, &Hb39b, &H11d1, [&H87, &H4, &H0, &H60, &H8, &H93, &Hb1, &Hbd]] As GUID Dim CLSID_DirectMusicChordMap = [&Hd2ac288f, &Hb39b, &H11d1, [&H87, &H4, &H0, &H60, &H8, &H93, &Hb1, &Hbd]] As GUID Dim CLSID_DirectMusicComposer = [&Hd2ac2890, &Hb39b, &H11d1, [&H87, &H4, &H0, &H60, &H8, &H93, &Hb1, &Hbd]] As GUID Dim CLSID_DirectMusicLoader = [&Hd2ac2892, &Hb39b, &H11d1, [&H87, &H4, &H0, &H60, &H8, &H93, &Hb1, &Hbd]] As GUID Dim CLSID_DirectMusicBand = [&H79ba9e00, &Hb6ee, &H11d1, [&H86, &Hbe, &H0, &Hc0, &H4f, &Hbf, &H8f, &Hef]] As GUID ' New CLSID's for DX8 Dim CLSID_DirectMusicPatternTrack = [&Hd2ac2897, &Hb39b, &H11d1, [&H87, &H4, &H0, &H60, &H8, &H93, &Hb1, &Hbd]] As GUID Dim CLSID_DirectMusicScript = [&H810b5013, &He88d, &H11d2, [&H8b, &Hc1, &H0, &H60, &H8, &H93, &Hb1, &Hb6]] As GUID ' {810B5013-E88D-11d2-8BC1-00600893B1B6} Dim CLSID_DirectMusicContainer = [&H9301e380, &H1f22, &H11d3, [&H82, &H26, &Hd2, &Hfa, &H76, &H25, &H5d, &H47]] As GUID Dim CLSID_DirectSoundWave = [&H8a667154, &Hf9cb, &H11d2, [&Had, &H8a, &H0, &H60, &Hb0, &H57, &H5a, &Hbc]] As GUID Dim CLSID_DirectMusicAudioPathConfig = [&Hee0b9ca0, &Ha81e, &H11d3, [&H9b, &Hd1, &H0, &H80, &Hc7, &H15, &Ha, &H74]] As GUID ' Special GUID for all object types. This is used by the loader. Dim GUID_DirectMusicAllTypes = [&Hd2ac2893, &Hb39b, &H11d1, [&H87, &H4, &H0, &H60, &H8, &H93, &Hb1, &Hbd]] As GUID ' Notification guids Dim GUID_NOTIFICATION_SEGMENT = [&Hd2ac2899, &Hb39b, &H11d1, [&H87, &H4, &H0, &H60, &H8, &H93, &Hb1, &Hbd]] As GUID Dim GUID_NOTIFICATION_PERFORMANCE = [&H81f75bc5, &H4e5d, &H11d2, [&Hbc, &Hc7, &H0, &Ha0, &Hc9, &H22, &He6, &Heb]] As GUID Dim GUID_NOTIFICATION_MEASUREANDBEAT = [&Hd2ac289a, &Hb39b, &H11d1, [&H87, &H4, &H0, &H60, &H8, &H93, &Hb1, &Hbd]] As GUID Dim GUID_NOTIFICATION_CHORD = [&Hd2ac289b, &Hb39b, &H11d1, [&H87, &H4, &H0, &H60, &H8, &H93, &Hb1, &Hbd]] As GUID Dim GUID_NOTIFICATION_COMMAND = [&Hd2ac289c, &Hb39b, &H11d1, [&H87, &H4, &H0, &H60, &H8, &H93, &Hb1, &Hbd]] As GUID Dim GUID_NOTIFICATION_RECOMPOSE = [&Hd348372b, &H945b, &H45ae, [&Ha5, &H22, &H45, &Hf, &H12, &H5b, &H84, &Ha5]] As GUID ' Track param type guids ' Use to get/set a DMUS_COMMAND_PARAM param in the Command track Dim GUID_CommandParam = [&Hd2ac289d, &Hb39b, &H11d1, [&H87, &H4, &H0, &H60, &H8, &H93, &Hb1, &Hbd]] As GUID ' Use to get a DMUS_COMMAND_PARAM_2 param in the Command track Dim GUID_CommandParam2 = [&H28f97ef7, &H9538, &H11d2, [&H97, &Ha9, &H0, &Hc0, &H4f, &Ha3, &H6e, &H58]] As GUID ' Use to get/set a DMUS_COMMAND_PARAM_2 param to be used as the command following all commands in ' the Command track (this information can't be saved) Dim GUID_CommandParamNext = [&H472afe7a, &H281b, &H11d3, [&H81, &H7d, &H0, &Hc0, &H4f, &Ha3, &H6e, &H58]] As GUID ' Use to get/set a DMUS_CHORD_PARAM param in the Chord track Dim GUID_ChordParam = [&Hd2ac289e, &Hb39b, &H11d1, [&H87, &H4, &H0, &H60, &H8, &H93, &Hb1, &Hbd]] As GUID ' Use to get a DMUS_RHYTHM_PARAM param in the Chord track Dim GUID_RhythmParam = [&Hd2ac289f, &Hb39b, &H11d1, [&H87, &H4, &H0, &H60, &H8, &H93, &Hb1, &Hbd]] As GUID ' Use to get/set an IDirectMusicStyle param in the Style track Dim GUID_IDirectMusicStyle = [&Hd2ac28a1, &Hb39b, &H11d1, [&H87, &H4, &H0, &H60, &H8, &H93, &Hb1, &Hbd]] As GUID ' Use to get a DMUS_TIMESIGNATURE param in the Style and TimeSig tracks Dim GUID_TimeSignature = [&Hd2ac28a4, &Hb39b, &H11d1, [&H87, &H4, &H0, &H60, &H8, &H93, &Hb1, &Hbd]] As GUID ' Use to get/set a DMUS_TEMPO_PARAM param in the Tempo track Dim GUID_TempoParam = [&Hd2ac28a5, &Hb39b, &H11d1, [&H87, &H4, &H0, &H60, &H8, &H93, &Hb1, &Hbd]] As GUID ' Use to get the next valid point in a segment at which it may start Dim GUID_Valid_Start_Time = [&H7f6b1760, &H1fdb, &H11d3, [&H82, &H26, &H44, &H45, &H53, &H54, &H0, &H0]] As GUID ' Use to get the next point in the currently playing primary segment at which a new segment may start Dim GUID_Play_Marker = [&Hd8761a41, &H801a, &H11d3, [&H9b, &Hd1, &Hda, &Hf7, &He1, &Hc3, &Hd8, &H34]] As GUID ' Use to get (GetParam) or add (SetParam) bands in the Band track Dim GUID_BandParam = [&H2bb1938, &Hcb8b, &H11d2, [&H8b, &Hb9, &H0, &H60, &H8, &H93, &Hb1, &Hb6]] As GUID Type DMUS_BAND_PARAM mtTimePhysical As MUSIC_TIME pBand As *IDirectMusicBand End Type ' Obsolete -- doesn't distinguish physical and logical time. Use GUID_BandParam instead. Dim GUID_IDirectMusicBand = [&Hd2ac28ac, &Hb39b, &H11d1, [&H87, &H4, &H0, &H60, &H8, &H93, &Hb1, &Hbd]] As GUID ' Use to get/set an IDirectMusicChordMap param in the ChordMap track Dim GUID_IDirectMusicChordMap = [&Hd2ac28ad, &Hb39b, &H11d1, [&H87, &H4, &H0, &H60, &H8, &H93, &Hb1, &Hbd]] As GUID ' Use to get/set a DMUS_MUTE_PARAM param in the Mute track Dim GUID_MuteParam = [&Hd2ac28af, &Hb39b, &H11d1, [&H87, &H4, &H0, &H60, &H8, &H93, &Hb1, &Hbd]] As GUID ' These guids are used in IDirectMusicSegment::SetParam to tell the band track to perform various actions. ' Some of these guids (where noted) also apply to wave tracks. ' Download bands/waves for the IDirectMusicSegment Dim GUID_Download = [&Hd2ac28a7, &Hb39b, &H11d1, [&H87, &H4, &H0, &H60, &H8, &H93, &Hb1, &Hbd]] As GUID ' Unload bands/waves for the IDirectMusicSegment Dim GUID_Unload = [&Hd2ac28a8, &Hb39b, &H11d1, [&H87, &H4, &H0, &H60, &H8, &H93, &Hb1, &Hbd]] As GUID ' Connect segment's bands to an IDirectMusicCollection Dim GUID_ConnectToDLSCollection = [&H1db1ae6b, &He92e, &H11d1, [&Ha8, &Hc5, &H0, &Hc0, &H4f, &Ha3, &H72, &H6e]] As GUID ' Enable/disable autodownloading of bands/waves Dim GUID_Enable_Auto_Download = [&Hd2ac28a9, &Hb39b, &H11d1, [&H87, &H4, &H0, &H60, &H8, &H93, &Hb1, &Hbd]] As GUID Dim GUID_Disable_Auto_Download = [&Hd2ac28aa, &Hb39b, &H11d1, [&H87, &H4, &H0, &H60, &H8, &H93, &Hb1, &Hbd]] As GUID ' Clear all bands Dim GUID_Clear_All_Bands = [&Hd2ac28ab, &Hb39b, &H11d1, [&H87, &H4, &H0, &H60, &H8, &H93, &Hb1, &Hbd]] As GUID ' Set segment to manage all program changes, bank selects, etc. for simple playback of a standard MIDI file Dim GUID_StandardMIDIFile = [&H6621075, &He92e, &H11d1, [&Ha8, &Hc5, &H0, &Hc0, &H4f, &Ha3, &H72, &H6e]] As GUID ' Disable/enable param guids. Use these in SetParam calls to disable or enable sending ' * specific PMsg types. Dim GUID_DisableTimeSig = [&H45fc707b, &H1db4, &H11d2, [&Hbc, &Hac, &H0, &Ha0, &Hc9, &H22, &He6, &Heb]] As GUID Dim GUID_EnableTimeSig = [&H45fc707c, &H1db4, &H11d2, [&Hbc, &Hac, &H0, &Ha0, &Hc9, &H22, &He6, &Heb]] As GUID Dim GUID_DisableTempo = [&H45fc707d, &H1db4, &H11d2, [&Hbc, &Hac, &H0, &Ha0, &Hc9, &H22, &He6, &Heb]] As GUID Dim GUID_EnableTempo = [&H45fc707e, &H1db4, &H11d2, [&Hbc, &Hac, &H0, &Ha0, &Hc9, &H22, &He6, &Heb]] As GUID ' Used in SetParam calls for pattern-based tracks. A nonzero value seeds the random number ' generator for variation selection; a value of zero reverts to the default behavior of ' getting the seed from the system clock. Dim GUID_SeedVariations = [&H65b76fa5, &Hff37, &H11d2, [&H81, &H4e, &H0, &Hc0, &H4f, &Ha3, &H6e, &H58]] As GUID ' Used to get the variations currently in effect across PChannels Dim GUID_Variations = [&H11f72cce, &H26e6, &H4ecd, [&Haf, &H2e, &Hd6, &H68, &He6, &H67, &H7, &Hd8]] As GUID Type DMUS_VARIATIONS_PARAM dwPChannelsUsed As DWord padwPChannels As DWordPtr padwVariations As DWordPtr End Type ' Download bands/waves for the IDirectMusicSegment, passed an IDirectMusicAudioPath instead of an IDirectMusicPerformance Dim GUID_DownloadToAudioPath = [&H9f2c0341, &Hc5c4, &H11d3, [&H9b, &Hd1, &H44, &H45, &H53, &H54, &H0, &H0]] As GUID ' Unload bands/waves for the IDirectMusicSegment, passed an IDirectMusicAudioPath instead of an IDirectMusicPerformance Dim GUID_UnloadFromAudioPath = [&H9f2c0342, &Hc5c4, &H11d3, [&H9b, &Hd1, &H44, &H45, &H53, &H54, &H0, &H0]] As GUID ' Global data guids Dim GUID_PerfMasterTempo = [&Hd2ac28b0, &Hb39b, &H11d1, [&H87, &H4, &H0, &H60, &H8, &H93, &Hb1, &Hbd]] As GUID Dim GUID_PerfMasterVolume = [&Hd2ac28b1, &Hb39b, &H11d1, [&H87, &H4, &H0, &H60, &H8, &H93, &Hb1, &Hbd]] As GUID Dim GUID_PerfMasterGrooveLevel = [&Hd2ac28b2, &Hb39b, &H11d1, [&H87, &H4, &H0, &H60, &H8, &H93, &Hb1, &Hbd]] As GUID Dim GUID_PerfAutoDownload = [&Hfb09565b, &H3631, &H11d2, [&Hbc, &Hb8, &H0, &Ha0, &Hc9, &H22, &He6, &Heb]] As GUID ' GUID for default GM/GS dls collection. Dim GUID_DefaultGMCollection = [&Hf17e8673, &Hc3b4, &H11d1, [&H87, &Hb, &H0, &H60, &H8, &H93, &Hb1, &Hbd]] As GUID ' GUID to define default synth, placed in AudioPath configuration file. Dim GUID_Synth_Default = [&H26bb9432, &H45fe, &H48d3, [&Ha3, &H75, &H24, &H72, &Hc5, &He3, &He7, &H86]] As GUID ' GUIDs to define default buffer configurations to place in AudioPath configuration file. Dim GUID_Buffer_Reverb = [&H186cc541, &Hdb29, &H11d3, [&H9b, &Hd1, &H0, &H80, &Hc7, &H15, &Ha, &H74]] As GUID Dim GUID_Buffer_EnvReverb = [&H186cc542, &Hdb29, &H11d3, [&H9b, &Hd1, &H0, &H80, &Hc7, &H15, &Ha, &H74]] As GUID Dim GUID_Buffer_Stereo = [&H186cc545, &Hdb29, &H11d3, [&H9b, &Hd1, &H0, &H80, &Hc7, &H15, &Ha, &H74]] As GUID Dim GUID_Buffer_3D_Dry = [&H186cc546, &Hdb29, &H11d3, [&H9b, &Hd1, &H0, &H80, &Hc7, &H15, &Ha, &H74]] As GUID Dim GUID_Buffer_Mono = [&H186cc547, &Hdb29, &H11d3, [&H9b, &Hd1, &H0, &H80, &Hc7, &H15, &Ha, &H74]] As GUID ' IID's Dim IID_IDirectMusicLoader = [&H2ffaaca2, &H5dca, &H11d2, [&Haf, &Ha6, &H0, &Haa, &H0, &H24, &Hd8, &Hb6]] As GUID Dim IID_IDirectMusicGetLoader = [&H68a04844, &Hd13d, &H11d1, [&Haf, &Ha6, &H0, &Haa, &H0, &H24, &Hd8, &Hb6]] As GUID Dim IID_IDirectMusicObject = [&Hd2ac28b5, &Hb39b, &H11d1, [&H87, &H4, &H0, &H60, &H8, &H93, &Hb1, &Hbd]] As GUID Dim IID_IDirectMusicSegment = [&Hf96029a2, &H4282, &H11d2, [&H87, &H17, &H0, &H60, &H8, &H93, &Hb1, &Hbd]] As GUID Dim IID_IDirectMusicSegmentState = [&Ha3afdcc7, &Hd3ee, &H11d1, [&Hbc, &H8d, &H0, &Ha0, &Hc9, &H22, &He6, &Heb]] As GUID Dim IID_IDirectMusicPerformance = [&H7d43d03, &H6523, &H11d2, [&H87, &H1d, &H0, &H60, &H8, &H93, &Hb1, &Hbd]] As GUID Dim IID_IDirectMusicGraph = [&H2befc277, &H5497, &H11d2, [&Hbc, &Hcb, &H0, &Ha0, &Hc9, &H22, &He6, &Heb]] As GUID Dim IID_IDirectMusicStyle = [&Hd2ac28bd, &Hb39b, &H11d1, [&H87, &H4, &H0, &H60, &H8, &H93, &Hb1, &Hbd]] As GUID Dim IID_IDirectMusicChordMap = [&Hd2ac28be, &Hb39b, &H11d1, [&H87, &H4, &H0, &H60, &H8, &H93, &Hb1, &Hbd]] As GUID Dim IID_IDirectMusicComposer = [&Hd2ac28bf, &Hb39b, &H11d1, [&H87, &H4, &H0, &H60, &H8, &H93, &Hb1, &Hbd]] As GUID Dim IID_IDirectMusicBand = [&Hd2ac28c0, &Hb39b, &H11d1, [&H87, &H4, &H0, &H60, &H8, &H93, &Hb1, &Hbd]] As GUID ' Alternate interface IDs, available in DX7 release and after. Dim IID_IDirectMusicPerformance2 = [&H6fc2cae0, &Hbc78, &H11d2, [&Haf, &Ha6, &H0, &Haa, &H0, &H24, &Hd8, &Hb6]] As GUID Dim IID_IDirectMusicSegment2 = [&Hd38894d1, &Hc052, &H11d2, [&H87, &H2f, &H0, &H60, &H8, &H93, &Hb1, &Hbd]] As GUID ' Interface IDs for DX8 ' changed interfaces (GUID only) Dim IID_IDirectMusicLoader8 = [&H19e7c08c, &Ha44, &H4e6a, [&Ha1, &H16, &H59, &H5a, &H7c, &Hd5, &Hde, &H8c]] As GUID Dim IID_IDirectMusicPerformance8 = [&H679c4137, &Hc62e, &H4147, [&Hb2, &Hb4, &H9d, &H56, &H9a, &Hcb, &H25, &H4c]] As GUID Dim IID_IDirectMusicSegment8 = [&Hc6784488, &H41a3, &H418f, [&Haa, &H15, &Hb3, &H50, &H93, &Hba, &H42, &Hd4]] As GUID Dim IID_IDirectMusicSegmentState8 = [&Ha50e4730, &Hae4, &H48a7, [&H98, &H39, &Hbc, &H4, &Hbf, &He0, &H77, &H72]] As GUID Dim IID_IDirectMusicStyle8 = [&Hfd24ad8a, &Ha260, &H453d, [&Hbf, &H50, &H6f, &H93, &H84, &Hf7, &H9, &H85]] As GUID ' new interfaces (GUID + alias) Dim IID_IDirectMusicPatternTrack = [&H51c22e10, &Hb49f, &H46fc, [&Hbe, &Hc2, &He6, &H28, &H8f, &Hb9, &Hed, &He6]] As GUID Dim IID_IDirectMusicScript = [&H2252373a, &H5814, &H489b, [&H82, &H9, &H31, &Hfe, &Hde, &Hba, &Hf1, &H37]] As GUID ' {2252373A-5814-489b-8209-31FEDEBAF137} Dim IID_IDirectMusicScript8 As GUID: IID_IDirectMusicScript8=IID_IDirectMusicScript Dim IID_IDirectMusicContainer = [&H9301e386, &H1f22, &H11d3, [&H82, &H26, &Hd2, &Hfa, &H76, &H25, &H5d, &H47]] As GUID Dim IID_IDirectMusicContainer8 As GUID: IID_IDirectMusicContainer8=IID_IDirectMusicContainer Dim IID_IDirectMusicAudioPath = [&Hc87631f5, &H23be, &H4986, [&H88, &H36, &H5, &H83, &H2f, &Hcc, &H48, &Hf9]] As GUID Dim IID_IDirectMusicAudioPath8 As GUID: IID_IDirectMusicAudioPath8=IID_IDirectMusicAudioPath ' unchanged interfaces (alias only) Dim IID_IDirectMusicGetLoader8 As GUID: IID_IDirectMusicGetLoader8=IID_IDirectMusicGetLoader Dim IID_IDirectMusicChordMap8 As GUID: IID_IDirectMusicChordMap8=IID_IDirectMusicChordMap Dim IID_IDirectMusicGraph8 As GUID: IID_IDirectMusicGraph8=IID_IDirectMusicGraph Dim IID_IDirectMusicBand8 As GUID: IID_IDirectMusicBand8=IID_IDirectMusicBand Dim IID_IDirectMusicObject8 As GUID: IID_IDirectMusicObject8=IID_IDirectMusicObject Dim IID_IDirectMusicComposer8 As GUID: IID_IDirectMusicComposer8=IID_IDirectMusicComposer #endif '_INC_DMUSIC