Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void envelope(int patch, float attack, float decay, moduleData *data)
- {
- if(data->initflag[patch] == 0)
- {
- int i;
- float total, Nattack, Ndecay;
- data->initflag[patch] = 1;
- total = attack+decay;
- Nattack = (attack / total) * ENV_SIZE;
- Ndecay = ENV_SIZE - Nattack;
- //printf("\ntotal: %f\nNattack: %f\nNdecay: %f", total, Nattack, Ndecay);
- for(i = 0; i < ENV_SIZE; i++)
- {
- if(i < Nattack)
- data->envTable[patch][i] = i / Nattack;
- else
- data->envTable[patch][i] = (Ndecay - (i - Nattack)) / Ndecay;
- //printf("%d: %f\n", i, data->envTable[patch][i]);
- }
- data->envTable[patch][0] = 0;
- data->envTable[patch][ENV_SIZE] = 0;
- data->tempvar[patch] = ((1/total) * ENV_SIZE/SAMPLE_RATE); //tempvar = table increment
- data->tableIndex[patch] = 0;
- data->tempout[patch] = .0001;
- }
- //printf("increment = %f", data->tempvar[patch]);
- data->tempout[patch] = data->envTable[patch][(int)data->tableIndex[patch]];
- data->tableIndex[patch] += data->tempvar[patch];
- }
Add Comment
Please, Sign In to add comment