   // Start with full brightness LEDs that fade to test that code works
   for (int i = 0; i < NUM_MIC_LEDS; i++) {
     mic_leds_val[i] = 255.0;
-    mic_leds_vel[i] = 0;
+    mic_leds_hue[i] = 255;
   }
 }
 

}

void animateMic() {
  // Apply brightness gravity to all LEDs
  for (int i = 0; i < NUM_MIC_LEDS; i++) {
    double vel = mic_leds_vel[i];
    vel += (-BRIGHTNESS_GRAVITY) * ANIMATE_SECS_PER_TICK;
    if (mic_leds_val[i] < 1 && vel < 0) { vel = 0; }
    mic_leds_vel[i] = vel;
  }

  // Use changes in amplitude to determine acceleration
  double peak = normalize((float)amp_sum_L);
  double rot_accel = peak - ACCELERATION_THRESHOLD;
  if (rot_accel < 0) {
    rot_accel *= ROTATION_FRICTION;
  } else {
    rot_accel *= ROTATION_ACCEL;
  }

  // Apply acceleration to rotation speed
  speed = speed + rot_accel;
  if (speed < 0) { speed = 0; }
  if (speed > MAX_SPEED) { speed = MAX_SPEED; }

  // Rotate around the ring according to speed
  int last = (int)current_led;
  current_led += speed * ANIMATE_SECS_PER_TICK;
  current_led = fmod(current_led, (NUM_MIC_LEDS - 1));
  int curr = (int)current_led;

  // Max brightness and reset velocity of LEDs between the last and current
  while (last != curr) {
    mic_leds_val[last] = 255;
    mic_leds_vel[last] = (-BRIGHTNESS_INITIAL_VEL_COEFF) * speed;
    last++;
    last %= (NUM_MIC_LEDS - 1);
  }

  // Assign hue based on current audio
  mic_leds_hue[curr] = color.hue;

  // Apply brightness velocities to brightness values
  for (int i = 0; i < NUM_MIC_LEDS; i++) {
    mic_leds_val[i] += mic_leds_vel[i] * ANIMATE_SECS_PER_TICK;
    if (mic_leds_val[i] < 0) { mic_leds_val[i] = 0; }
    if (mic_leds_val[i] > 255) { mic_leds_val[i] = 255; }
  }

  // Apply values to the FastLED array


uint8_t dataPin = MIC_DATA_PIN;
CRGB mic_leds_rgb[NUM_MIC_LEDS];
float mic_leds_hue[NUM_MIC_LEDS];
float mic_leds_val[NUM_MIC_LEDS];

float wave = 0;
float amplitude = 0;

void setupMic() {
  // Instantiate FastLED
