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]); } @end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.