Поделиться через


Синхронизация синтезатора

Синтезатор работает с двумя разными системами времени:

  • Время ссылки

  • Время выборки

Эталонное время — это абсолютное время (в master единицах времени), в течение которого должна воспроизводиться последовательность сообщений. В реализациях пользовательского режима он передается в метод IDirectMusicSynth::P layBuffer , когда сообщения MIDI передаются синтезатору. Синтезатор, приемник волны и остальная часть DirectMusic должны работать под одной и той же master часов, которые присоединяются к синтезатору с помощью реализации метода IDirectMusicSynth::SetMasterClock и приемника волн IDirectMusicSynthSink::SetMasterClock.

Время выборки используется для измерения смещения в выходном буфере синтезатора. Этот буфер заполняется волновыми выборками, поэтому время выборки относительно скорости выборки. Например, при частоте выборки 22,1 кГц каждая секунда времени эквивалентна 22 100 выборки или 44 200 байт (в случае 16-разрядного моноформата).

Так как воспроизведение буфера выборки волн, скорее всего, будет управляться с помощью кристалла времени, отличного от master часов, время отсчета и выборки, как правило, расходятся друг от друга. Приемник волн держит их в шаге, реализовав цикл с фазовой блокировкой. Эта синхронизация часов описана в разделе Синхронизация часов.

Этот раздел также включает в себя:

Задержка синтезатора

События с меткой времени