OpenMusic Labs FFT Help

Hello,

I'm using OpenMusic Labs' fft_adc code to try and do some FFT on my music.
The only change is i've changed serial.write(255) to serial.println(255)

My question is why arent my values changing? I have ADC0 connected to the right pin of my TRRS breakout from sparkfun and then I have ring 2 of the same breakout connected to ground.

My current output looks like the image attached

And your code looks like this:


Oh duh, even after all this time, I forget to post the corresponding 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.println(255); // send a start byte
    Serial.write(fft_log_out, 128); // send out the data
  }
}
    Serial.println(255); // send a start byte

That is NOT what that code does. That code is sending 5 bytes - '2', '5', '5', , and .

The only change is i've changed serial.write(255) to serial.println(255)

Why?

Because I wanted the output on the serial monitor print the different outputs on a new line.

Does that change affect the operation of the code?

Does that change affect the operation of the code?

The output is not meant to be human readable. It is meant to be read, as binary data, by PureData. PureData is expecting a binary value, 255, to mark the start of a packet.

So, yes, it makes a big difference.

Okay, i'll switch it back.

Looks like I gotta figure out how to use pure data!