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]; short* bbOut[3];
unsigned char* metroTick; unsigned char* metroTick;
size_t metroTickLen; size_t metroTickLen;
int metroPeriod, metroPos; float metroFreq, metroPos;
float metroAmp; float metroAmp;
size_t totalProcessed; size_t totalProcessed;
@ -425,7 +425,7 @@ class DivEngine {
prevSample{0,0}, prevSample{0,0},
metroTick(NULL), metroTick(NULL),
metroTickLen(0), metroTickLen(0),
metroPeriod(0), metroFreq(0),
metroPos(0), metroPos(0),
metroAmp(0.0f), metroAmp(0.0f),
totalProcessed(0), totalProcessed(0),

View file

@ -1,6 +1,7 @@
#include "dispatch.h" #include "dispatch.h"
#include "engine.h" #include "engine.h"
#include "../ta-log.h" #include "../ta-log.h"
#include <math.h>
#include <sndfile.h> #include <sndfile.h>
void DivEngine::nextOrder() { 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 (metronome) for (size_t i=0; i<size; i++) {
if (metroTick[i]) { if (metroTick[i]) {
if (metroTick[i]==2) { if (metroTick[i]==2) {
metroPeriod=30; metroFreq=1400/got.rate;
} else { } else {
metroPeriod=40; metroFreq=1050/got.rate;
} }
metroPos=metroPeriod; metroPos=0;
metroAmp=0.5f; metroAmp=0.7f;
} }
out[0][i]+=(metroPos>(metroPeriod>>1))*metroAmp; if (metroAmp>0.0f) {
out[1][i]+=(metroPos>(metroPeriod>>1))*metroAmp; out[0][i]+=(sin(metroPos*2*M_PI))*metroAmp;
metroAmp-=0.0002f; out[1][i]+=(sin(metroPos*2*M_PI))*metroAmp;
}
metroAmp-=0.0003f;
if (metroAmp<0.0f) metroAmp=0.0f; if (metroAmp<0.0f) metroAmp=0.0f;
if (--metroPos<=0) { metroPos+=metroFreq;
metroPos=metroPeriod; while (metroPos>=1) metroPos--;
}
} }
isBusy.unlock(); isBusy.unlock();
} }