Skip to content

Latest commit

 

History

History
34 lines (24 loc) · 979 Bytes

README.md

File metadata and controls

34 lines (24 loc) · 979 Bytes

Metronome example

This example will show tempo sync in DPF.

This plugin will output sine wave at the start of every beat.
The pitch of sine wave is 1 octave higher at the start of every bar.

4 parameters are avaialble:

  • Gain
  • Decay time
  • Semitone
  • Cent

To calculate frames to the next beat from the start of current audio buffer, following implementation is used.

const TimePosition& timePos(getTimePosition());

if (timePos.bbt.valid) {
    double secondsPerBeat = 60.0 / timePos.bbt.beatsPerMinute;
    double framesPerBeat  = sampleRate * secondsPerBeat;
    double beatFraction   = timePos.bbt.tick / timePos.bbt.ticksPerBeat;

    uint32_t framesToNextBeat = beatFraction == 0.0
        ? 0
        : static_cast<uint32_t>(framesPerBeat * (1.0 - beatFraction));

    // ...
}

Reference: