This is Reson.m in view mode; [Download] [Up]
#import "Reson.h" extern float SR; @implementation Reson : Object { float a0,a1,a2,a3,a4; } + create { id newInstance; newInstance = [ self new ]; return newInstance; } - cf:(float)centerfreq bw:(float)bandwidth scl:(float)scale init:(int)initialize { double exp(),cos(),sqrt(); float c,temp; if(!initialize) { a4 = 0; a3 = 0;} a2 = exp(-PI2 * bandwidth/SR); temp = 1. - a2; c = a2+ 1; a1 = 4. * a2/c * cos(PI2 * centerfreq/SR); if(scale < 0) a0 = 1; if(scale) a0 = sqrt(temp/c*(c*c-a1*a1)); if(!scale) a0 = temp*sqrt(1.-a1*a1/(4.*a2)); return self; } - (float)bang: (float) sample { float temp; temp = a0 * sample + a1 * a3 - a2 * a4; a4= a3; a3 = temp; return(temp); } @end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.