rlm@23: #include rlm@23: #include rlm@23: #include rlm@23: #include rlm@23: #include rlm@23: #include "SndfileWavUtil.h" rlm@23: rlm@23: // foreward declaration. This is defined in DFT.cpp rlm@23: int DFT(int dir,int m,double *x1,double *y1); rlm@23: rlm@23: const int Points = 8; rlm@23: rlm@23: int rlm@23: do_gen (int argc, char * argv []) rlm@23: { rlm@23: int frames; rlm@23: int targ_freqA; rlm@23: int targ_freqB; rlm@23: char* refWavFile; rlm@23: char* outWavFile; rlm@23: FILE* outPCM; rlm@23: const int short_sz = sizeof(short int); rlm@23: rlm@23: frames = atoi(argv[1]); rlm@23: targ_freqA = atoi(argv[2]); rlm@23: targ_freqB = atoi(argv[3]); rlm@23: refWavFile = argv[4]; rlm@23: outWavFile = argv[5]; rlm@23: rlm@23: outPCM = fopen("output.pcm", "w"); rlm@23: rlm@23: printf("targ_freqA %d\ntarg_freqB %d\nframes %d\n", targ_freqA, targ_freqB, frames); rlm@23: rlm@23: while(frames-- > 0){ rlm@23: rlm@23: double dreal[Points]; rlm@23: double dimag[Points]; rlm@23: rlm@23: for(int i = 0; i < Points; i++) rlm@23: dreal[i] = (i == targ_freqA) ? 1000 : (i == targ_freqB) ? 1000 : 0; rlm@23: for(int i = 0; i < Points; i++) rlm@23: dimag[i] = 0.0; rlm@23: rlm@23: DFT(-1,Points,dreal,dimag); rlm@23: rlm@23: for(int i = 0; i < Points; i++){ rlm@23: short int rv = (int)dreal[i]; rlm@23: assert(fwrite(&rv,short_sz,1,outPCM)); rlm@23: } rlm@23: rlm@23: } rlm@23: rlm@23: fclose(outPCM); rlm@23: rlm@23: generate_wav("output.pcm", refWavFile, outWavFile); rlm@23: } rlm@23: rlm@23: int rlm@23: main(int argc, char* argv[]) rlm@23: { rlm@23: do_gen(argc, argv); rlm@23: exit(1); rlm@23: }