This is sndnoise.c in view mode; [Download] [Up]
/* Copyright 1988-1992, NeXT Inc. All rights reserved. */
/*
* sndnoise.c - create uniform noise at specified amplitude and duration.
*/
#import <stdio.h>
#import <libc.h>
#import <math.h> /* pow() */
#import <sound/sound.h>
#import <architecture/byte_order.h>
#define SRATE 44100
static void fails(char *s, char *s2)
{
fprintf(stderr, "sndnoise: "); /* error message */
fprintf(stderr, s,s2);
fprintf(stderr, "\n\n");
exit(1); /* error exit */
}
void main (int argc, char *argv[])
{
int i,err, nchans, sampleCount;
SNDSoundStruct *sound;
FILE *outstream;
short *data;
double amp,duration;
short samp;
if (argc != 4) {
fprintf(stderr,
"%s - create uniform noise at specified amplitude and duration.\n",
argv[0]);
fprintf(stderr, "Usage: %s amp(<1.0) duration(sec) out.snd\n",argv[0]);
exit(1);
}
/*
* Noise factor
*/
sscanf(argv[1],"%lf",&);
sscanf(argv[2],"%lf",&duration);
/*
* Input sound file
*/
sampleCount = duration * SRATE;
err = SNDAlloc(&sound,sampleCount * sizeof(short),
SND_FORMAT_LINEAR_16,SRATE,1,4);
data = (short *) ((char *)sound + sound->dataLocation);
srandom(12345);
for (i = 0; i < sampleCount; i++) {
samp = (short) random();
if (amp <= 1.0)
samp *= amp;
*data++ = NXSwapHostShortToBig(samp);
}
/*
* Output sound file
*/
#if 1
SNDWriteSoundfile(argv[3],sound);
#else
/* Lower level method, useful if sound created from a single buffer */
if (NULL == (outstream = fopen(argv[3],"w")))
fails("could not open output file '%s'",argv[3]);
printf("Writing output file %s\n",argv[3]);
if (SNDWriteHeader(fileno(outstream),sound))
fails("could not write output file '%s'",argv[3]);
fwrite(data,2,sampleCount,outstream);
#endif
}
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.