From e8dc1e3c8b28e5e583e552993dee9bc8677a9343 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Tue, 4 Jan 2022 00:29:59 -0500 Subject: [PATCH] turn the metronome into a sine --- src/engine/engine.h | 4 ++-- src/engine/playback.cpp | 22 ++++++++++++---------- 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/src/engine/engine.h b/src/engine/engine.h index fede7dde6..b0bab674e 100644 --- a/src/engine/engine.h +++ b/src/engine/engine.h @@ -139,7 +139,7 @@ class DivEngine { short* bbOut[3]; unsigned char* metroTick; size_t metroTickLen; - int metroPeriod, metroPos; + float metroFreq, metroPos; float metroAmp; size_t totalProcessed; @@ -425,7 +425,7 @@ class DivEngine { prevSample{0,0}, metroTick(NULL), metroTickLen(0), - metroPeriod(0), + metroFreq(0), metroPos(0), metroAmp(0.0f), totalProcessed(0), diff --git a/src/engine/playback.cpp b/src/engine/playback.cpp index d000913ee..2e0592a0b 100644 --- a/src/engine/playback.cpp +++ b/src/engine/playback.cpp @@ -1,6 +1,7 @@ #include "dispatch.h" #include "engine.h" #include "../ta-log.h" +#include #include void DivEngine::nextOrder() { @@ -967,20 +968,21 @@ void DivEngine::nextBuf(float** in, float** out, int inChans, int outChans, unsi if (metronome) for (size_t i=0; i(metroPeriod>>1))*metroAmp; - out[1][i]+=(metroPos>(metroPeriod>>1))*metroAmp; - metroAmp-=0.0002f; + if (metroAmp>0.0f) { + out[0][i]+=(sin(metroPos*2*M_PI))*metroAmp; + out[1][i]+=(sin(metroPos*2*M_PI))*metroAmp; + } + metroAmp-=0.0003f; if (metroAmp<0.0f) metroAmp=0.0f; - if (--metroPos<=0) { - metroPos=metroPeriod; - } + metroPos+=metroFreq; + while (metroPos>=1) metroPos--; } isBusy.unlock(); }