This is info.c in view mode; [Download] [Up]
#include "../H/ugens.h" #include "../H/sfheader.h" #include <stdio.h> #include <sys/file.h> #include <sys/types.h> #include <sys/stat.h> extern SFHEADER sfdesc[NFILES]; extern SFMAXAMP sfm[NFILES]; extern struct stat sfst[NFILES]; extern int headersize[NFILES]; static SFCODE ampcode = { SF_MAXAMP, sizeof(SFMAXAMP) + sizeof(SFCODE) }; double _sr(p,n_args) float *p; { return(sfsrate(&sfdesc[(int)p[0]])); } double _chans(p,n_args) float *p; { return(sfchans(&sfdesc[(int)p[0]])); } double _class(p,n_args) float *p; { return(sfclass(&sfdesc[(int)p[0]])); } double _dur(p,n_args) float *p; { char *cp,*getsfcode(); int i; float dur; i = p[0]; cp = getsfcode(&sfdesc[i],SF_MAXAMP); bcopy(cp + sizeof(SFCODE), (char *) &sfm[i], sizeof(SFMAXAMP)); dur = (float)(sfst[i].st_size - headersize[i]) /(float)sfclass(&sfdesc[i])/(float)sfchans(&sfdesc[i]) /sfsrate(&sfdesc[i]); return(dur); } double _peak(p,n_args) float *p; { char *cp,*getsfcode(); int i,j; float peak; j = p[0]; cp = getsfcode(&sfdesc[j],SF_MAXAMP); bcopy(cp + sizeof(SFCODE), (char *) &sfm[j], sizeof(SFMAXAMP)); if(cp != NULL) { for(i=0,peak=0; i<sfchans(&sfdesc[j]); i++) if(sfmaxamp(&sfm[j],i) > peak) peak=sfmaxamp(&sfm[j],i); return(peak); } return(0.); } double _left(p,n_args) float *p; { char *cp,*getsfcode(); int i,j; j = p[0]; cp = getsfcode(&sfdesc[j],SF_MAXAMP); bcopy(cp + sizeof(SFCODE), (char *) &sfm[j], sizeof(SFMAXAMP)); if(cp != NULL) return(sfmaxamp(&sfm[j],0)); return(0.); } double _right(p,n_args) float *p; { char *cp,*getsfcode(); int i,j; j = p[0]; if(sfchans(&sfdesc[j]) == 1) return(0); cp = getsfcode(&sfdesc[j],SF_MAXAMP); bcopy(cp + sizeof(SFCODE), (char *) &sfm[j], sizeof(SFMAXAMP)); if(cp != NULL) return(sfmaxamp(&sfm[j],1)); return(0.); }
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.