This is sndpeak.c in view mode; [Download] [Up]
# include <stdio.h> #define NORM(x,y) ((float) (y) / (float) (x == SF_SHORT ? 32767.0 : 1.0)) #ifndef LINT static char SccsId[] = "@(#)sndpeak.c 1.7 10/29/85 IRCAM"; #endif # include <sys/types.h> # include <sys/stat.h> # include <sys/file.h> # include "../H/sfheader.h" # define CONTINUE error++; continue /* This program is designed to find the peak absolute value of an existing soundfile and put it in the header */ float maxamp = 0.0; long totalbytes, maxloc; main(argc,argv) int argc; char *argv[]; { int sfd,error = 0; struct stat st; SFMAXAMP *sfm, *getmaxamp(); SFHEADER hd; int update,i; long sampframes; while(--argc) { update = 1; if((sfd = open(*++argv,O_RDWR)) == -1) { if((sfd = open(*argv,O_RDONLY)) == -1) { fprintf(stderr,"Can't find soundfile %s\n",*argv); CONTINUE; } fprintf(stderr,"Can't update file %s - reading only!\n",*argv); update = 0; } if(rheader(sfd,&hd)) { fprintf(stderr,"Bad header read for %s\n",*argv); CONTINUE; } if(fstat(sfd,&st)) { fprintf(stderr,"Bad stat() for %s\n",*argv); CONTINUE; } sampframes = sfbsize(&st) / sfchans(&hd) / sfclass(&hd); if((sfm = getmaxamp(sfd,update,0,sampframes)) == NULL) { fprintf(stderr,"Bad return from getmaxamp\n"); CONTINUE; } printf("Maxamp for file %s:\n",*argv); for(i = 0; i < sfchans(&hd); i++) { printf("channel %d = ",i + 1); if(sfmaxamp(sfm,i)) printf("%f (absolute %f) at sample location %d\n", NORM(sfclass(&hd),sfmaxamp(sfm,i)), sfmaxamp(sfm,i),sfmaxamploc(sfm,i)); else printf("silence\n"); } close(sfd); } exit(error); }
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.