This is gaindelay.c in view mode; [Download] [Up]
#include <stdio.h> #include <math.h> #include <carl/carl.h> main(narg,argv) int narg; char *argv[]; { register int i, j, delay; register float *buf; float input, output, gain; extern exprerr; if (narg < 3) { fprintf(stderr,"Usage: gaindelay gain delay\n"); exit(1); } gain = expr(argv[1]); if (exprerr) { fprintf(stderr, "Illegal gain expression '%s'\n",argv[1]); exit(1); } delay = expr(argv[2]); if (exprerr) { fprintf(stderr, "Illegal gain expression '%s'\n",argv[1]); exit(1); } if (delay<1 || delay>100000) { fprintf(stderr,"Illegal delay = %d\n",delay); exit(1); } if (isatty(0)) { fprintf(stderr,"gaindelay input must be a file or pipe.\n"); exit(1); } buf = (float *) calloc(delay, sizeof(float)); /* allocate delay buffer */ i = -1; if (isatty(1)) { while ( getfloat(&input) > 0) { if (++i >= delay) i -= delay; printf("%f\n", *(buf+i)); *(buf+i) = gain * input; } for (j = 1; j < delay; j++) { if (++i >= delay) i -= delay; printf("%f\n", *(buf+i)); } } else { while ( getfloat(&input) > 0) { if (++i >= delay) i -= delay; putfloat( (buf+i) ); *(buf+i) = gain * input; } for (j = 1; j < delay; j++) { if (++i >= delay) i -= delay; putfloat( (buf+i) ); } flushfloat(); } exit(0); }
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.