History

wavetable efficiency fixes

spiricom committed 5 years ago

Commit a899e1a2 parents c39e469 c38b5b83 files · +18 −6Browse files

Unified · Split

3 files
  1. TestPlugin/Source/MyTest.cpp +9 −1
  2. leaf/Inc/leaf-effects.h +1 −0
  3. leaf/Src/leaf-effects.c +8 −5
TestPlugin/Source/MyTest.cpp+9−1
@@ -40,6 +40,7 @@ tMBSampler sampler; · 39 unmodified lines
4040
4141 const int numWavetables = 1;
4242 tWaveTable wavetables[numWavetables];
43+tSimpleRetune retune;
4344
4445 float gain;
4546 float dtime;
@@ -61,7 +62,10 @@ int lastLoadedAudioSize = 0; · 15 unmodified lines
6162
6263 void LEAFTest_init (float sampleRate, int blockSize)
6364 {
64− LEAF_init(&leaf, sampleRate, blockSize, memory, MSIZE, &getRandomFloat);
65+ LEAF_init(&leaf, sampleRate, memory, MSIZE, &getRandomFloat);
66+
67+ tSimpleRetune_init(&retune, 1, 100, 1200, 2048, &leaf);
68+ tSimpleRetune_setMode(&retune, 1);
6569
6670 // tWaveTable_init(&wt, __leaf_table_sawtooth[0], 2048, 10000.f, &leaf);
6771 // tWaveTableS_init(&cwt, __leaf_table_sawtooth[0], 2048, 10000.f, &leaf);
@@ -101,6 +105,10 @@ inline double getSawFall(double angle) { · 33 unmodified lines
101105
102106 float LEAFTest_tick (float input)
103107 {
108+ tSimpleRetune_tuneVoice(&retune, 0, mtof(roundf(ftom(tSimpleRetune_getInputFrequency(&retune)))));
109+ return tSimpleRetune_tick(&retune, input);
110+
111+
104112 float out = 0.0f;
105113 for (int i = 0; i < fmin(loadedAudio.size(), numWavetables); ++i)
106114 {
leaf/Inc/leaf-effects.h+1−0
@@ -610,6 +610,7 @@ extern "C" { · 609 unmodified lines
610610
611611 tPitchShift* ps;
612612
613+ float* pdBuffer;
613614 float* inBuffer;
614615 float* outBuffer;
615616 int bufSize;
leaf/Src/leaf-effects.c+8−5
@@ -1061,7 +1061,7 @@ void tSOLAD_initToPool (tSOLAD* const wp, int loopSize, tMempool* const mp) · 1060 unmodified lines
10611061
10621062 w->loopSize = loopSize;
10631063 w->pitchfactor = 1.;
1064− w->delaybuf = (float*) mpool_calloc(sizeof(float) * w->loopSize, m);
1064+ w->delaybuf = (float*) mpool_calloc(sizeof(float) * (w->loopSize+1), m);
10651065
10661066 w->timeindex = 0;
10671067 w->xfadevalue = -1;
@@ -1095,7 +1095,7 @@ void tSOLAD_ioSamples(tSOLAD* const wp, float* in, float* out, int blocksize) · 27 unmodified lines
10951095 {
10961096 float sample = tHighpass_tick(&w->hp, in[0]);
10971097 w->delaybuf[0] = sample;
1098− w->delaybuf[w->loopSize-1] = sample; // copy one sample for interpolation
1098+ w->delaybuf[w->loopSize] = sample; // copy one sample for interpolation
10991099 n--;
11001100 i++;
11011101 in++;
@@ -1500,6 +1500,7 @@ void tSimpleRetune_initToPool (tSimpleRetune* const rt, int numVoices, float min · 398 unmodified lines
15001500 r->bufSize = bufSize;
15011501 r->numVoices = numVoices;
15021502
1503+ r->pdBuffer = (float*) mpool_alloc(sizeof(float) * 2048, m);
15031504 r->inBuffer = (float*) mpool_calloc(sizeof(float) * r->bufSize, m);
15041505 r->outBuffer = (float*) mpool_calloc(sizeof(float) * r->bufSize, m);
15051506
@@ -1510,7 +1511,7 @@ void tSimpleRetune_initToPool (tSimpleRetune* const rt, int numVoices, float min · 4 unmodified lines
15101511
15111512 r->minInputFreq = minInputFreq;
15121513 r->maxInputFreq = maxInputFreq;
1513− tDualPitchDetector_initToPool(&r->dp, r->minInputFreq, r->maxInputFreq, r->inBuffer, r->bufSize, mp);
1514+ tDualPitchDetector_initToPool(&r->dp, r->minInputFreq, r->maxInputFreq, r->pdBuffer, 2048, mp);
15141515
15151516 for (int i = 0; i < r->numVoices; ++i)
15161517 {
@@ -1546,7 +1547,8 @@ float tSimpleRetune_tick(tSimpleRetune* const rt, float sample) · 29 unmodified lines
15461547 float out = r->outBuffer[r->index];
15471548 r->outBuffer[r->index] = 0.0f;
15481549
1549− if (++r->index >= r->bufSize)
1550+ r->index++;
1551+ if (r->index >= r->bufSize)
15501552 {
15511553 for (int i = 0; i < r->numVoices; ++i)
15521554 {
@@ -1696,7 +1698,8 @@ float* tRetune_tick(tRetune* const rt, float sample) · 143 unmodified lines
16961698 r->outBuffers[i][r->index] = 0.0f;
16971699 }
16981700
1699− if (++r->index >= r->bufSize)
1701+ r->index++;
1702+ if (r->index >= r->bufSize)
17001703 {
17011704 for (int i = 0; i < r->numVoices; ++i)
17021705 {

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t