turn the metronome into a sine

This commit is contained in:
tildearrow 2022-01-04 00:29:59 -05:00
parent 530a9bafc7
commit e8dc1e3c8b
2 changed files with 14 additions and 12 deletions

View file

@ -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),

View file

@ -1,6 +1,7 @@
#include "dispatch.h"
#include "engine.h"
#include "../ta-log.h"
#include <math.h>
#include <sndfile.h>
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<size; i++) {
if (metroTick[i]) {
if (metroTick[i]==2) {
metroPeriod=30;
metroFreq=1400/got.rate;
} else {
metroPeriod=40;
metroFreq=1050/got.rate;
}
metroPos=metroPeriod;
metroAmp=0.5f;
metroPos=0;
metroAmp=0.7f;
}
out[0][i]+=(metroPos>(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();
}