Udostępnij przez


Czas syntetyzatora

Syntetyzator działa z dwoma różnymi systemami czasu:

  • Czas odwołania

  • Czas próbki

Czas odniesienia to bezwzględny czas (w jednostkach zegara głównego), w którym ma być odtwarzana sekwencja komunikatów. W implementacjach trybu użytkownika komunikat jest przekazywany do metody IDirectMusicSynth::PlayBuffer, kiedy komunikaty MIDI są przesyłane do syntezatora. Syntetyzator, ujście fali i reszta komponentów DirectMusic powinna działać pod tym samym zegarem głównym, który jest dołączony do syntetyzatora przez implementację metody IDirectMusicSynth::SetMasterClock i do ujścia fali przez IDirectMusicSynthSink::SetMasterClock.

Czas próbkowania służy do mierzenia przesunięć do buforu wyjściowego syntezatora. Ten bufor jest wypełniony próbkami fal, więc czas próbkowania jest względny do częstotliwości próbkowania. Na przykład przy częstotliwości próbkowania 22,1 kHz każda sekunda czasu odpowiada 22 100 próbkom lub 44 200 bajtom (w przypadku formatu mono 16-bitowego).

Ponieważ odtwarzanie buforu próbki dźwiękowej może być kontrolowane przez inny kryształ zegarowy niż zegar główny, czas odniesienia i czas próbki mają tendencję do rozbiegania się. Ujście fali utrzymuje je w kroku, implementując pętlę zablokowaną fazowo. Ta synchronizacja zegara jest opisana w sekcji Synchronizacja zegara.

Ta sekcja zawiera również następujące elementy:

Opóźnienie syntetyzatora

Time-Stamped Wydarzenia