// fft_wav.java fft_wav ok.wav junk.wav // uses read_wave.java // uses Cxfft.java public class fft_wav { public fft_wav(String file_in, String file_out) { double amin, amax, aavg; int m; // next power of 2 read_wav R = new read_wav(file_in, file_out, false); // wav_read(file_in); done by constructor int n = R.outix; // number of sound samples for(m=64; m<2500000; m*=2) if(m>2*n) break; System.out.println("power of 2 m="+m); System.out.println("have "+n+" points for FFT"); double A[] = new double[m]; double B[] = new double[m]; for(int i=0; i<2*n; i+=2) A[i] = (double)R.A[i/2]; // real for(int i=1; i<2*n; i+=2) A[i] = 0.0; // imag amin = A[0]; amax = A[0]; aavg = 0.0; for(int i=0; i<2*n; i+=2) { amin = Math.min(amin, A[i]); amax = Math.max(amax, A[i]); aavg += A[i]; } aavg = aavg/(double)n; System.out.println("input min="+amin+", max="+amax+", avg="+aavg); for(int i=2*n; i0) { file_in = args[0]; } String file_out = "junk.wav"; if(args.length>1) { file_out = args[1]; } new fft_wav(file_in, file_out); } // end main } // end class fft_wav of fft_wav.java