The IDirectMusicTrack interface represents a track object. Almost everything that has to do with the definition of a segment is stored in its tracks. The track mechanism allows segments to be infinitely extensible, and the segment doesn't have to have any knowledge about any of the music and audio technologies that it employs.
If you plan to install your own music playback mechanism into DirectMusic, you will need to create a DirectMusicTrack object to represent it. Otherwise, the methods of this interface will typically not be called directly from the application.
Note When implementing methods of the IDirectMusicTrack interface, you must take care not to hold onto references to objects passed in. For example, if IDirectMusicTrack::Init adds a reference to the IDirectMusicSegment it receives as a parameter, you must ensure that this reference is released.
The IDirectMusicTrack interface has the following methods:
Initialization | Init |
Playback | EndPlay |
InitPlay | |
Play | |
Notification | AddNotificationType |
RemoveNotificationType | |
Parameters | GetParam |
IsParamSupported | |
SetParam | |
Miscellaneous | Clone |
All COM interfaces inherit the IUnknown interface methods. This interface supports the following three methods:
IUnknown | AddRef |
QueryInterface | |
Release |
The DirectMusicTrack object also supports the IDirectMusicObject and IPersistStream interfaces for loading its data.
The following table shows which methods are supported by the standard track types. For a general description of the standard types, see Tracks.
Track | IDirectMusicTrack methods |
IPersistStream methods |
||
---|---|---|---|---|
Band (CLSID_DirectMusicBandTrack) | ||||
AddNotificationType | No | IsDirty | Yes | |
Clone | Yes | GetSizeMax | No | |
EndPlay | Yes | Load | Yes | |
GetParam | No | Save | Yes | |
Init | Yes | |||
InitPlay | Yes | |||
IsParamSupported | Yes | |||
Play | Yes | |||
SetParam | Yes | |||
RemoveNotificationType | No | |||
Chord (CLSID_DirectMusicChordTrack) | ||||
AddNotificationType | Yes | IsDirty | Yes | |
Clone | Yes | GetSizeMax | No | |
EndPlay | Yes | Load | Yes | |
GetParam | Yes | Save | Yes | |
Init | Yes | |||
InitPlay | Yes | |||
IsParamSupported | Yes | |||
Play | Yes | |||
SetParam | Yes | |||
RemoveNotificationType | Yes | |||
Chordmap (CLSID_DirectMusicChordMapTrack) | ||||
AddNotificationType | No | IsDirty | No | |
Clone | Yes | GetSizeMax | No | |
EndPlay | Yes* | Load | Yes | |
GetParam | Yes | Save | No | |
Init | Yes* | |||
InitPlay | Yes* | |||
IsParamSupported | Yes | |||
Play | Yes* | |||
SetParam | Yes | |||
RemoveNotificationType | No | |||
Command (CLSID_DirectMusicCommandTrack) | ||||
AddNotificationType | Yes | IsDirty | Yes | |
Clone | Yes | GetSizeMax | No | |
EndPlay | Yes | Load | Yes | |
GetParam | Yes | Save | Yes | |
Init | Yes | |||
InitPlay | Yes | |||
IsParamSupported | Yes | |||
Play | Yes | |||
SetParam | Yes | |||
RemoveNotificationType | Yes | |||
Motif (CLSID_DirectMusicMotifTrack) | ||||
AddNotificationType | Yes | IsDirty | No | |
Clone | Yes | GetSizeMax | No | |
EndPlay | Yes | Load | No | |
GetParam | No | Save | No | |
Init | Yes | |||
InitPlay | Yes | |||
IsParamSupported | Yes | |||
Play | Yes | |||
SetParam | Yes | |||
RemoveNotificationType | Yes | |||
Mute (CLSID_DirectMusicMuteTrack) | ||||
AddNotificationType | No | IsDirty | Yes | |
Clone | Yes | GetSizeMax | No | |
EndPlay | Yes* | Load | Yes | |
GetParam | Yes | Save | Yes | |
Init | Yes* | |||
InitPlay | Yes* | |||
IsParamSupported | Yes | |||
Play | Yes* | |||
SetParam | Yes | |||
RemoveNotificationType | No | |||
Sequence (CLSID_DirectMusicSeqTrack) | ||||
AddNotificationType | No | IsDirty | No | |
Clone | Yes | GetSizeMax | No | |
EndPlay | Yes | Load | Yes | |
GetParam | No | Save | No | |
Init | Yes | |||
InitPlay | Yes | |||
IsParamSupported | No | |||
Play | Yes | |||
SetParam | No | |||
RemoveNotificationType | No | |||
Signpost (CLSID_DirectMusicSignPostTrack) | ||||
AddNotificationType | No | IsDirty | Yes | |
Clone | Yes | GetSizeMax | No | |
EndPlay | Yes* | Load | Yes | |
GetParam | No | Save | Yes | |
Init | Yes* | |||
InitPlay | Yes* | |||
IsParamSupported | No | |||
Play | Yes* | |||
SetParam | No | |||
RemoveNotificationType | No | |||
Style (CLSID_DirectMusicStyleTrack) | ||||
AddNotificationType | Yes | IsDirty | No | |
Clone | Yes | GetSizeMax | No | |
EndPlay | Yes | Load | Yes | |
GetParam | Yes | Save | No | |
Init | Yes | |||
InitPlay | Yes | |||
IsParamSupported | Yes | |||
Play | Yes | |||
SetParam | Yes | |||
RemoveNotificationType | Yes | |||
SysEx (CLSID_DirectMusicSysExTrack) | ||||
AddNotificationType | No | IsDirty | No | |
Clone | Yes | GetSizeMax | No | |
EndPlay | Yes | Load | Yes | |
GetParam | No | Save | No | |
Init | Yes | |||
InitPlay | Yes | |||
IsParamSupported | No | |||
Play | Yes | |||
SetParam | No | |||
RemoveNotificationType | No | |||
Tempo (CLSID_DirectMusicTempoTrack) | ||||
AddNotificationType | No | IsDirty | No | |
Clone | Yes | GetSizeMax | No | |
EndPlay | Yes | Load | Yes | |
GetParam | Yes | Save | No | |
Init | Yes | |||
InitPlay | Yes | |||
IsParamSupported | Yes | |||
Play | Yes | |||
SetParam | Yes | |||
RemoveNotificationType | No | |||
Time Signature** (CLSID_DirectMusicTimeSigTrack) | ||||
AddNotificationType | Yes | IsDirty | No | |
Clone | Yes | GetSizeMax | No | |
EndPlay | Yes | Load | Yes | |
GetParam | Yes | Save | No | |
Init | Yes | |||
InitPlay | Yes | |||
IsParamSupported | Yes | |||
Play | Yes | |||
SetParam | Yes | |||
RemoveNotificationType | Yes |
Notes * The method returns a value other than E_NOTIMPL but does not do anything else.
** The time signature track exists in imported MIDI files and DirectMusic Producer segments specifically created with one. In most cases the style track implements the time signature track's functionality, so it is not necessary for a segment that contains a style track to contain a time signature track as well.
Windows NT/2000: Requires Windows 2000.
Windows 95/98: Requires Windows 95 or later. Available as a redistributable for Windows 95.
Header: Declared in dmusici.h.