
 
#include <math.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <conio.h>

#define MAX 5000000

long i,j,ilast;

double a[MAX],b[MAX],scale;

double sr;

FILE *pFile[2];

char filename[2][FILENAME_MAX];


void main()
{

    printf("\n txt_to_wav.cpp, ver 1.0, June 7, 2003 \n");
    printf("\n by Tom Irvine \n");	

	printf("\n This program converts a time history file into a text ");
	printf("\n format which can be readily converted into a wav format ");
	printf("\n by programs such as CoolEdit.");

	printf("\n\n The input file must have two columns: time(sec) and engineering units. \n");

	printf("\n\n Enter the input filename. \n");
    scanf("%s",filename[0]); 


	printf("\n\n Enter the output filename. \n");
    scanf("%s",filename[1]); 


    pFile[0]=fopen(filename[0],"rb");
    pFile[1]=fopen(filename[1],"w");


	scale=0.;

	i=0;
	while(1)
	{
        if(i == MAX){break;}

		if( fscanf(pFile[0],"%lf %lf\n",&a[i],&b[i]) <=0 ){ break;}
		
		if(fabs(b[i]) > scale ){ scale = fabs(b[i]) ;}
		
		i++;
	}
	ilast=i;
 
	double dur = (a[ilast-1]-a[0]);

    sr=double(ilast)/dur;

 	printf("\n           duration = %lf sec\n",dur);
	printf("\n  number of samples = %ld \n",ilast);
	printf("\n                 sr = %ld samples/sec\n",long(sr));
	printf("\n              scale = %lf \n",scale);

	fprintf(pFile[1],"SAMPLES: %ld \n",ilast );
	fprintf(pFile[1],"BITSPERSAMPLE:	8 \n");
    fprintf(pFile[1],"CHANNELS:	1 \n");
	fprintf(pFile[1],"SAMPLERATE:	%ld \n",long(sr));
    fprintf(pFile[1],"NORMALIZED:	FALSE \n");

	double x;

	for(i=0; i<ilast; i++)
	{
       x= 24.*((b[i])/scale)+128.;

       fprintf(pFile[1]," %ld \n",long(x));
	} 

    printf("\n Press any key to exit. \n");
	getch();
}  
