   FastLED.show();
   delay(500);
 
-  digitalWrite(STATUS_LED, HIGH);
+  pinMode(AUDIO_PIN, INPUT);
+
+  adc->setAveraging(32); // set number of averages
+  adc->setResolution(12); // set bits of resolution
+  adc->setConversionSpeed(ADC_LOW_SPEED); // change the conversion speed
+  adc->setSamplingSpeed(ADC_LOW_SPEED); // change the sampling speed
+  adc->enableInterrupts(ADC_0);
+  adc->startContinuous(AUDIO_PIN, ADC_0);
+
+  digitalWriteFast(STATUS_LED, HIGH);
 }
 
 long leds_mw_per_supply() {

// Pin 13 has the LED on Teensy 3.0
// give it a name:
#define STATUS_LED 13
int frame_count = 0;

void setup() {
  pinMode(STATUS_LED, OUTPUT);
  digitalWrite(STATUS_LED, HIGH);

  Serial.begin(115200);
  FastLED.addLeds<OCTOWS2811>(leds, NUM_LEDS_STRIP_A);

  FastLED.show(brightness);

  frame_count++;
  digitalWriteFast(STATUS_LED, (frame_count & 0x80) ? HIGH : LOW);

  // Try to copy values quickly. This is a race condition with the interrupt.
  short audio_count = adc0_count;
  short audio_avg = adc0_total / max(1, audio_count);
  short audio_min = adc0_min;
  short audio_max = adc0_max;
  // Reset the counter, which will cause the interrupt to clear other values.
  adc0_count = 0;

  Serial.print(brightness);
  Serial.print("\t");
  Serial.print(mw);
  Serial.print("\t");
  Serial.print(audio_count);
  Serial.print("\t");
  Serial.print(audio_min * 5000 / 4096);  // Return min in mV
  Serial.print("\t");
  Serial.print(audio_avg * 5000 / 4096);  // Return avg in mV
  Serial.print("\t");
  Serial.println(audio_max * 5000 / 4096);  // Return max in mV
  Serial.send_now();
}

void loop() {
