Введение

DirectMusic — устаревший компонент Microsoft DirectX API, позволяющий создавать и воспроизводить музыку и звуковые эффекты, а также обеспечивающий гибкое интерактивное управление процессом воспроизведения. С архитектурной точки зрения, DirectMusic представляет собой набор объектов высокого уровня, построенный на основе DirectSound, который позволяет программисту воспроизводить звук и музыку, не опускаясь до столь низкого уровня, как DirectSound. DirectSound обеспечивает захват и воспроизведение цифровых звуковых семплов, в то время как DirectMusic работает с музыкальными данными, основанными на сообщениях. Музыка может быть синтезирована как аппаратно, так и в Microsoft GS Wavetable SW Synth, либо в пользовательском синтезаторе.

История

DirectMusic впервые была выпущена компанией Microsoft в 1996 году как ActiveX-элемент управления под названием Interactive Music Architecture (IMA). Она была представлена в составе версии 6.1 библиотеки DirectX в феврале 1999 года и включена во все операционные системы Microsoft Windows, начиная с Windows 98 Second Edition. С тех пор DirectMusic устарела и недоступна для 64-битных приложений в Windows Vista.

Подробности

DirectMusic предоставляет полную систему для реализации динамических саундтреков, использующих преимущества аппаратного ускорения, загружаемых звуков (DLS), объектов DirectX Media Objects (DMO), продвинутых 3D-эффектов позиционирования и ряда других функций. DirectMusic обеспечивает создание и воспроизведение динамических музыкальных саундтреков на основе сохраненного композиционного материала. В отличие от статического воспроизведения, музыка генерируется в реальном времени, воспроизводится с вариациями и может реагировать на различные программные события. С помощью DirectMusic можно:

Загружать и воспроизводить звуки из файлов или ресурсов в форматах MIDI, WAV или DirectMusic Producer. Небольшой размер файлов саундтреков DirectMusic делает его особенно подходящим для веб-приложений. Точно планировать время наступления музыкальных событий. DirectMusic позволяет присваивать временные метки входящим данным MIDI в момент их поступления к системным часам. Музыка или звуковые эффекты, созданные для DirectMusic, могут быть очень гибкими и динамически изменяться со временем или в ответ на действия пользователя. DirectMusic решает проблемы устаревшего API Windows MidiOut, отличающегося нестабильным таймингом и ограниченным управлением в реальном времени. Воспроизводить звук из нескольких источников одновременно, каждый со своей собственной временной шкалой и набором инструментов. Программно отправлять изменения темпа, патчей и другие MIDI-события. Использовать Downloadable Sounds (DLS) – открытый стандарт Ассоциации производителей MIDI, позволяющий разработчикам выводить звуки, основанные на волновых таблицах, на аудиооборудовании, не оснащенном синтезом на основе волновых таблиц. Загружаемые звуки можно расширять, добавляя новые или настроенные инструменты. На компьютерах со звуковыми картами, не поддерживающими синтез на основе волновых таблиц, программный синтезатор DirectSound обеспечивает идентичное звучание музыки, основанной на сообщениях (например, MIDI-файлов и сегментов DirectMusic), на всех аппаратных конфигурациях, исключая различия в звучании на разных компьютерах с разными звуковыми картами. Приложение может воспроизводить неограниченное количество инструментов и даже создавать уникальные звуки для отдельных нот и динамических уровней. Размещать звуки в трехмерном пространстве. Легко применять изменение высоты тона, реверберацию и другие эффекты. Использовать более 16 MIDI-каналов. DirectMusic позволяет одновременно воспроизводить любое количество голосов, в пределах возможностей синтезатора. Воспроизводить сегменты по разным звуковым путям, чтобы применять эффекты или пространственное расположение к каждому звуку индивидуально. Захватывать MIDI-данные или передавать их с одного порта на другой. DirectMusic Producer можно использовать для создания звуковых файлов, максимально использующих интерактивные возможности DirectMusic. В Microsoft Windows Vista DirectMusic использует только программный синтез. Кроме того, был удален режимный синтезатор ядра DirectMusic, который обеспечивал компоненты DirectMusic таймером высокого разрешения.