| @@ -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 |
| 3039 | float tTriLFO_tick(tTriLFO* const cy) | 3039 | float 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 increment | 3044 | // 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 synthesis | 3056 | // 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 | |
| 3060 | void tTriLFO_setFreq(tTriLFO* const cy, float freq) | 3072 | void 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 | } |
| 3117 | void tSineTriLFO_setFreq (tSineTriLFO* const cy, float freq) | 3129 | void tSineTriLFO_setFreq (tSineTriLFO* const cy, float freq) |
| 3118 | { | 3130 | { |