DirectMusic is a deprecated component of the Microsoft DirectX API that allows music and sound effects to be composed and played and provides flexible interactive control over the way they are played. Architecturally, DirectMusic is a high-level set of objects, built on top of DirectSound, that allow the programmer to play sound and music without needing to get quite as low-level as DirectSound. DirectSound allows for the capture and playback of digital sound samples, whereas DirectMusic works with message-based musical data. Music can be synthesized either in hardware, in the Microsoft GS Wavetable SW Synth, or in a custom synthesizer.
DirectMusic was first released by Microsoft in 1996 as an ActiveX control called Interactive Music Architecture (IMA). It was introduced as part of the 6.1 version of the DirectX library in February 1999 and is included in all Microsoft Windows operating systems starting with Windows 98 Second Edition. DirectMusic has since been deprecated, and is not available to 64-bit applications in Windows Vista. In Windows 7, native 64-bit support is available for the core DirectMusic API related to timestamped MIDI but not for the performance component.
DirectMusic provides a complete system for implementing dynamic soundtracks that take advantage of hardware acceleration, Downloadable Sounds (DLS), DirectX Media Objects (DMOs), advanced 3D positioning effects and several other features. DirectMusic provides composition and playback of dynamic musical soundtracks based on stored compositional material. Rather than a static playback, the music is generated on the fly, and is played with variations, and can respond to flexible program events. Using DirectMusic, it is possible to:
- Load and play sounds from files or resources in MIDI, WAV, or DirectMusic Producer run-time format. The small file size of DirectMusic soundtracks makes it very well suited for Web applications.
- Schedule the timing of musical events with high precision. DirectMusic allows timestamping of MIDI input data at the moment of arrival to a system wide reference clock. Music or sound effects composed for DirectMusic can be very flexible and can change dynamically over time or in response to a user event. DirectMusic addresses the problems of Windows' legacy MidiOut API, which has shaky timing and limited real-time control.
- Play from multiple sources simultaneously, each with separate timing and instrument sets.
- Send tempo changes, patch changes, and other MIDI events programmatically.
- Use Downloadable Sounds (DLS), an open standard by the MIDI Manufacturers Association, allowing developers to output 'wavetable' sounds on audio hardware not equipped with 'wavetable' sample-based synthesis. The downloadable sounds can be extended to include new or customized instruments.
- On computers with sound card which lack 'wavetable' sample-based synthesis, DirectSound's Software Synthesizer ensures that message-based music such as MIDI files and DirectMusic segments sound identical on all hardware configurations rather than playing differently on different computers with different sound cards. An application can also play an unlimited variety of instruments and even produce unique sounds for individual notes and velocities.
- Locate sounds in a 3D environment.
- Easily apply pitch changes, reverberation, and other effects.
- Use more than 16 MIDI channels. DirectMusic makes it possible for any number of voices to be played simultaneously, up to the limits of the synthesizer.
- Play segments on different audio paths, so that effects or spatialization can be applied individually to each sound.
- Capture MIDI data, or stream it from one port to another.
- DirectMusic Producer can be used to create sound files that take full advantage of DirectMusic's interactive features.
On Microsoft Windows Vista, DirectMusic uses only software synthesis. Also, the DirectMusic kernel mode synthesizer that supplies the DirectMusic components with a high-resolution timer has been removed.