#import "Oscili.h"

@implementation Oscili : Object
{
	float phs,si,amp,*floc;
}

+ create {
	id newInstance;		// local variable declaration
printf("in create\n");
	newInstance = [ self new ]; 	// create new instance
	[ newInstance phs : 0 ];
	return newInstance;		// return the new instance
}

- phs: (float) aPhs{
	phs = aPhs;
	return self;
}

- si: (float) aSi {
	si = aSi;
	return self;
}

- amp: (float) aAmp {
	amp = aAmp;
	return self;
}

- floc: (float *) aFloc {
	floc = aFloc ;
	return self;
}

- (float) value {
	register i = phs;
	register k = (i+1) % 512;
	float frac = phs - i;
	phs += si;
	while(phs >= 512)
		phs -= 512;
	return(*(floc+i) + (*(floc+k) - *(floc+i)) * frac) * amp;
}

@end
