Pages: [1]   Go Down
Author Topic: Music Labs FFT Library  (Read 1137 times)
0 Members and 1 Guest are viewing this topic.
Australia
Offline Offline
Newbie
*
Karma: 0
Posts: 45
Due the data logging machine
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Has anybody tried to use the music labs FFT library? The one on the following link http://wiki.openmusiclabs.com/wiki/ArduinoFFT

The example code they have given won't compile and just wondering why. Does anybody else have the same issues?

Code:
/*
fft_adc.pde
guest openmusiclabs.com 8.18.12
example sketch for testing the fft library.
it takes in data on ADC0 (Analog0) and processes them
with the fft. the data is sent out over the serial
port at 115.2kb.  there is a pure data patch for
visualizing the data.
*/

#define LOG_OUT 1 // use the log output function
#define FFT_N 256 // set to 256 point fft

#include <FFT.h> // include the library

void setup() {
  Serial.begin(115200); // use the serial port
  TIMSK0 = 0; // turn off timer0 for lower jitter
  ADCSRA = 0xe5; // set the adc to free running mode
  ADMUX = 0x40; // use adc0
  DIDR0 = 0x01; // turn off the digital input for adc0
}

void loop() {
  while(1) { // reduces jitter
    cli();  // UDRE interrupt slows this way down on arduino1.0
    for (int i = 0 ; i < 512 ; i += 2) { // save 256 samples
      while(!(ADCSRA & 0x10)); // wait for adc to be ready
      ADCSRA = 0xf5; // restart adc
      byte m = ADCL; // fetch adc data
      byte j = ADCH;
      int k = (j << 8) | m; // form into an int
      k -= 0x0200; // form into a signed int
      k <<= 6; // form into a 16b signed int
      fft_input[i] = k; // put real data into even bins
      fft_input[i+1] = 0; // set odd bins to 0
    }
    fft_window(); // window the data for better frequency response
    fft_reorder(); // reorder the data before doing the fft
    fft_run(); // process the data in the fft
    fft_mag_log(); // take the output of the fft
    sei();
    Serial.write(255); // send a start byte
    Serial.write(fft_log_out, 128); // send out the data
  }
}
Logged

Seattle, WA USA
Online Online
Brattain Member
*****
Karma: 654
Posts: 50958
Seattle, WA USA
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
The example code they have given won't compile
Using what version of the IDE? What errors?
Logged

Australia
Offline Offline
Newbie
*
Karma: 0
Posts: 45
Due the data logging machine
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

I have tried IDE 1.0, 1.0.5 and 1.5.2.

I get the following errors:
Quote
fft_adc.pde: In function 'void loop()':
fft_adc:35: error: 'fft_input' was not declared in this scope
fft_adc:38: error: 'fft_window' was not declared in this scope
fft_adc:39: error: 'fft_reorder' was not declared in this scope
fft_adc:40: error: 'fft_run' was not declared in this scope
fft_adc:41: error: 'fft_mag_log' was not declared in this scope
fft_adc:44: error: 'fft_log_out' was not declared in this scope

I can get rid of the first error by defining the variable fft_input in the sketch however, the other errors are functions/methods and should be in the header file.
Logged

Offline Offline
Edison Member
*
Karma: 50
Posts: 1705
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

You may not have installed the library properly. The FFT directory in the zip file must be installed in your libraries directory.

Pete
Logged

Pages: [1]   Go Up
Jump to: