 void calculateFFT() {
     for (int i = 0 ; i < FFT_N * 2; i += 2) { // save samples
         /* 
-         * sample at slower rate, minimum sample rate is 9.6 kHz
-         * so reduce sample rate by skipping ADC read cycles by 
-         * SKIP_MULT
+         * A hack to sample at a slower rate. 
+         * The minimum sample rate is 9.6 kHz, so reduce sample rate 
+         * by skipping ADC read cycles, essentially spreading out our
+         * sample over time. Reducing the sample rate increases our
+         * frequency resolution, so we can differentiate frequencies 
+         * close to one another, but at the expense of not detecting higher 
+         * frequencies.
+         * 
+         * The effective sample rate would then be:
+         * SAMPLE_RATE / SKIP_MULT
          */
         for (int j = 0; j < SKIP_MULT; j++) {
             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
+        byte m = ADCL;             // fetch ADC data (low byte)
+        byte j = ADCH;             // fetch ADC data (high byte)
+        int k = (j << 8) | m;      // combine low/high bytes to 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

LPD8806 strip = LPD8806(nLEDs, dataPin, clockPin);

void setup() {
    Serial.begin(9600);
    TIMSK0 = 0;           // turn off timer0 for lower jitter
    ADCSRA = 0xe5;        // set the adc to free running mode 
    ADMUX = 0x40;         // use adc0


// Fill the dots progressively along the strip.
void setColor(uint32_t c) {
    for (int i=0; i < strip.numPixels(); i++) {
        strip.setPixelColor(i, c);
        strip.show();
    }
}

void loop() {
    cli();           // disable global interrupts
    calculateFFT();  // result is placed in fft_log_out
    sei();           // re-enable interrupts

    peak_index = 0;
    max_value = 0;
