Spektrumanalysator

etwas im diesen Sinne:
Adafruit_NeoPixel strips[NUM_STRIPS] = {
Adafruit_NeoPixel(LED_COUNT, LED_PIN + 2, NEO_GRB + NEO_KHZ800),
Adafruit_NeoPixel(LED_COUNT, LED_PIN + 3, NEO_GRB + NEO_KHZ800),
Adafruit_NeoPixel(LED_COUNT, LED_PIN + 4, NEO_GRB + NEO_KHZ800),
Adafruit_NeoPixel(LED_COUNT, LED_PIN + 5, NEO_GRB + NEO_KHZ800),
Adafruit_NeoPixel(LED_COUNT, LED_PIN + 6, NEO_GRB + NEO_KHZ800),
Adafruit_NeoPixel(LED_COUNT, LED_PIN + 7, NEO_GRB + NEO_KHZ800),
Adafruit_NeoPixel(LED_COUNT, LED_PIN + 8, NEO_GRB + NEO_KHZ800),
Adafruit_NeoPixel(LED_COUNT, LED_PIN + 9, NEO_GRB + NEO_KHZ800),
Adafruit_NeoPixel(LED_COUNT, LED_PIN + 10, NEO_GRB + NEO_KHZ800),
Adafruit_NeoPixel(LED_COUNT, LED_PIN + 11, NEO_GRB + NEO_KHZ800),
Adafruit_NeoPixel(LED_COUNT, LED_PIN + 12, NEO_GRB + NEO_KHZ800),
Adafruit_NeoPixel(LED_COUNT, LED_PIN + 13, NEO_GRB + NEO_KHZ800),
};
// Control LEDs based on frequencies
for (int i = 0; i < NUM_STRIPS; i++) {
// Calculate frequency range for this strip
double lowerFreq = i * samplingFrequency / (2 * NUM_STRIPS);
double upperFreq = (i + 1) * samplingFrequency / (2 * NUM_STRIPS);

// Calculate average amplitude for this frequency range
double sum = 0;
int count = 0;
for (uint16_t j = 0; j < (samples >> 1); j++) {
  double frequency = (j * 1.0 * samplingFrequency) / samples;
  if (frequency >= lowerFreq && frequency < upperFreq) {
    sum += vReal[j];
    count++;
  }