DISTRHO Plugin Framework
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

979B

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: