合成器计时

合成器适用于两个不同的时间系统:

  • 参考时间

  • 示例时间

参考时间是要播放消息序列的绝对时间(以主时钟单位为单位)。 在用户模式实现中,当 MIDI 消息馈送到合成器时,它将传递给 IDirectMusicSynth::PlayBuffer 方法。 合成器、波接收器和 DirectMusic 的其余部分都应在同一主时钟下工作,该时钟通过IDirectMusicSynth::SetMasterClock 方法的实现连接到合成器,并通过 IDirectMusicSynthSink::SetMasterClock 连接到波形接收器。

示例时间用于测量合成器输出缓冲区的偏移量。 此缓冲区填充了波形样本,因此示例时间相对于采样率。 例如,以 22.1 kHz 的采样率计算,每秒的采样率相当于 22,100 个样本或 44,200 字节(如果采用 16 位单声道格式)。

由于波形样本缓冲区的播放可能由与主时钟不同的计时晶体控制,因此参考时间和样本时间往往偏离。 波形接收器通过实现分阶段锁定循环保持同步。 时钟同步中介绍了此时钟同步。

本节还包括:

合成器延迟

带时间戳的事件