History

got rid of extra divide in ramp

spiricom committed 6 years ago

Commit fe679cd1 parent f257cc43 files · +24 −19Browse files

Unified · Split

3 files
  1. LEAF/.DS_Store +0 −0
  2. LEAF/Inc/leaf-envelopes.h +1 −0
  3. LEAF/Src/leaf-envelopes.c +24 −20
LEAF/.DS_Store+0−0

Binary file not shown.

LEAF/Inc/leaf-envelopes.h+1−0
@@ -144,6 +144,7 @@ extern "C" { · 143 unmodified lines
144144 float minimum_time;
145145 float curr,dest;
146146 float time;
147+ float factor;
147148 int samples_per_tick;
148149
149150 } _tRamp;
LEAF/Src/leaf-envelopes.c+24−20
@@ -533,7 +533,7 @@ void tRamp_init(tRamp* const r, float time, int samples_per_tick) · 532 unmodified lines
533533 _tRamp* ramp = *r = (_tRamp*) leaf_alloc(sizeof(_tRamp));
534534
535535 ramp->inv_sr_ms = 1.0f/(leaf.sampleRate*0.001f);
536− ramp->minimum_time = ramp->inv_sr_ms * samples_per_tick;
536+ ramp->minimum_time = ramp->inv_sr_ms * samples_per_tick;
537537 ramp->curr = 0.0f;
538538 ramp->dest = 0.0f;
539539
@@ -545,7 +545,7 @@ void tRamp_init(tRamp* const r, float time, int samples_per_tick) · 5 unmodified lines
545545 {
546546 ramp->time = time;
547547 }
548−
548+ ramp->factor = (1.0f / ramp->time) * ramp->inv_sr_ms;
549549 ramp->samples_per_tick = samples_per_tick;
550550 ramp->inc = ((ramp->dest - ramp->curr) / ramp->time * ramp->inv_sr_ms) * (float)ramp->samples_per_tick;
551551 }
@@ -575,9 +575,9 @@ void tRamp_initToPool (tRamp* const r, float time, int samples_per_tick, t · 23 unmodified lines
575575 {
576576 ramp->time = time;
577577 }
578−
579578 ramp->samples_per_tick = samples_per_tick;
580− ramp->inc = ((ramp->dest - ramp->curr) / ramp->time * ramp->inv_sr_ms) * (float)ramp->samples_per_tick;
579+ ramp->factor = (1.0f / ramp->time) * ramp->inv_sr_ms * (float)ramp->samples_per_tick;
580+ ramp->inc = (ramp->dest - ramp->curr) * ramp->factor;
581581 }
582582
583583 void tRamp_freeFromPool (tRamp* const r, tMempool* const mp)
@@ -592,29 +592,31 @@ void tRamp_setTime(tRamp* const ramp, float time) · 8 unmodified lines
592592 {
593593 _tRamp* r = *ramp;
594594
595− if (time < r->minimum_time)
596− {
597− r->time = r->minimum_time;
598− }
599− else
600− {
601− r->time = time;
602− }
603− r->inc = ((r->dest-r->curr)/r->time * r->inv_sr_ms) * ((float)r->samples_per_tick);
595+ if (time < r->minimum_time)
596+ {
597+ r->time = r->minimum_time;
598+ }
599+ else
600+ {
601+ r->time = time;
602+ }
603+ r->factor = (1.0f / r->time) * r->inv_sr_ms * (float)r->samples_per_tick;
604+ r->inc = (r->dest - r->curr) * r->factor;
605+
604606 }
605607
606608 void tRamp_setDest(tRamp* const ramp, float dest)
607609 {
608610 _tRamp* r = *ramp;
609611 r->dest = dest;
610− r->inc = ((r->dest-r->curr)/r->time * r->inv_sr_ms) * ((float)r->samples_per_tick);
612+ r->inc = (r->dest - r->curr) * r->factor;
611613 }
612614
613615 void tRamp_setVal(tRamp* const ramp, float val)
614616 {
615617 _tRamp* r = *ramp;
616618 r->curr = val;
617− r->inc = ((r->dest-r->curr)/r->time * r->inv_sr_ms) * ((float)r->samples_per_tick);
619+ r->inc = (r->dest - r->curr) * r->factor;
618620 }
619621
620622 float tRamp_tick(tRamp* const ramp)
@@ -624,10 +626,10 @@ float tRamp_tick(tRamp* const ramp) · 3 unmodified lines
624626 r->curr += r->inc;
625627
626628 if (((r->curr >= r->dest) && (r->inc > 0.0f)) || ((r->curr <= r->dest) && (r->inc < 0.0f)))
627− {
628− r->inc = 0.0f;
629− r->curr=r->dest;
630− }
629+ {
630+ r->inc = 0.0f;
631+ r->curr=r->dest;
632+ }
631633
632634 return r->curr;
633635 }
@@ -642,11 +644,13 @@ void tRampSampleRateChanged(tRamp* const ramp) · 8 unmodified lines
642644 {
643645 _tRamp* r = *ramp;
644646 r->inv_sr_ms = 1.0f / (leaf.sampleRate * 0.001f);
645− r->inc = ((r->dest-r->curr)/r->time * r->inv_sr_ms)*((float)r->samples_per_tick);
647+ r->factor = (1.0f / r->time) * r->inv_sr_ms * (float)r->samples_per_tick;
648+ r->inc = (r->dest - r->curr) * r->factor;
646649 }
647650
648651
649652
653+
650654 /* RampUpDown */
651655 void tRampUpDown_init(tRampUpDown* const r, float upTime, float downTime, int samples_per_tick)
652656 {

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