Исполнитель DirectMusic
Подобно тому, как музыкант исполняет произведение, интерфейс исполнителя в DirectMusic отвечает за исполнение музыки. Он управляет воспроизведением, работой с сообщениями, назначением каналов и контролем времени. Если говорить в двух словах, вы только создаете в вашей игре один из этих интерфейсов.
Вся работа исполнителя поддерживается единственным интерфейсом с именем IDirectMusicPerformance8. Он является рабочей лошадкой DirectMusic; поэтому в нем присутствуют десятки функций. Перечисление функций приведено в таблице 7.2.
| Таблица 7.2. Методы интерфейса IDirectMusicPerformance8 | |
| Метод | Описание |
| AddNotificationType | Добавляет тип уведомления. |
| AddPort | Назначает исполнителю порт. |
| AdjustTime | Смещает время исполнителя вперед или назад. |
| AllocPMsg | Выделяет память для сообщения. |
| AssignPChannel | Назначает канал исполнителя. |
| AssignPChannelBlock | Назначает блок из 16 каналов. |
| ClonePMsg | Копирует сообщение исполнителя. |
| CloseDown | Закрывает объект исполнителя. |
| CreateAudioPath | Создает аудио-путь (audio path). |
| CreateStandardAudioPath | Создает аудио-путь со стандартными параметрами. |
| DownloadInstrument | Загружает инструмент DLS. |
| FreePMsg | Освобождает занятую сообщением память. |
| GetBumperLength | Возвращает время между помещением сообщения в буфер и началом его обработки. |
| GetDefaultAudioPath | Возвращает аудио-путь по умолчанию. |
| GetGlobalParam | Возвращает глобальные значения исполнителя. |
| GetGraph | Возвращает инструментальный граф (toolgraph). |
| GetLatencyTime | Возвращает время, необходимое исполнителю на обработку звука и вывод его на динамики. |
| GetNotificationPMsg | Возвращает сообщение уведомления. |
| GetParam | Возвращает параметры дорожки. |
| GetParamEx | Возвращает параметры дорожки. Поддерживает саморегулируемые сегменты. |
| GetPrepareTime | Возвращает латентность дорожки. |
| GetQueueTime | Возвращает время, когда сообщения могут быть вытеснены. |
| GetResolvedTime | Преобразует время в предел. |
| GetSegmentState | Возвращает состояние текущего сегмента. |
| GetTime | Возвращает время исполнителя. |
| InitAudio | Инициализирует исполнителя. |
| Invalidate | Вытесняет все сообщения. |
| IsPlaying | Проверяет, воспроизводится ли текущий сегмент. |
| MIDIToMusic | Преобразует значение ноты MIDI в значение DirectMusic. |
| MusicToMIDI | Преобразует значение DirectMusic в значение MIDI. |
| MusicToReferenceTime | Преобразует MUSIC_TIME в REFERENCE_TIME. |
| PChannelInfo | Возвращает информацию о канале. |
| PlaySegment | Воспроизводит сегмент. |
| PlaySegmentEx | Воспроизводит сегмент с дополнительными параметрами. |
| ReferenceToMusicTime | Преобразует REFERENCE_TIME в MUSIC_TIME. |
| RemoveNotificationType | Удаляет тип уведомления. |
| RemovePort | Удаляет порт. |
| RhythmToTime | Преобразует время ритма во время музыки. |
| SendPMsg | Отправляет сообщение. |
| SetBumperLength | Устанавливает интервал между помещением сообщения в буфер и его обработкой. |
| SetDefaultAudioPath | Устанавливает аудио-путь по умолчанию. Установленный путь становится активным. |
| SetGlobalParam | Устанавливает глобальные значения. |
| SetGraph | Устанавливает инструментальный граф. |
| SetNotificationHandle | Устанавливает обработчик события. |
| SetParam | Устанавливает данные дорожки. |
| SetPrepareTime | Устанавливает время между отправкой сообщения и воспроизведением звука. |
| Stop | Останавливает воспроизведение сегмента. |
| StopEx | Останавливает сегмент или аудио-путь. |
| TimeToRhythm | Преобразует время музыки во время ритма. |
Ничего себе. Какой огромный список функций. Он не должен подавлять вас; я использую в своих программах лишь несколько из перечисленных функций. Представьте себе, вся эта функциональность доступна вам абсолютно бесплатно!