ftp.nice.ch/pub/next/unix/audio/sndutil.1.3.s.tar.gz#/sndutil-1.3/sndtools/asciitosnd.c

This is asciitosnd.c in view mode; [Download] [Up]

/*
 * asciitosnd.c
 *	Convert an ascii integer file to a 16-bit linear soundfile.
 *	Creates a mono file with sampling rate SND_RATE_CODEC!!!!!!!.
 */
#import <stdio.h>
#import <sound/sound.h>
#import <architecture/byte_order.h>

void main (int argc, char *argv[])
{
    SNDSoundStruct s;
    FILE *afp, *sfp;
    short sample;

    if (argc != 3) {
	fprintf(stderr,
		"%s - convert an ascii integer file to a 16-bit linear soundfile.\n",
		argv[0]);
	fprintf(stderr, "Usage: asciitosnd ascii-file soundfile\n");
	exit(1);
    }
    if ((afp = fopen(argv[1], "r")) == NULL) {
	fprintf(stderr, "Cannot open ascii file: %s\n", argv[1]);
	exit(1);
    }
    if ((sfp = fopen(argv[2], "w+")) == NULL) {
	fprintf(stderr, "Cannot open soundfile: %s\n", argv[2]);
	exit(1);
    }

    s.magic = NXSwapHostIntToBig(SND_MAGIC);
    s.dataLocation = NXSwapHostIntToBig(sizeof(SNDSoundStruct));
    s.dataSize = 0;
    s.dataFormat = NXSwapHostIntToBig(SND_FORMAT_LINEAR_16);
    s.samplingRate = NXSwapHostIntToBig((int)SND_RATE_CODEC);
    s.channelCount = NXSwapHostIntToBig(1);
    *(int *)s.info = 0;
    fwrite((void *)&s, sizeof(SNDSoundStruct), 1, sfp);
    while (!feof(afp)) {
	fscanf(afp, "%hd ", &sample);
	sample = NXSwapHostShortToBig(sample);
	fwrite((void *)&sample, sizeof(short), 1, sfp);
	s.dataSize += sizeof(short);
    }
    s.dataSize = NXSwapHostIntToBig(s.dataSize);
    rewind(sfp);
    fwrite((void *)&s, sizeof(SNDSoundStruct), 1, sfp);
    fclose(afp);
    fclose(sfp);
}

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.