History

changed triLFO to do integer bitmask math

Jeffrey Snyder committed 4 years ago

Commit 4c40a1f1 parent c9ae42f2 files · +20 −9Browse files

Unified · Split

2 files
  1. leaf/Inc/leaf-oscillators.h +3 −4
  2. leaf/Src/leaf-oscillators.c +17 −5
leaf/Inc/leaf-oscillators.h+3−4
@@ -1470,11 +1470,10 @@ extern "C" { · 1469 unmodified lines
14701470 {
14711471
14721472 tMempool mempool;
1473− uint32_t phase;
1474− uint32_t inc;
1475− uint32_t prevPhase;
1473+ int32_t phase;
1474+ int32_t inc;
1475+ int32_t prevPhase;
14761476 float freq;
1477− int32_t mask;
14781477 uint8_t phaseDidReset;
14791478 uint32_t invSampleRate;
14801479 float invSampleRateTimesTwoTo32;
leaf/Src/leaf-oscillators.c+17−5
@@ -3024,7 +3024,7 @@ void tTriLFO_initToPool (tTriLFO* const cy, tMempool* const mp) · 3023 unmodified lines
30243024 c->phase = 0;
30253025 c->invSampleRate = leaf->invSampleRate;
30263026 c->invSampleRateTimesTwoTo32 = (c->invSampleRate * TWO_TO_32);
3027− c->mask = TRI_TABLE_SIZE - 1;
3027+ //c->mask = TRI_TABLE_SIZE - 1;
30283028 tTriLFO_setFreq(cy, 220);
30293029 }
30303030
@@ -3039,10 +3039,20 @@ void tTriLFO_free (tTriLFO* const cy) · 8 unmodified lines
30393039 float tTriLFO_tick(tTriLFO* const cy)
30403040 {
30413041 _tTriLFO* c = *cy;
3042− uint32_t idx;
3043− float frac, samp0, samp1;
3042+ //uint32_t idx;
3043+ //float frac, samp0, samp1;
30443044 // Phasor increment
30453045 c->phase += c->inc;
3046+
3047+ //bitmask fun
3048+ //
3049+ uint32_t mask = c->phase >> 31;
3050+ int32_t val2 = c->phase + mask;
3051+ int32_t test = val2 ^ mask;
3052+ float output =( ((float)test * INV_TWO_TO_31)-0.5f) * 2.0f;
3053+ return output;
3054+
3055+ /*
30463056 // Wavetable synthesis
30473057 idx = c->phase >> 21;
30483058 uint32_t idx2 = (idx + 1) & c->mask;
@@ -3054,7 +3064,9 @@ float tTriLFO_tick(tTriLFO* const cy) · 5 unmodified lines
30543064 float oct0 = (samp0 + (samp1 - samp0) * frac);
30553065
30563066
3057− return oct0;
3067+ return oct0;
3068+ */
3069+
30583070 }
30593071
30603072 void tTriLFO_setFreq(tTriLFO* const cy, float freq)
@@ -3112,7 +3124,7 @@ float tSineTriLFO_tick (tSineTriLFO* const cy) · 51 unmodified lines
31123124 _tSineTriLFO* c = *cy;
31133125 float a = tCycle_tick(&c->sine);
31143126 float b = tTriLFO_tick(&c->tri);
3115− return (1 - c->shape) * a + c->shape * b;
3127+ return (1 - c->shape) * a + c->shape * -1.0f * b;
31163128 }
31173129 void tSineTriLFO_setFreq (tSineTriLFO* const cy, float freq)
31183130 {

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