     x += FD_GRAPH_SIZE + 1;
   }
 
+  // Refresh zero-point using a running average
+  fft_zeroPointF += 0.01 * (float) (captureSum / FD_GRAPH_CNT);
+  fft_zeroPoint = (int16_t) fft_zeroPointF;
+
   // Convert the sum of all waveform captures into a graph intensity range
   intensity = map(captureSum,-10000,10000,TD_GRAPH_Y,TD_GRAPH_Y+TD_GRAPH_H);
   intensity = constrain(intensity, TD_GRAPH_Y, TD_GRAPH_Y+TD_GRAPH_H);

  //ADCSRA = _BV(ADSC) | _BV(ADEN) | _BV(ADATE) | _BV(ADIE) | _BV(ADPS2) | _BV(ADPS1); //prescaler 64 : 19231 Hz - 300Hz per 64 divisions
  ADCSRA = _BV(ADSC) | _BV(ADEN) | _BV(ADATE) | _BV(ADIE) | _BV(ADPS2) | _BV(ADPS1) | _BV(ADPS0); // prescaler 128 : 9615 Hz - 150 Hz per 64 divisions, better for most music
  sei();
}

#define FD_GRAPH_CNT   62

/* FFT state variables */
int16_t fft_zeroPoint = 0;           /* Zero-center point relative to which ADC is measured */
float fft_zeroPointF = 0.0F;         /* Zero-center point running average */
volatile byte fft_position = 0;      /* Running position of the FFT */
int16_t fft_capture[FFT_N];          /* Waveform ADC capturing buffer */
complex_t bfly_buff[FFT_N];          /* FFT buffer */
