#include "../H/ugens.h" #include #include #define NFILES 4 /* maximum number of files allowed at once */ extern int NBYTES; /* size of buffer to allocate */ extern int sfd[NFILES]; /* soundfile descriptors */ extern int pointer[NFILES]; /* to be used as pointer within sound buffer */ extern int bufsize[NFILES]; /* word length of buffer */ extern char *buffer[NFILES]; /* address of buffer */ extern char *peak[NFILES]; /* array to store peak amplitude for nchannels */ extern char *ovpeak[NFILES]; /* overall peak amplitude */ extern int fnums; /* total of opened soundfiles */ extern char cylno[NFILES][4]; /* soundfile name (as cylinder number) */ extern struct SFDESC sfdesc[NFILES]; int doit; peakscan(p,n_args) float *p; int n_args; { register jj,*ibuf,*jbuf,ipoint; float *fbuf,*pk,peakval,start,time,factor; int stopit(); int fno; long nsamps,loop; fno = p[3]; nsamps = setnot(p[0],p[1],fno); peakval = 0; ibuf = (int *)buffer[fno]; signal(SIGINT,SIG_DFL); signal(SIGINT,stopit); pk = (float *)peak[fno]; factor = sfdesc[fno].sf_srate * (float)sfdesc[fno].sf_chans; doit = 1; start = p[0]; for(loop=0; loop *(pk + jj)) *(pk + jj) = abs(*jbuf); pointer[fno]+ = sfdesc[fno].sf_chans; if(pointer[fno] >= bufsize[fno] ) { pointer[fno] = 0; time = start + (float)loop/sfdesc[fno].sf_srate; printf(" time = %f ,peak so far = ",time); for(jj=0; jj