Freigeben über


Synthesizer-Timing

Der Synthesizer arbeitet mit zwei verschiedenen Zeitsystemen:

  • Referenzzeit

  • Beispielzeit

Referenzzeit ist die absolute Zeit (in master-Takteinheiten), zu der eine Sequenz von Nachrichten wiedergegeben werden soll. In Benutzermodusimplementierungen wird sie an die IDirectMusicSynth::P layBuffer-Methode übergeben, wenn MIDI-Nachrichten an den Synthesizer übergeben werden. Der Synthesizer, die Wellensenke und der Rest von DirectMusic sollten alle unter derselben master Uhr funktionieren, die durch Ihre Implementierung der IDirectMusicSynth::SetMasterClock-Methode an den Synthesizer und an die Wellensenke von IDirectMusicSynthSink::SetMasterClock angefügt wird.

Die Beispielzeit wird verwendet, um Offsets im Ausgabepuffer des Synthesizers zu messen. Dieser Puffer ist mit Wellenproben gefüllt, sodass die Stichprobenzeit relativ zur Abtastrate ist. Bei einer Samplingrate von 22,1 kHz entspricht beispielsweise jede Sekunde der Zeit 22.100 Stichproben oder 44.200 Bytes (bei einem 16-Bit-Monoformat).

Da die Wiedergabe des Wellenprobenpuffers wahrscheinlich durch einen anderen Zeitsteuerungskristall als die master Uhr gesteuert wird, driften Referenzzeit und Stichprobenzeit tendenziell auseinander. Die Wellensenke hält sie im Schritt, indem eine phase-locked-Schleife implementiert wird. Diese Uhrsynchronisierung wird unter Uhrsynchronisierung beschrieben.

Dieser Abschnitt enthält außerdem Folgendes:

Synthesizerlatenz

Ereignisse mit Zeitstempel