 
 volatile uint16_t maxSampleValue = 0;
 volatile uint16_t minSampleValue = 65535;
+volatile uint16_t averageSampleValue = 0;
 
 constexpr uint16_t SamplingWindowSize = FHT_N;
 volatile bool samplingWindowFull = false;

  tft.print(minSampleValue);

  tft.setTextColor(RGB_to_565(255, 0, 10));
  tft.setCursor(64, 0);
  tft.print(maxSampleValue);

  assert(FHT_N == 256);
  for (int i = 1; i < 128; ++i) // What's the deal with bin 0?

#endif

  ++currentSampleIndex;

  constexpr uint16_t k = 8;
  averageSampleValue = (averageSampleValue * (k - 1) + sample) / k;

  if (currentSampleIndex == SamplingWindowSize)
  {
