ftp.nice.ch/pub/next/unix/audio/cmusic.bs.N.tar.gz#/src/nextsf/tosnd.c

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

#import <stdio.h>
#import <sound/sound.h>
#import <sys/file.h>

SNDSoundStruct *snd ;

#define BUF 4096

main( argc, argv ) int argc ; char *argv[] ; {
 int i, chan = 1, rd, rate = SND_RATE_LOW, byterev = 0 ;
 int fd ;
 short *snddata ;
    if ( argc == 1 ) {
	fprintf( stderr,
"tosnd usage: tosnd [-h] [-s] [-x] file < input\n" ) ;
	fprintf( stderr, 
"                    -h  is hi (44100) sampling rate [22050 assumed]\n" ) ;
	fprintf( stderr, 
"                    -s  is stereo                    [mono assumed]\n" ) ;
	fprintf( stderr, 
"                    -x  to reverse bytes        [normally not done]\n" ) ;
	fprintf( stderr, 
"                    file is name of output file     [.snd extension advised]\n" ) ;
	fprintf( stderr, 
"                    input is 16-bit linear shorts\n" ) ;
	exit( -1 ) ;
    }
    for ( i = 1 ; i < argc ; i++ ) {
	if ( !strcmp( argv[i], "-s" ) )
	    chan = 2 ;
	if ( !strcmp( argv[i], "-h" ) )
	    rate = SND_RATE_HIGH ;
	if ( !strcmp( argv[i], "-x" ) )
	    byterev++ ;
    }
    if ( 
	( fd = open( argv[argc-1], O_CREAT | O_WRONLY | O_TRUNC, 0644 ) )
    < 0 ) {
	fprintf( stderr, "tosnd: Unable to open '%s'\n", argv[argc-1] ) ;
	exit( -1 ) ;
    }
    snd = (SNDSoundStruct *) calloc( sizeof(SNDSoundStruct), 1 ) ;
    snddata = (short *) calloc( sizeof(short), BUF ) ;
    snd->magic = SND_MAGIC ;
    snd->dataLocation = sizeof(SNDSoundStruct) ;
    snd->dataSize = 0 ;
    snd->dataFormat = SND_FORMAT_LINEAR_16 ;
    snd->samplingRate = rate ;
    snd->channelCount = chan ;
    SNDWriteHeader( fd, snd ) ;
    while ( ( rd = fread( snddata, sizeof(short), BUF, stdin ) ) != 0 ) {
	if ( byterev )
		for ( i = 0 ; i < BUF ; i++ )
			snddata[i] =
			 ( snddata[i] << 8 ) | ( ( snddata[i] >> 8 ) & 0xff ) ;
	snd->dataSize += rd<<1 ;
	write( fd, snddata, rd<<1 ) ;
    }
    close( fd ) ;
    fd = open( argv[argc-1], O_WRONLY, 0644 ) ;
    SNDWriteHeader( fd, snd ) ;
    close( fd ) ;
}

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