// TestFFT256iq.ino #include "OpenAudio_ArduinoLibrary.h" #include "AudioStream_F32.h" #include #include #include #include #include // GUItool: begin automatically generated code AudioSynthSineCosine_F32 sine_cos1; //xy=76,532 AudioAnalyzeFFT256_IQ_F32 FFT256iq1; //xy=243,532 AudioOutputI2S_F32 audioOutI2S1; //xy=246,591 AudioConnection_F32 patchCord1(sine_cos1, 0, FFT256iq1, 0); AudioConnection_F32 patchCord2(sine_cos1, 1, FFT256iq1, 1); // GUItool: end automatically generated code void setup(void) { Serial.begin(9600); delay(1000); AudioMemory_F32(20); Serial.println("FFT256IQ Test v3"); sine_cos1.amplitude(1.0); // Initialize Waveform Generator // bin spacing = 44117.648/256 = 172.335 172.3 * 4 = 689.335 Hz (T3.6) // Half bin higher is 775.3 for testing windows //sine_cos1.frequency(689.34f); // Pick T3.6 bin center //sine_cos1.frequency(689.33); // or pick T4.x bin center //sine_cos1.frequency(689.0625f); // or pick any old frequency sine_cos1.frequency(7100.0); // Select the output format: FFT_RMS, FFFT_POWER, FFT_DBFS FFT256iq1.setOutputType(FFT_DBFS); // Select the wndow function //FFT256iq1.windowFunction(AudioWindowNone); //FFT256iq1.windowFunction(AudioWindowHanning256); //FFT256iq1.windowFunction(AudioWindowKaiser256, 55.0f); FFT256iq1.windowFunction(AudioWindowBlackmanHarris256); // Uncomment to Serial print window function //float* pw = FFT256iq1.getWindow(); // Print window //for (int i=0; i<512; i++) Serial.println(pw[i], 4); // xAxis, bit 0 left/right; bit 1 low to high; default 0X03 FFT256iq1.setXAxis(0X03); // Do power averaging (outputs appear less often, as well) FFT256iq1.setNAverage(1); // i.e., 16 or 50, etc. nAverage >= 1 } void loop(void) { float* pPwr; if( FFT256iq1.available() ) { pPwr = FFT256iq1.getData(); for(int i=0; i<256; i++) { Serial.print(i); Serial.print(","); Serial.println(*(pPwr + i), 8 ); } Serial.print("\n\n"); } delay(500); }