Tempo do sintetizador
O sintetizador funciona com dois sistemas de tempo diferentes:
Hora de referência
Tempo de exemplo
O tempo de referência é a hora absoluta (em unidades de master relógio) em que uma sequência de mensagens deve ser reproduzida. Em implementações de modo de usuário, ele é passado para o método IDirectMusicSynth::P layBuffer quando as mensagens MIDI são alimentadas para o sintetizador. O sintetizador, o coletor de ondas e o restante do DirectMusic devem funcionar no mesmo master relógio, que é anexado ao sintetizador pela implementação do método IDirectMusicSynth::SetMasterClock e ao coletor de ondas por IDirectMusicSynthSink::SetMasterClock.
O tempo de exemplo é usado para medir deslocamentos no buffer de saída do sintetizador. Esse buffer é preenchido com amostras de onda, portanto, o tempo de amostragem é relativo à taxa de amostragem. Por exemplo, a uma taxa de amostragem de 22,1 kHz, cada segundo do tempo é equivalente a 22.100 amostras ou 44.200 bytes (no caso de um formato mono de 16 bits).
Como a reprodução do buffer de exemplo de onda provavelmente será controlada por um cristal de tempo diferente do relógio master, o tempo de referência e o tempo de amostra tendem a se afastar. O coletor de ondas os mantém em etapas implementando um loop bloqueado por fases. Essa sincronização de relógio é descrita em Sincronização de Relógio.
Esta seção também inclui: