-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathEnvelope.c
30 lines (28 loc) · 868 Bytes
/
Envelope.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include "Granular.h"
#include <math.h>
void initEnvelope(){
int i;
for(i=0; i<ENVELOPE_SIZE; i++){
//just using ramp ups for now
envelope.cosineTable[i] = 0.5 * (1 - cos(((TWO_PI*i) / ((float)ENVELOPE_SIZE - 1))));
envelope.rampUpTable[i] = (float)i / (float)ENVELOPE_SIZE;
envelope.rampDownTable[i] = (float)i / (float)ENVELOPE_SIZE;
}
}
float getAmplitude(float percentageComplete, EnvelopeType envelopeType){
float amp;
switch(envelopeType){
case HANNING:
amp = envelope.cosineTable[(int)(percentageComplete * ENVELOPE_SIZE)];
break;
case RAMP_UP:
amp = envelope.rampUpTable[(int)(percentageComplete * ENVELOPE_SIZE)];
break;
case RAMP_DOWN:
amp = envelope.rampDownTable[(int)(percentageComplete * ENVELOPE_SIZE)];
break;
default:
amp = envelope.cosineTable[(int)(percentageComplete * ENVELOPE_SIZE)];
}
return amp;
}