
#import "Comb.h"

@implementation Comb: Object
{
	float rev,sr,*delayLine;
	int phs,len;
}
+ create {
	id newInstance;
	newInstance = [ self new ];
	return newInstance;
}
-loopt:(float)loop sRate:(int)aSR revTime:(float)arevtime {
	char *malloc();
	double pow();
	sr = aSR;
	len = loop * aSR + .5;
	rev = (float)pow(.001,(double)(loop/arevtime));
	if((delayLine = (float *)malloc((int)(len *  4))) == 0) {
		printf("can't malloc memory for delayline\n");
		exit(-1);
	}
	for(phs = 0; phs< len; phs++) delayLine[phs] = 0;
	phs = 0;
}
- (float)bang: (float) sample {
	float temp;
	if(phs >= len) phs = 0;
	temp = delayLine[phs];
	delayLine[phs] = delayLine[phs++] * rev + sample;
	return (temp) ;
}
- freeup {
	free(delayLine);
	return;
}
@end
