Управление звуком.

// =========================== TICK ===========================
// опрашивать как можно чаще. Может принимать значение, если это виртуальный анализатор
// вернёт true при окончании анализа выборки
bool tick(int read = -1);

// ========================== SETTINGS ==========================
void setPin(int8_t pin);        // указать пин АЦП
void setDt(uint16_t dt);        // установить время между опросами АЦП (мкс) (по умолч. 500)
void setWindow(uint8_t window); // установка ширины окна выборки (по умолч. 20)
void setTrsh(uint16_t trsh);    // установить порог громкости в единицах АЦП (умолч 40)

// ========================== VOLUME ==========================
void setVolDt(uint8_t dt);      // установить период фильтрации громкости (умолч 20)
void setVolK(uint8_t vk);       // установить коэффициент плавности громкости 0-31 (умолч 25)
uint16_t getVol();              // получить громкость в пределах setVolMin.. setVolMax
void setVolMin(uint8_t vol);    // установить минимальную величину громкости (умолч 0)
void setVolMax(uint8_t vol);    // установить максимальную величину громкости (умолч 100)

// ========================= AMPLITUDE =========================
void setAmpliDt(uint8_t dt);    // установить период фильтрации амплитудных огибающих
void setAmpliK(uint8_t rk);     // установить коэффициент плавности амплитуды 0-31 (умолч 31)
uint16_t getMin();              // получить текущее значение огибающей минимумов (с v1.5 - 0)
uint16_t getMax();              // получить текущее значение огибающей максимумов

// =========================== PULSE ===========================
void setPulseMax(uint8_t maxV); // верхний порог срабатывания пульса (по шкале громкости)
void setPulseMin(uint8_t minV); // нижний порог перезагрузки пульса (по шкале громкости)
void setPulseTimeout(uint16_t tout);    // таймаут пульса, мс
bool pulse();                   // резкий скачок громкости (true)

// ========================== RAW DATA ===========================
uint16_t getRaw();              // получить значение сырого сигнала за выборку
uint16_t getTrsh();             // получить порог громкости в единицах АЦП




// амплитудный анализ звука

#include "VolAnalyzer.h"
VolAnalyzer analyzer(10);


void setup() {
  Serial.begin(115200);
  analyzer.setVolK(20);
  analyzer.setTrsh(10);
  analyzer.setVolMin(10);
  analyzer.setVolMax(100);
}

void loop() {
  if (analyzer.tick()) {
    //Serial.print(analyzer.getVol());
    //Serial.print(',');
    Serial.print(analyzer.getRaw());
    Serial.print(',');
    Serial.print(analyzer.getMin());
    Serial.print(',');
    Serial.println(analyzer.getMax());
  }
}
 
 
Семейная психология: основы семейного консультирования
inpsycho.ru/additional_education/441?block_id=28