Included in this demo: - C source programs for simulating a moving talker via: time-iterative method (adapt.c) linear interpolation method (appro_1.c) quadratic interpolation method (appro_2.c) See section 3.4 of paper for additional details - a file of interpolation filter coefficients (coeff.dat) - some test data for appro_1.c (testin.dat and testout.dat). The first set of data (testin.dat) contains 300 samples from wide-band stationary noise band-pass filtered between 500 and 4500Hz. The second set of data (testout.dat) is the corresponding microphone response obtained with appro_1.c. This response is calculated for a linear source motion of 2m/s. By reading the programs, you will find additional details on how to set up the room geometry and other related parameters. In particular, you can speed up computation time considerably by limiting the number of images included in the calculation (somewhat equivalent to using shorter reverberation radius). To run a program, simply compile it and issue the following command: For example: "appro_1 testin.dat coeff.dat 50 testout.dat". I hope that these programs will be useful to you. I would appreciate receiving a copy of any of your publications making use of these programs. Sincerely Benoit Champagne xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx C Source Code: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx /* Module: adapt.c Purpose: Simulation of microphone response to moving point source in rectangular room. Using iterative approach: delays at time n are obtained from delays at time n-1 with one Newton-Raphson iteration. Date: June 1992 Authors: B. Champagne Affiliation: INRS-Telecommunications Universite du Quebec Verdun, Quebec Canada H3E 1H6 Using the program: Main call: adapt audfilein coeff_file audfileout where audfilein: input file containing source signal audfileout: output file for storing microphone response coeff_file: file containing the coefficients of the symmetrical interpolation filter (the impulse response of this filter is assumed symmetrical, so that only the coefficients corresponding to the causal part of the response are stored) Changing room characteristics, microphone location and source trajectory: Room characteristics are defined with symbolic constants at the beginning of the program. They can be changed easily. The microphone location and the source trajectory are defined in a function called calc_gr_gdotr. The trajectory can be changed to accommodate different scenarios. External routines required: None. */ /* Standard libraries: */ #include #include #include /* Room dimensions in meters: */ #define Lx 10.0 #define Ly 10.0 #define Lz 3.0 /* Reflection coefficients: */ #define BETAXP 0.7 /* wall perpendicular to +x */ #define BETAXM 0.7 /* wall perpendicular to -x */ #define BETAYP 0.7 #define BETAYM 0.7 #define BETAZP 0.5 #define BETAZM 0.5 /* Speed of sound in air (m/s): */ #define C 343.0 /* Scaling factor for microphone output: */ #define AMP 200.0 /* Parameters related to interpolation process: */ #define FS 10000.0 /* sampling frequency of input data */ #define L 8 /* upsampling factor */ #define FSL FS*L /* interpolation rate */ #define NCOEF 59 /* interpolation filter has 2*NCOEF+1 taps */ #define SIZE (2800*L) /* size of circular buffer for interpolated samples */ /* Note: this buffer must be large enough to store all past samples that enter the microphone response at a given time. Knowledge of the reverberation time, or some other bound on the maximum allowed delay, is necessary to determine SIZE. */ #define K (NCOEF+L-1) /* NCOEF+L-1 */ /* Number of Newton-Raphson iterations: */ #define NITER 1 /* Macro substitution: */ #define MACFOR \ for (r1 = -n1; r1 < n1+1; r1++) \ for (r2 = -n2; r2 < n2+1; r2++) \ for (r3 = -n3; r3 < n3+1; r3++) { \ tmp1 = r1*Lx; \ tmp2 = r2*Ly; \ tmp3 = r3*Lz; \ tmp4 = tmp1*tmp1 + tmp2*tmp2 + tmp3*tmp3; \ if (tmp4 <= revrad2) { /* External variables: */ char audfilein[256], /* name of input audio file */ audfileout[256], /* name of output audio file */ coeff_file[256], /* name of file containing filter coefficients */ line[80]; /* line buffer for file access */ int next, /* index of next speech sample to be read */ r1,r2,r3, /* indices of images */ n1,n2,n3, /* limits of indices */ i0buf2; /* index pointing to most recent element of buf2 */ float speechin[40000], /* input speech samples */ speechout[40000], /* output speech samples */ tau[20][20][60], /* propagation delay for source images*/ taudot[20][20][60], /* delay rates */ intfilter[NCOEF+1], /* interpolation filter coefficients */ buf1[2*K+1], /* buffer containing zero-padded signal */ buf2[SIZE], /* circular buffer for interpolated samples */ revrad2, /* square of reverberation radius */ tmp1,tmp2,tmp3,tmp4; /* temporary variables */ double beta[20][20][60]; /* composite reflection coefficients */ void calc_room_params(), calc_beta(), calc_gr_gdotr(float time, float *grpt, float *gdotrpt), read_interpolate(), read_filter_coeffs(); FILE *filein, *fileout; /* Main function: */ main(int argc, char *argv[]) { int index, /* position of current sample */ nsamp, /* number of samples in audio file */ tauri, /* interpolated delay expressed in high rate samples */ nmax, /* number of samples to be processed */ i,j,k; /* dummy variables */ float scale, /* scaling factor for output speech samples */ time, /* time in seconds */ gr, /* distance function */ gdotr, /* derivative of distance function */ taur, /* delay for current mode */ taudotr, /* delay rate */ pi; /* 3.14... */ clock_t t1,t2,t3; /* used for timing */ switch (argc) { case 4: strcpy(audfilein,argv[1]); /* input audio file name */ strcpy(coeff_file,argv[2]); /* file of filter coefficients */ strcpy(audfileout,argv[3]); /* output audio file name */ break; case 3: case 2: printf("missing argument\n"); exit(-1); case 1: printf("This program calculates the response of a microphone\n"); printf("to a moving point source in a rectangular room\n"); exit(0); } /* end switch */ /* Open output file: */ fileout = fopen(audfileout, "w"); /* Preliminary calculations: */ t1 = clock()/CLOCKS_PER_SEC; pi = 4. * atan(1.0); scale = AMP / (4.*pi*C); /* Calculate reverberation time and related parameters: */ calc_room_params(); /* Calculate composite reflection coefficients: */ calc_beta(); /* Read coefficients of interpolation filter: */ read_filter_coeffs(); /* Open, read and close input speech file: */ filein = fopen(audfilein, "r"); nsamp = 0; while (fgets(line, 80, filein) != NULL) { sscanf(line, "%f", &speechin[nsamp]); nsamp++; } /* for (i=0; i<40; i++) printf("%16.7e \n", speechin[i]); */ /* Initialize zero-padded speech buffer (this buffer will be used to resample the input signal at the higher rate FSL: the zero-padded samples in this buffer will be convolved with the interpolation filter coefficients): */ next = 0; for (i=0; i=0; i--) { tmp = intfilter[0]*buf1[K-i]; for (j=1; j<=NCOEF; j++) tmp += intfilter[j]*(buf1[K-i-j] + buf1[K-i+j]); buf2[i0buf2+i] = tmp; } return; } /* END read_interpolate */ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx /* Module: appro_1.c Purpose: Simulation of microphone response to moving point source in rectangular room. In this approach, the time axis is divided in frames of fixed duration. At the frame boundaries, the propagation delays are calculated exactly. For other values of time, the delays are obtained through linear interpolation over successive frames. Date: June 1992 Authors: B. Champagne Affiliation: INRS-Telecommunications Universite du Quebec Verdun, Quebec Canada H3E 1H6 Using the program: Main call: appro_1 audfilein coeff_file framesize audfileout where audfilein: input file containing source signal audfileout: output file for storing microphone response coeff_file: file containing the coefficients of the symmetrical interpolation filter (the impulse response of this filter is assumed symmetrical, so that only the coefficients corresponding to the causal part of the response are stored) framesize: size of frames in samples. Changing room characteristics, microphone location and source trajectory: Room characteristics are defined with symbolic constants at the beginning of the program. They can be changed easily. The microphone location and the source trajectory are defined in a function called calc_gr_gdotr. The trajectory can be changed to accommodate different scenarios. External routines required: None. */ /* Standard libraries: */ #include #include #include /* Room dimensions in meters: */ #define Lx 10.0 #define Ly 10.0 #define Lz 3.0 /* Reflection coefficients: */ #define BETAXP 0.7 /* wall perpendicular to +x */ #define BETAXM 0.7 /* wall perpendicular to -x */ #define BETAYP 0.7 #define BETAYM 0.7 #define BETAZP 0.5 #define BETAZM 0.5 /* Speed of sound in air (m/s): */ #define C 343.0 /* Scaling factor for microphone output: */ #define AMP 200.0 /* Parameters related to interpolation process: */ #define FS 10000.0 /* sampling frequency of input data */ #define L 8 /* upsampling factor */ #define FSL FS*L /* interpolation rate */ #define NCOEF 59 /* interpolation filter has 2*NCOEF+1 taps */ #define SIZE (2800*L) /* size of circular buffer for interpolated samples */ /* Note: this buffer must be large enough to store all past samples that enter the microphone response at a given time. Knowledge of the reverberation time, or some other bound on the maximum allowed delay, is necessary to determine SIZE. */ #define K (NCOEF+L-1) /* NCOEF+L-1 */ /* Number of Newton-Raphson iterations: */ #define NITER 2 /* Macro substitution (summation over all images): */ #define MACFOR \ for (r1 = -n1; r1 < n1+1; r1++) \ for (r2 = -n2; r2 < n2+1; r2++) \ for (r3 = -n3; r3 < n3+1; r3++) { \ tmp1 = r1*Lx; \ tmp2 = r2*Ly; \ tmp3 = r3*Lz; \ tmp4 = tmp1*tmp1 + tmp2*tmp2 + tmp3*tmp3; \ if (tmp4 <= revrad2) { /* External variables: */ char audfilein[256], /* name of input audio file */ audfileout[256], /* name of output audio file */ coeff_file[256], /* name of file containing filter coefficients */ line[80]; /* line buffer used for file access */ int next, /* index of next speech sample to be read */ r1,r2,r3, /* indices of images */ n1,n2,n3, /* limits of indices */ i0buf2; /* index pointing to most recent element of buf2 */ float speechin[40000], /* input speech samples */ speechout[40000], /* output speech samples */ tau[20][20][60][2], /* delays at beginning and end of frame */ taudot[20][20][60], /* delay rates over frame */ intfilter[NCOEF+1], /* interpolation filter coefficients */ buf1[2*K+1], /* buffer containing zero-padded signal */ buf2[SIZE], /* circular buffer for interpolated samples */ revrad2, /* square of reverberation radius */ tmp1,tmp2,tmp3,tmp4; /* temporary variables */ double beta[20][20][60]; /* composite reflection coefficients */ void calc_room_params(), calc_beta(), calc_gr_gdotr(float time, float *grpt, float *gdotrpt), read_interpolate(), read_filter_coeffs(); FILE *filein, *fileout; /* Main function: */ main(int argc, char *argv[]) { int index, /* position of current sample */ nsamp, /* number of samples in audio file */ tauri, /* interpolated delay expressed in high rate samples */ framesize, /* size of frames */ offset, /* position of 1st sample of current frame */ nframe, /* number of frames to be processed */ nmax, /* number of samples to be processed (user limit) */ i,j,k; /* dummy variables */ float scale, /* scaling factor for output speech samples */ time, /* time in seconds */ gr, /* distance function */ gdotr, /* derivative of distance function */ taur, /* delay for current mode */ taudotr, /* delay rate */ pi; /* 3.14... */ clock_t t1,t2,t3; /* used for timing */ switch (argc) { case 5: strcpy(audfilein,argv[1]); /* input audio file name */ strcpy(coeff_file,argv[2]); /* file of filter coefficients */ framesize = atoi(argv[3]); /* number of samples in a frame */ strcpy(audfileout,argv[4]); /* output audio file name */ break; case 4: case 3: case 2: printf("missing argument\n"); exit(-1); case 1: printf("This program calculates the response of a microphone\n"); printf("to a moving point source in a rectangular room\n"); exit(0); } /* end switch */ /* Open output file: */ fileout = fopen(audfileout, "w"); /* Preliminary calculations: */ t1 = clock()/CLOCKS_PER_SEC; pi = 4. * atan(1.0); scale = AMP / (4.*pi*C); /* Calculate reverberation time and related parameters: */ calc_room_params(); /* Calculate composite reflection coefficients: */ calc_beta(); /* Read coefficients of interpolation filter: */ read_filter_coeffs(); /* Open, read and close input speech file: */ filein = fopen(audfilein, "r"); nsamp = 0; while (fgets(line, 80, filein) != NULL) { sscanf(line, "%f", &speechin[nsamp]); nsamp++; } /* for (i=0; i<40; i++) printf("%16.7e \n", speechin[i]); */ /* Initialize zero-padded speech buffer (this buffer will be used to resample the input signal at the higher rate FSL: the zero-padded samples in this buffer will be convolved with the interpolation filter coefficients): */ next = 0; for (i=0; i=0; i--) { tmp = intfilter[0]*buf1[K-i]; for (j=1; j<=NCOEF; j++) tmp += intfilter[j]*(buf1[K-i-j] + buf1[K-i+j]); buf2[i0buf2+i] = tmp; } return; } /* END read_interpolate */ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx /* Module: appro_2.c Purpose: Simulation of microphone response to moving point source in rectangular room. In this approach, the time axis is divided in frames of fixed duration. At the frame boundaries, the propagation delays are calculated exactly. For other values of time, the delays are obtained through quadratic interpolation over successive pairs of frames Date: June 1992 Authors: B. Champagne Affiliation: INRS-Telecommunications Universite du Quebec Verdun, Quebec Canada H3E 1H6 Using the program: Main call: appro_2 audfilein coeff_file framesize audfileout where audfilein: input file containing source signal audfileout: output file for storing microphone response coeff_file: file containing the coefficients of the symmetrical interpolation filter (the impulse response of this filter is assumed symmetrical, so that only the coefficients corresponding to the causal part of the response are stored) framesize: size of frames in samples. Changing room characteristics, microphone location and source trajectory: Room characteristics are defined with symbolic constants at the beginning of the program. They can be changed easily. The microphone location and the source trajectory are defined in a function called calc_gr_gdotr. The trajectory can be changed to accommodate different scenarios. External routines required: None. */ /* Standard libraries: */ #include #include #include /* Room dimensions in meters: */ #define Lx 10.0 #define Ly 10.0 #define Lz 3.0 /* Reflection coefficients: */ #define BETAXP 0.7 /* wall perpendicular to +x */ #define BETAXM 0.7 /* wall perpendicular to -x */ #define BETAYP 0.7 #define BETAYM 0.7 #define BETAZP 0.5 #define BETAZM 0.5 /* Speed of sound in air (m/s): */ #define C 343.0 /* Scaling factor for microphone output: */ #define AMP 200.0 /* Parameters related to interpolation process: */ #define FS 10000.0 /* sampling rate of input data */ #define L 8 /* upsampling factor */ #define FSL FS*L /* interpolation rate */ #define NCOEF 59 /* interpolation filter has 2*NCOEF+1 taps */ #define SIZE (2800*L) /* size of circular buffer for interpolated samples */ /* Note: this buffer must be large enough to store all past samples that enter the microphone response at a given time. Knowledge of the reverberation time, or some other bound on the maximum allowed delay, is necessary to determine SIZE. */ #define K (NCOEF+L-1) /* NCOEF+L-1 */ /* Number of Newton-Raphson iterations: */ #define NITER 2 /* Macro substitution: */ #define MACFOR \ for (r1 = -n1; r1 < n1+1; r1++) \ for (r2 = -n2; r2 < n2+1; r2++) \ for (r3 = -n3; r3 < n3+1; r3++) { \ tmp1 = r1*Lx; \ tmp2 = r2*Ly; \ tmp3 = r3*Lz; \ tmp4 = tmp1*tmp1 + tmp2*tmp2 + tmp3*tmp3; \ if (tmp4 <= revrad2) { /* External variables: */ char audfilein[256], /* name of input audio file */ audfileout[256], /* name of output audio file */ coeff_file[256], /* name of file containing filter coefficients */ line[80]; /* line buffer used for file access */ int next, /* index of next speech sample to be read */ r1,r2,r3, /* indices of images */ n1,n2,n3, /* limits of indices */ i0buf2, /* index pointing to most recent sample of buf2 */ i1,i2,i3; /* temporary variables */ float speechin[40000], /* input speech samples */ speechout[40000], /* output speech samples */ tau[20][20][60][3], /* delays at beginning of frame, end of frame, and end of next frame */ coef[20][20][60][3], /* coefficients of quadratic polynomial */ intfilter[NCOEF+1], /* interpolation filter coefficients */ buf1[2*K+1], /* buffer containing zero-padded signal */ buf2[SIZE], /* circular buffer for interpolated samples */ revrad2, /* square of reverberation radius */ tmp1,tmp2,tmp3,tmp4; /* temporary variables */ double beta[20][20][60]; /* composite reflection coefficients */ void calc_room_params(), calc_beta(), calc_gr_gdotr(float time, float *grpt, float *gdotrpt), read_interpolate(), read_filter_coeffs(); FILE *filein, *fileout; /* Main function: */ main(int argc, char *argv[]) { int index, /* position of current sample */ nsamp, /* number of samples in audio file */ tauri, /* interpolated delay expressed in high rate samples */ framesize, /* size of frames */ offset, /* position of 1st sample of current frame */ nblock, /* number of blocks to be processed: a block is defined as a pair of frames */ nmax, /* number of samples to be process (user limit) */ i,j,k; /* dummy variables */ float scale, /* scaling factor for output speech samples */ time, /* time in seconds */ gr, /* distance function */ gdotr, /* derivative of distance function */ taur, /* delay for current mode */ taudotr, /* delay rate */ pi; /* 3.14... */ float y0,y1,y2, c0,c1,c2, a1,a2; clock_t t1,t2,t3; /* used for timing */ switch (argc) { case 5: strcpy(audfilein,argv[1]); /* input audio file name */ strcpy(coeff_file,argv[2]); /* file of filter coefficients */ framesize = atoi(argv[3]); /* number of samples in a frame */ strcpy(audfileout,argv[4]); /* output audio file name */ break; case 4: case 3: case 2: printf("missing argument\n"); exit(-1); case 1: printf("This program calculates the response of a microphone\n"); printf("to a moving point source in a rectangular room\n"); exit(0); } /* end switch */ /* Open output file: */ fileout = fopen(audfileout, "w"); /* Preliminary calculations: */ t1 = clock()/CLOCKS_PER_SEC; pi = 4. * atan(1.0); scale = AMP / (4.*pi*C); a1 = 2*framesize; a2 = a1*framesize; /* Calculate reverberation time and related parameters: */ calc_room_params(); /* Calculate composite reflection coefficients: */ calc_beta(); /* Read coefficients of interpolation filter: */ read_filter_coeffs(); /* Open, read and close input speech file: */ filein = fopen(audfilein, "r"); nsamp = 0; while (fgets(line, 80, filein) != NULL) { sscanf(line, "%f", &speechin[nsamp]); nsamp++; } /* for (i=0; i<40; i++) printf("%16.7e \n", speechin[i]); */ /* Initialize zero-padded speech buffer (this buffer will be used to resample the input signal at the higher rate FSL: the zero-padded samples in this buffer will be convolved with the interpolation filter coefficients): */ next = 0; for (i=0; i=0; i--) { tmp = intfilter[0]*buf1[K-i]; for (j=1; j<=NCOEF; j++) tmp += intfilter[j]*(buf1[K-i-j] + buf1[K-i+j]); buf2[i0buf2+i] = tmp; } return; } /* END read_interpolate */ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx coeff.dat: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0.098344 0.096741 0.092027 0.084489 0.074579 0.062882 0.050073 0.036869 0.023975 0.012040 0.001611 -0.006898 -0.013228 -0.017283 -0.019127 -0.018966 -0.017123 -0.014002 -0.010055 -0.005738 -0.001477 0.002359 0.005488 0.007720 0.008970 0.009248 0.008652 0.007342 0.005525 0.003429 0.001279 -0.000722 -0.002410 -0.003668 -0.004435 -0.004700 -0.004502 -0.003916 -0.003043 -0.001998 -0.000896 0.000157 0.001076 0.001799 0.002292 0.002545 0.002576 0.002416 0.002112 0.001715 0.001277 0.000844 0.000452 0.000129 -0.000112 -0.000268 -0.000345 -0.000357 -0.000319 -0.000533 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx testin.dat: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1.4393507e-02 -9.5623862e-01 -7.4126254e-01 -1.5674710e-01 -2.0131830e+00 -5.3043551e-01 4.7913971e-01 -5.1616446e-01 7.2773810e-01 1.2864061e+00 -3.3531152e-01 -9.0829602e-01 4.0338729e-01 6.9056176e-01 7.3778869e-01 1.5661899e-01 4.0326416e-01 -4.2271252e-01 -1.2653478e+00 8.9076018e-01 -4.3626254e-01 -1.0653342e+00 3.5095914e-01 3.3206043e-01 3.6754105e-01 -2.4903812e-01 -2.3452975e-01 -5.5696741e-01 -3.4326154e-01 1.4585997e+00 6.1637734e-01 -2.8053038e-01 9.0757509e-01 7.9429378e-01 -9.4752056e-01 -2.1674472e+00 4.2398386e-01 -2.4654047e-01 -1.5725647e+00 2.3353643e+00 -8.1858740e-01 -1.0844699e+00 2.7742799e+00 2.5319383e-01 -1.0507558e-01 -3.6995073e-01 1.0612378e-01 -2.8300577e-01 -1.0002669e+00 1.0213989e+00 -7.0339723e-01 -1.2232958e+00 2.8646062e-01 6.3254060e-01 5.0300342e-01 5.6965097e-01 7.9962905e-01 -6.9415694e-01 -9.6515350e-01 3.5431106e-01 4.8828566e-01 -1.1295307e+00 -3.1294709e-02 7.5265993e-01 -9.0482732e-01 -2.0108476e-01 2.7512079e-01 9.7677221e-01 -4.4557506e-01 1.9018376e-01 1.3403129e+00 -1.2793999e+00 2.9023904e-01 1.0931172e+00 -8.6569320e-01 -2.5766676e+00 -2.2905560e-01 2.0683269e+00 -3.6467734e-01 -5.0928280e-02 -3.5155599e-02 7.6314968e-01 1.7190125e+00 -1.0045325e+00 -1.0305694e+00 -6.3032520e-01 -4.2270882e-01 6.8429800e-01 1.0973820e-01 -2.6431331e-01 1.2232992e+00 1.0604691e+00 -1.7191358e-01 1.0185183e-01 -1.5773553e+00 -1.6984904e+00 8.7127065e-01 1.6432521e-01 -8.1114047e-01 1.7940581e+00 5.3493957e-01 -1.5468729e+00 7.7685875e-01 -3.6896423e-01 2.7817649e-01 1.2490061e+00 -7.1410940e-01 -8.0086852e-01 -6.2721424e-01 1.0155886e+00 7.9197291e-01 -3.7925952e-01 -4.8554283e-01 -6.6232849e-01 3.1570093e-01 7.0940585e-01 -4.6349832e-01 -9.3887421e-01 2.4922946e-01 9.2028834e-01 9.6912123e-01 -7.5094601e-01 -1.5051275e+00 -1.2927621e-02 1.3006084e+00 8.4014903e-01 -1.1064145e+00 -6.1250546e-01 1.1462605e-01 1.0680426e+00 1.5596919e+00 -1.1200037e+00 -1.0002664e+00 9.4676422e-01 -5.7001324e-01 -1.7175604e+00 1.8508874e-01 2.7354532e-01 -2.4765514e-01 1.6219388e+00 3.1675713e-01 4.8756391e-01 -5.9401183e-02 -1.6621030e+00 1.2775640e-01 -1.5453891e+00 1.2401817e+00 2.2306277e+00 -1.2377618e+00 -7.1324494e-01 -2.1817315e-01 8.6003131e-01 -4.9847372e-01 6.7990978e-01 8.0394467e-01 -1.8428099e+00 2.7426077e-01 -1.7239575e-01 2.6384597e-01 1.6734254e+00 -4.6170490e-01 -1.2767106e+00 -1.1674197e+00 3.5145057e-01 4.1274803e-01 6.9073894e-01 1.1420618e+00 -1.4288049e-01 1.1449921e+00 -7.6826495e-01 -2.5683834e+00 -2.7822265e-01 -2.6736166e-01 1.6019379e+00 1.4709542e+00 -2.5063292e+00 7.9545917e-01 1.8239787e+00 -1.2447903e+00 2.8118255e-01 3.1539660e-01 -1.3914108e-01 -1.5101949e+00 -1.9027061e-01 1.6379081e+00 -4.1460035e-01 -7.1962345e-01 -1.7573105e-01 1.4877118e+00 9.0758740e-02 -8.5152939e-01 2.9285828e-01 -1.0443592e+00 7.5020142e-03 8.1005559e-01 -9.4873259e-01 5.6655212e-01 1.0432966e+00 -8.5943070e-01 2.7703109e-01 4.5579906e-01 -2.2947198e-01 -2.7004775e-01 1.1755926e+00 1.1462448e-01 -2.0174858e+00 1.4775588e-01 2.7520579e-01 -1.1879010e-01 -1.6249119e-01 6.5439251e-02 -8.6850169e-02 1.9313946e-01 3.7416030e-01 -7.8524435e-01 6.9687562e-01 3.5083873e-01 -1.6593366e-01 -4.8419146e-01 4.2962594e-01 1.5703707e+00 -1.0332289e+00 -9.9776873e-01 -4.0507159e-01 -1.9981690e-01 1.5125049e+00 8.1444968e-01 -6.7110172e-01 -6.5138393e-01 -4.3163644e-01 3.8795847e-01 3.3503421e-01 -1.2843853e-01 -8.7543620e-02 -1.9895776e-01 -4.5560834e-01 -1.2451509e+00 3.0082914e-01 1.4260471e+00 1.0699200e+00 -6.5658279e-01 -7.7864982e-01 8.3023876e-01 -6.3576371e-03 1.3515764e+00 -5.9651283e-01 -2.4356931e+00 7.2958241e-02 2.1831779e-01 1.6388396e+00 1.1864496e+00 -1.3679583e+00 -1.2580348e+00 -3.2985913e-01 -4.8054624e-02 5.3775378e-01 1.1946658e+00 1.4380589e-01 -5.1345011e-01 -3.0841476e-01 1.6004423e-02 -2.5716634e-01 9.3322872e-01 7.5504897e-01 -1.8702227e+00 1.7333664e-01 1.1696559e-01 -4.8323717e-01 6.3455167e-01 -7.0043051e-01 7.7378356e-01 9.3464766e-01 2.4102572e-01 -5.6308072e-01 -1.2019913e+00 2.5244280e-01 -1.6364156e-01 7.8446361e-02 6.4641864e-01 1.2096843e+00 -3.7644893e-01 -1.3606349e+00 6.6439982e-01 -8.7498812e-01 -1.6587026e+00 9.1602633e-01 2.7521951e+00 5.8742356e-01 -2.5764132e+00 -4.1942907e-01 5.7964577e-02 7.2646284e-01 1.5411624e+00 -1.3138459e+00 3.1168874e-01 5.4609254e-01 -1.2719309e+00 4.2043542e-02 2.3078616e-01 -2.0773089e-01 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx testout.dat: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Calculation of reverberation time: Sx = 30.000000 Sy = 30.000000 Sz = 100.000000 Room volume = 300.000000 alphaxp = 0.510000 alphayp = 0.510000 alphazp = 0.750000 Total absorptive power = 211.199997 Reverberation time = 0.228598 sec Reverberation radius = 78.409096 Range of sum: n1=7, n2=7, n3=26 Calculation of composite reflection coefficients: Reading filter coefficients: Amplitude of interpolation filter = 1.015478 Output samples: 0 0.0000000e+00 1 0.0000000e+00 2 0.0000000e+00 3 0.0000000e+00 4 0.0000000e+00 5 0.0000000e+00 6 0.0000000e+00 7 0.0000000e+00 8 0.0000000e+00 9 0.0000000e+00 10 0.0000000e+00 11 0.0000000e+00 12 0.0000000e+00 13 0.0000000e+00 14 0.0000000e+00 15 0.0000000e+00 16 0.0000000e+00 17 0.0000000e+00 18 0.0000000e+00 19 0.0000000e+00 20 0.0000000e+00 21 0.0000000e+00 22 0.0000000e+00 23 0.0000000e+00 24 0.0000000e+00 25 0.0000000e+00 26 0.0000000e+00 27 0.0000000e+00 28 0.0000000e+00 29 0.0000000e+00 30 0.0000000e+00 31 0.0000000e+00 32 0.0000000e+00 33 0.0000000e+00 34 0.0000000e+00 35 0.0000000e+00 36 0.0000000e+00 37 0.0000000e+00 38 0.0000000e+00 39 0.0000000e+00 40 0.0000000e+00 41 0.0000000e+00 42 0.0000000e+00 43 0.0000000e+00 44 0.0000000e+00 45 0.0000000e+00 46 0.0000000e+00 47 0.0000000e+00 48 0.0000000e+00 49 0.0000000e+00 50 0.0000000e+00 51 0.0000000e+00 52 0.0000000e+00 53 0.0000000e+00 54 0.0000000e+00 55 0.0000000e+00 56 0.0000000e+00 57 0.0000000e+00 58 0.0000000e+00 59 0.0000000e+00 60 0.0000000e+00 61 0.0000000e+00 62 0.0000000e+00 63 0.0000000e+00 64 0.0000000e+00 65 0.0000000e+00 66 0.0000000e+00 67 0.0000000e+00 68 0.0000000e+00 69 0.0000000e+00 70 0.0000000e+00 71 0.0000000e+00 72 0.0000000e+00 73 0.0000000e+00 74 0.0000000e+00 75 0.0000000e+00 76 0.0000000e+00 77 0.0000000e+00 78 0.0000000e+00 79 0.0000000e+00 80 0.0000000e+00 81 0.0000000e+00 82 0.0000000e+00 83 0.0000000e+00 84 0.0000000e+00 85 0.0000000e+00 86 0.0000000e+00 87 0.0000000e+00 88 0.0000000e+00 89 0.0000000e+00 90 0.0000000e+00 91 0.0000000e+00 92 0.0000000e+00 93 0.0000000e+00 94 0.0000000e+00 95 0.0000000e+00 96 0.0000000e+00 97 0.0000000e+00 98 0.0000000e+00 99 0.0000000e+00 100 0.0000000e+00 101 0.0000000e+00 102 0.0000000e+00 103 0.0000000e+00 104 0.0000000e+00 105 0.0000000e+00 106 0.0000000e+00 107 0.0000000e+00 108 0.0000000e+00 109 0.0000000e+00 110 0.0000000e+00 111 0.0000000e+00 112 0.0000000e+00 113 0.0000000e+00 114 0.0000000e+00 115 0.0000000e+00 116 0.0000000e+00 117 0.0000000e+00 118 0.0000000e+00 119 0.0000000e+00 120 0.0000000e+00 121 0.0000000e+00 122 0.0000000e+00 123 0.0000000e+00 124 0.0000000e+00 125 0.0000000e+00 126 0.0000000e+00 127 0.0000000e+00 128 0.0000000e+00 129 0.0000000e+00 130 0.0000000e+00 131 0.0000000e+00 132 0.0000000e+00 133 0.0000000e+00 134 0.0000000e+00 135 0.0000000e+00 136 0.0000000e+00 137 0.0000000e+00 138 0.0000000e+00 139 0.0000000e+00 140 0.0000000e+00 141 0.0000000e+00 142 0.0000000e+00 143 0.0000000e+00 144 0.0000000e+00 145 0.0000000e+00 146 0.0000000e+00 147 0.0000000e+00 148 0.0000000e+00 149 0.0000000e+00 150 0.0000000e+00 151 0.0000000e+00 152 0.0000000e+00 153 0.0000000e+00 154 0.0000000e+00 155 0.0000000e+00 156 0.0000000e+00 157 0.0000000e+00 158 -1.2764849e-01 159 -4.0004116e-01 160 -9.0207003e-02 161 -3.3273348e-01 162 -6.5309024e-01 163 2.2035889e-02 164 6.1430067e-02 165 -1.2297361e-01 166 4.4540238e-01 167 3.1408265e-01 168 -3.2338646e-01 169 -1.7513868e-01 170 2.3557496e-01 171 3.0409285e-01 172 1.3383850e-01 173 1.3118877e-01 174 7.9100959e-02 175 -4.1394472e-01 176 -1.0627060e-01 177 2.2695476e-01 178 -3.4729150e-01 179 -2.1719521e-01 180 2.0367225e-01 181 -1.0153417e-01 182 -2.8047556e-01 183 -1.9905199e-01 184 -8.6216134e-01 185 -7.2059262e-01 186 1.6396353e-01 187 2.9884411e-02 188 4.7596626e-02 189 5.4107612e-01 190 4.1637328e-01 191 -2.6222497e-02 192 -5.9327394e-01 193 -1.8218662e-01 194 2.9423204e-01 195 -3.6484551e-01 196 5.8610511e-01 197 4.5445564e-01 198 -9.4844258e-01 199 5.7251704e-01 200 5.8760923e-01 201 -6.1644137e-01 202 -1.4671787e-02 203 -2.6493447e-02 204 -3.5261804e-01 205 -2.9694831e-01 206 -1.0116006e-01 207 -3.5359749e-01 208 -6.3732564e-01 209 1.2919039e-01 210 3.9637762e-01 211 3.7518990e-01 212 7.9916239e-01 213 6.1272508e-01 214 -3.8339543e-01 215 -7.9251182e-01 216 3.3424541e-01 217 -6.4884983e-02 218 -9.7319567e-01 219 4.7491953e-01 220 -1.8706509e-01 221 -7.0148671e-01 222 9.1028941e-01 223 5.1382408e-02 224 -7.7247143e-02 225 5.4887527e-01 226 1.7178091e-01 227 1.7099452e-01 228 -4.0113100e-01 229 -9.7722687e-02 230 8.5603051e-02 231 -4.6722856e-01 232 -4.7311366e-01 233 -2.6171520e-01 234 4.5677856e-01 235 7.1024382e-01 236 2.8062770e-01 237 -6.2114847e-01 238 -2.7014977e-01 239 8.4118223e-01 240 -4.8983935e-01 241 -1.0169317e+00 242 1.7043343e-01 243 -2.8706166e-01 244 -2.5900203e-01 245 4.7454298e-01 246 -8.5573718e-02 247 1.2251273e-02 248 3.2094532e-01 249 3.8907841e-01 CPU time spent in preliminary calculations: 2 (sec) CPU time spent in main loop: 69 (sec) xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx