Microsoft DirectX 9.0

DirectMusic Interfaces

This section contains references for DirectMusic COM interfaces.

Interfaces in the current version (other than IKsControl and IReferenceClock) are either declared or defined with names ending in 8. To be sure of using the latest version of an interface, always include this suffix when declaring the interface pointer.

Interfaces retrieved by methods are always the base version. Where a newer version exists, you must call QueryInterface to obtain it, as in the following example, where lpdmBand is an IDirectMusicBand8 interface pointer:

IDirectMusicSegment * lpdmseg;
IDirectMusicSegment8 * lpdmseg8;
HRESULT hr = lpdmBand->CreateSegment(&lpdmseg);
if (SUCCEEDED(hr)) 
  hr = lpdmseg->QueryInterface(IID_IDirectMusicSegment8, 

Where there is no new version of an interface, the interface name with the suffix 8 is only a define. For example, IDirectMusicGraph8 is equivalent in all respects to IDirectMusicGraph. In such cases it is not necessary to query for a new interface, but doing so does no harm and can make your code easier to maintain for future versions of DirectX.

For information on which methods are supported by earlier versions of an interface, see the declaration of the interface in the appropriate header file.

When a method takes an interface pointer as an in parameter, you can pass in the newer version even where the method is declared as accepting the older version. For example, a pointer to either IDirectMusicSegment or IDirectMusicSegment8 can be passed to IDirectMusicPerformance8::PlaySegmentEx.

This documentation contains full reference topics only for the latest versions of interfaces. Where a define exists, such as IDirectMusicGraph8, the interface is documented under that name.

Interface Description
IDirectMusic8 Provides methods for managing buffers, ports, and the master clock.
IDirectMusicAudioPath8 Manages the stages of data flow from the performance to the final mixer. 
IDirectMusicBand8 Represents a DirectMusic band object.
IDirectMusicBuffer8 Represents a buffer containing time-stamped data (typically in the form of MIDI messages) being sequenced to a port.
IDirectMusicChordMap8 Represents a chordmap.
IDirectMusicCollection8 Manages an instance of a DLS file.
IDirectMusicComposer8 Enables access to the composition engine.
IDirectMusicContainer8 Provides access to objects in a container, which is a collection of objects used by a segment or performance.
IDirectMusicDownload8 Represents a contiguous memory chunk used for downloading to a DLS synthesizer port.
IDirectMusicDownloadedInstrument8 Used to identify an instrument that has been downloaded to the synthesizer by using the IDirectMusicPort8::DownloadInstrument or the IDirectMusicPerformance8::DownloadInstrument method.
IDirectMusicGetLoader8 Used by an object parsing a stream when the object needs to load another object referenced by the stream.
IDirectMusicGraph8 Manages the loading and message flow of tools.
IDirectMusicInstrument8 Represents an individual instrument from a DLS collection.
IDirectMusicLoader8 Used for finding, enumerating, caching, and loading objects.
IDirectMusicObject8 Used by an object parsing a stream when the object needs to load another object referenced by the stream.
IDirectMusicPatternTrack8 Represents a track that contains a single pattern.
IDirectMusicPerformance8 Manages playback.
IDirectMusicPort8 Represents a device that sends or receives sound data.
IDirectMusicPortDownload8 Enables an application to communicate directly with a port that supports DLS downloading and to download memory chunks directly to the port.
IDirectMusicScript8 Represents a script containing variables that can be set and retrieved by the application, and routines that can be called by the application.
IDirectMusicSegment8 Represents a segment, which is a playable unit of data made up of multiple tracks.
IDirectMusicSegmentState8 Represents a playing instance of a segment.
IDirectMusicStyle8 Represents a style object, which encapsulates a collection of patterns, motifs, and bands used in run-time composition of musical segments.
IDirectMusicSynth Implemented by synthesizers.
IDirectMusicSynthSink Implemented by synthesizer sinks.
IDirectMusicThru8 Supports thruing of MIDI messages from a capture port to another port.
IDirectMusicTool8 Represents a tool object that processes messages.
IDirectMusicTrack8 Represents a track object, which can store any kind of data for a segment.
IKsControl Used to get, set, or query the support of properties, events, and methods.
IReferenceClock Represents a system reference clock.