This is sndReverse.c in view mode; [Download] [Up]
/* * Usage: sndReverse <inputSoundFile> <outputSoundFile> */ #import <stdio.h> #import <sound/sound.h> static void fail(char *s, char *s2) { printf("*** %s%s\n\n",s,s2); exit(1); /* Exit, indicating error */ } int processSound(int inCount, short *inPtr, short *outPtr, int nChans) { int i; short *pNew = (short *) (inPtr+inCount); for (i=0; i<inCount; i++) *outPtr++ = *pNew--; return inCount; } void main(int argc,char **argv) { SNDSoundStruct *sndin, *sndout; short *inPtr, *outPtr; FILE *outstream; int inCount, outCount, width, nChans; if (SNDReadSoundfile(*++argv,&sndin)) fail("could not open input file ",*argv); else SNDGetDataPointer(sndin, (char **)(&inPtr), &inCount, &width); if (width != 2) fail("Can only handle 16-bit soundfiles",""); nChans = sndin->channelCount; inCount /= nChans; /* to get sample frames */ SNDAlloc(&sndout, sndin->dataSize, SND_FORMAT_LINEAR_16, sndin->samplingRate, nChans,4); SNDGetDataPointer(sndout, (char **)(&outPtr), &outCount, &width); outCount /= nChans; /* to get sample frames */ if (NULL == (outstream = fopen(*++argv,"w"))) fail("could not open output file ",*argv); if (SNDWriteHeader(fileno(outstream),sndout)) fail("could not write output file ",*argv); outCount = processSound(inCount, inPtr, outPtr, nChans); fwrite(outPtr,2*nChans,outCount,outstream); SNDFree(sndin); fclose(outstream); SNDFree(sndout); exit(0); }
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.