turn the metronome into a sine
This commit is contained in:
parent
530a9bafc7
commit
e8dc1e3c8b
|
@ -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),
|
||||||
|
|
|
@ -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();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue