Hi-
I am unable to get an output to the FFT in the example program "FFT Test" after making a small change.
The only addition to the program is adding a line in void loop, serial.print(myFFT.available()). Adding this line causes the myFFT.available() to always return 0.
Any ideas on how to fix this?
My current hardware is the Teensy 4.1. I am also using the Audio Shield (for Teensy 4).
Here is the example program, with the change made.
Here is the output on the serial monitor
I am unable to get an output to the FFT in the example program "FFT Test" after making a small change.
The only addition to the program is adding a line in void loop, serial.print(myFFT.available()). Adding this line causes the myFFT.available() to always return 0.
Any ideas on how to fix this?
My current hardware is the Teensy 4.1. I am also using the Audio Shield (for Teensy 4).
Here is the example program, with the change made.
Code:
// FFT Test
//
// Compute a 1024 point Fast Fourier Transform (spectrum analysis)
// on audio connected to the Left Line-In pin. By changing code,
// a synthetic sine wave can be input instead.
//
// The first 40 (of 512) frequency analysis bins are printed to
// the Arduino Serial Monitor. Viewing the raw data can help you
// understand how the FFT works and what results to expect when
// using the data to control LEDs, motors, or other fun things!
//
// This example code is in the public domain.
#include <Audio.h>
#include <Wire.h>
#include <SPI.h>
#include <SD.h>
#include <SerialFlash.h>
const int myInput = AUDIO_INPUT_LINEIN;
//const int myInput = AUDIO_INPUT_MIC;
// Create the Audio components. These should be created in the
// order data flows, inputs/sources -> processing -> outputs
//
AudioInputI2S audioInput; // audio shield: mic or line-in
AudioSynthWaveformSine sinewave;
AudioAnalyzeFFT1024 myFFT;
AudioOutputI2S audioOutput; // audio shield: headphones & line-out
// Connect either the live input or synthesized sine wave
AudioConnection patchCord1(audioInput, 0, myFFT, 0);
//AudioConnection patchCord1(sinewave, 0, myFFT, 0);
AudioControlSGTL5000 audioShield;
void setup() {
// Audio connections require memory to work. For more
// detailed information, see the MemoryAndCpuUsage example
AudioMemory(12);
// Enable the audio shield and set the output volume.
audioShield.enable();
audioShield.inputSelect(myInput);
audioShield.volume(0.5);
// Configure the window algorithm to use
myFFT.windowFunction(AudioWindowHanning1024);
//myFFT.windowFunction(NULL);
// Create a synthetic sine wave, for testing
// To use this, edit the connections above
sinewave.amplitude(0.8);
sinewave.frequency(1034.007);
}
void loop() {
float n;
int i;
int test;
[B]Serial.print(myFFT.available());[/B]
if (myFFT.available()) {
// each time new FFT data is available
// print it all to the Arduino Serial Monitor
Serial.print("FFT: ");
for (i=0; i<40; i++) {
n = myFFT.read(i);
if (n >= 0.01) {
Serial.print(n);
Serial.print(":) ");
} else {
Serial.print(" - "); // don't print "0.00"
}
}
Serial.println();
}
}
Last edited: