/************ * Includes * *********/ #include #include #include "sndbuf_smart.h" /************* * Constants * **********/ //-- Geometry -- #define GEOM_FREQ 689.0625 #define GEOM_WAVELENGTH 64 #define GEOM_MICDIST 29 //-- Pattern -- #define PAT_CHAN 1 #define PAT_LEN 1024 //-- Memory -- #define SBUF_CHAN_MAX 2 #define SBUF_LEN_MAX 10*44100 //-- Misc -- #define ARGC_EXPECTED 3 #define ARGV_ME 0 #define ARGV_DATASET 1 #define ARGV_RESULT 2 /******** * Main *******/ int main(int argc, char** argv) { //-- Variable Declarations -- sndbuf_smart dat(SBUF_CHAN_MAX, SBUF_LEN_MAX);//The sound buffer we're working with sndbuf_smart pat(SBUF_CHAN_MAX, SBUF_LEN_MAX);//The pat we're filtering against double ang_r; //The angle of incidence, in radians double ang_d; //The angle of incidence, in degrees //-- Setup -- if (ARGC_EXPECTED != argc) { fprintf(stderr, "Usage: %s \n", argv[ARGV_ME]); exit(1); } //-- Get Dataset -- printf("Reading dat: %s\n", argv[ARGV_DATASET]); dat.file_read(argv[ARGV_DATASET]); printf("\tRead %d channels", dat.chan); printf(", and %d samples\n", dat.samp); //-- Generate pattern -- printf("Generating pat..."); pat.chan = PAT_CHAN; pat.samp = PAT_LEN; pat.gen_tone(ALL_CHAN, GEOM_FREQ); printf("\tdone.\n"); //-- Filter -- printf("Filtering..."); dat.fir(pat); printf("\tDone.\n\n"); //-- Calculate the angle of incidence -- ang_r = dat.incidence_quick(0, 1, GEOM_WAVELENGTH, GEOM_MICDIST); ang_d = ang_r * 180 / M_PI; printf("Incidence (radians):\t%f\n", ang_r); printf("Incidence (defrees):\t%f\n", ang_d); printf("\n"); //-- Write -- printf("Writing res..."); dat.file_write(argv[ARGV_RESULT]); printf("\tDone.\n\n"); }