ftp.nice.ch/pub/next/unix/audio/Cmix.N.s.tar.gz#/cmix/objc/Delay.m

This is Delay.m in view mode; [Download] [Up]

#import "Delay.h"
#import <stdlib.h>


@implementation Delay : Object
{
	float sr,*delayLine;
	int phs,len;

}

+ create {
	id newInstance;
	newInstance = [ self new ];
	return newInstance;
}

-size:(float)aSize sRate:(int)aSR {
//	char *malloc();
	sr = aSR;
	len = aSize * aSR;
	if((delayLine = (float *)malloc((int)(len *  4))) == 0) {
		printf("can't malloc memory for delayline\n");
		exit(-1);
	}
	for(phs = 0; phs< (aSize * aSR); phs++) delayLine[phs] = 0;
	phs = 0;
}
	
- put: (float) sample {
	delayLine[phs] = sample;
	phs++;
	if(phs == len) phs = 0;
	return self;
}

- (float)get: (float)wait{
	int i;
	i = phs - (int)(wait * sr);
	if(i < 0) i += len;
	return(delayLine[i]);
}
- release {
	free(delayLine);
	return self;
}
@end

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.