// constructor Spectacle( t_CKFLOAT fs) { fftlen = kDefaultFFTLen; windowlen = kDefaultWindowLen; overlap = kDefaultOverlap; maxdeltime = kDefaultMaxDelTime; maxdeltime = CLIP(maxdeltime, kMinMaxDelTime, kMaxMaxDelTime); mindeltime = 0.0; srate = fs; mix = 1.0; spectdelay = NULL; float *del = dttable; float *eq = eqtable; float *feed = fbtable; for (int i = 0; i < kMaxTableLen; i++) { *del++ = rand2f(mindeltime, maxdeltime); *eq++ = 0.0; *feed++ = 0.0; } dttablen = eqtablen = fbtablen = kDefaultTableSize; minfreq = maxfreq = 0.0; posteq = hold = false; spectdelay = new Spectacle_dsp(); spectdelay->init(fftlen, windowlen, overlap, srate, maxdeltime); spectdelay->set_deltable(dttable,dttablen); spectdelay->set_eqtable(eqtable,eqtablen); spectdelay->set_feedtable(fbtable,fbtablen); }
void setFBTable (int type) { for (int i=0; i<fbtablen; i++) { switch (type) { case 0: fbtable[i] = lerp((float)i, 0, (float)fbtablen, -1.0 , 1.0); break; case 1: fbtable[i] = lerp((float)i, (float)fbtablen, 0, -1.0, 1.0); break; default: fbtable[i] = rand2f( -0.1, 0.1 ); } } }
void setEQTable (int type) { for (int i=0; i<eqtablen; i++) { switch (type) { case 0: eqtable[i] = lerp((float)i, 0, (float)dttablen, -24.f,24.f); break; case 1: eqtable[i] = lerp((float)i, (float)dttablen, 0, -24.f,24.f); break; default: eqtable[i] = rand2f(-24.f,24.f); } } }
void setDelayTable (int type) { for (int i=0; i<dttablen; i++) { switch (type) { case 0: dttable[i] = lerp((float)i, 0, (float)dttablen, mindeltime, maxdeltime); break; case 1: dttable[i] = lerp((float)i, (float)dttablen, 0, mindeltime, maxdeltime); break; default: dttable[i] = rand2f(mindeltime, maxdeltime); } } }
glm::vec2 randt(const glm::vec2& max) { return rand2f(max); }
Vector2 randt(const Vector2& max) { return rand2f(max); }