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
1470 {1470 {
1471 1471
1472 tMempool mempool;1472 tMempool mempool;
1473 uint32_t phase;1473 int32_t phase;
1474 uint32_t inc;1474 int32_t inc;
1475 uint32_t prevPhase;1475 int32_t prevPhase;
1476 float freq;1476 float freq;
1477 int32_t mask;
1478 uint8_t phaseDidReset;1477 uint8_t phaseDidReset;
1479 uint32_t invSampleRate;1478 uint32_t invSampleRate;
1480 float invSampleRateTimesTwoTo32;1479 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
3024 c->phase = 0;3024 c->phase = 0;
3025 c->invSampleRate = leaf->invSampleRate;3025 c->invSampleRate = leaf->invSampleRate;
3026 c->invSampleRateTimesTwoTo32 = (c->invSampleRate * TWO_TO_32);3026 c->invSampleRateTimesTwoTo32 = (c->invSampleRate * TWO_TO_32);
3027 c->mask = TRI_TABLE_SIZE - 1;3027 //c->mask = TRI_TABLE_SIZE - 1;
3028 tTriLFO_setFreq(cy, 220);3028 tTriLFO_setFreq(cy, 220);
3029}3029}
3030 3030
@@ -3039,10 +3039,20 @@ void tTriLFO_free (tTriLFO* const cy) · 8 unmodified lines
3039float tTriLFO_tick(tTriLFO* const cy)3039float tTriLFO_tick(tTriLFO* const cy)
3040{3040{
3041 _tTriLFO* c = *cy;3041 _tTriLFO* c = *cy;
3042 uint32_t idx;3042 //uint32_t idx;
3043 float frac, samp0, samp1;3043 //float frac, samp0, samp1;
3044 // Phasor increment3044 // Phasor increment
3045 c->phase += c->inc;3045 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 /*
3046 // Wavetable synthesis3056 // Wavetable synthesis
3047 idx = c->phase >> 21;3057 idx = c->phase >> 21;
3048 uint32_t idx2 = (idx + 1) & c->mask;3058 uint32_t idx2 = (idx + 1) & c->mask;
@@ -3054,7 +3064,9 @@ float tTriLFO_tick(tTriLFO* const cy) · 5 unmodified lines
3054 float oct0 = (samp0 + (samp1 - samp0) * frac);3064 float oct0 = (samp0 + (samp1 - samp0) * frac);
3055 3065
3056 3066
3057 return oct0; 3067 return oct0;
3068 */
3069
3058}3070}
3059 3071
3060void tTriLFO_setFreq(tTriLFO* const cy, float freq)3072void tTriLFO_setFreq(tTriLFO* const cy, float freq)
@@ -3112,7 +3124,7 @@ float tSineTriLFO_tick (tSineTriLFO* const cy) · 51 unmodified lines
3112 _tSineTriLFO* c = *cy;3124 _tSineTriLFO* c = *cy;
3113 float a = tCycle_tick(&c->sine);3125 float a = tCycle_tick(&c->sine);
3114 float b = tTriLFO_tick(&c->tri);3126 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;
3116}3128}
3117void tSineTriLFO_setFreq (tSineTriLFO* const cy, float freq)3129void tSineTriLFO_setFreq (tSineTriLFO* const cy, float freq)
3118{3130{

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