This is resetnote.c in view mode; [Download] [Up]
/* does filepointer point to end or beginning of buffer currently loaded?*/ #include "../H/ugens.h" #include "../H/sfheader.h" #include <stdio.h> extern int NBYTES; /* size of buffer to allocate */ extern float SR; 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 long originalsize[NFILES]; /* to save byte length of file */ extern long filepointer[NFILES]; /* to save current pointer in file */ extern char wipe_is_off[NFILES]; extern int status[NFILES]; extern SFHEADER sfdesc[NFILES]; extern int fnums; resetnote(start,fno) float start; { int mod, current_loc, desired_loc; if(fno >= fnums) { fprintf(stderr,"You haven't opened file %d yet!\n",fno); closesf(); } current_loc = filepointer[fno] - SIZEOF_HEADER; /* filepointer is current byte in file i/o */ desired_loc = (int)((((start > 0) ? start : -start/SR) * (float)sfclass(&sfdesc[fno]) * SR) * (float)sfchans(&sfdesc[fno])); mod = desired_loc % (sfclass(&sfdesc[fno]) * sfchans(&sfdesc[fno])); desired_loc = mod ? desired_loc - mod : desired_loc; /* to make sure desired_loc starts on 0 byte of channel group */ if (((current_loc-NBYTES) < desired_loc) || (desired_loc >= (filepointer[fno]) - SIZEOF_HEADER)) { if(status[fno] == 2) _writeit(fno);/*write current buffer out*/ if((filepointer[fno] = sflseek(sfd[fno],desired_loc,0)) == -1) { fprintf(stderr,"CMIX: bad lseek in setnot\n"); closesf(); } pointer[fno] = 0; if((status[fno] == 0) || (wipe_is_off[fno])) _readit(fno); } else pointer[fno] = (desired_loc - current_loc)/sfclass(&sfdesc[fno]); }
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.