Воспроизведение звука
Функция PlaySegmentEx() начинает воспроизведение загруженного сегмента. У нее есть несколько параметров, но как видите, в коде моего примера значения многих из них равны NULL. Вот как выглядит прототип функции:
HRESULT PlaySegmentEx( IUnknown* pSource, WCHAR *pwzSegmentName, IUnknown* pTransition, DWORD dwFlags, __int64 i64StartTime, IDirectMusicSegmentState** ppSegmentState, IUnknown* pFrom, IUnknown* pAudioPath );
В первом параметре, pSource, передается указатель на интерфейс воспроизводимого объекта. В рассматриваемой программе я использую глобальный указатель на сегмент, загрузка которого была выполнена раньше.
Второй параметр, pwzSegmentName, в DirectX 9.0 не используется.
Третий параметр, pTransition, позволяет задать модуляцию для сегмента. Я передаю в этом параметре NULL.
Четвертый параметр, dwFlags, позволяет вам указать набор флагов, определяющих различные параметры воспроизведения. В рассматриваемом примере для этого параметра я использую флаги DMUS_SEGF_DEFAULT и DMUS_SEGF_SECONDARY. Эти флаги указывают, что сегмент воспроизводится в его границах по умолчанию и что сегмент воспроизводится как вторичный звук. Доступно еще много других флагов, и я рекомендую вам посмотреть их описание в документации DirectX SDK.
Пятый параметр, i64StartTime, задает начальное время для сегмента. Я передаю в этом параметре NULL чтобы воспроизведение звука началось немедленно.
В шестом параметре, ppSegmentState, передается адрес указателя в котором функция возвращает указатель на интерфейс, позволяющий получить состояние сегмента. Я обычно не пользуюсь этой возможностью и передаю в данном параметре NULL.
Седьмой параметр, pFrom, позволяет указать интерфейс для остановки воспроизведения когда стартует новый сегмент. Здесь я также передаю NULL.
Восьмой параметр, pAudioPath, сообщает системе какой аудио-путь используется для воспроизведения сегмента. Я присваиваю этому параметру значение NULL чтобы для воспроизведения использовался аудио-путь по умолчанию.
Теперь запустите программу и щелкните несколько раз по ее окну левой кнопкой мыши. Важная особенность программы заключается в том, что она может одновременно воспроизводить несколько звуков. Это может не произвести на вас большого впечатления, если вы никогда раньше не занимались воспроизведением звука, но поверьте мне — это очень круто. Замечательно то, что DirectMusic за вас выполняет всю необходимую буферизацию.
netlib.narod.ru | < Назад | Оглавление | Далее > |