Skip to content

Determining the Volume

Phil Schatzmann edited this page Sep 26, 2025 · 11 revisions

You can determine the max amplitude (=volume) with the help of the VolumeMeter class. Just send the audio to this class and then you can access the volume information:

#include "AudioTools.h" #include "AudioTools/AudioLibs/AudioKit.h" AudioInfo info(44100, 2, 16); AudioKitStream kit; // or use I2SStream VolumeMeter out; StreamCopy copier(out, kit); // copy kit to kit // Arduino Setup void setup(void) { Serial.begin(440100); AudioLogger::instance().begin(Serial, AudioLogger::Warning); // setup input auto cfg = kit.defaultConfig(RX_MODE); cfg.input_device = AUDIO_HAL_ADC_INPUT_LINE2; // input from microphone cfg.copyFrom(info) kit.begin(cfg); // setup output auto cfg_out = out.defaultConfig(); cfg_out.copyFrom(info); out.begin(cfg_out); } // Arduino loop - copy data void loop() { copier.copy(); // Just print the max amplitude Serial.print("Volume: "); Serial.print(out.volume()); Serial.print(" left: "); Serial.print(out.volume(0)); Serial.print(" right: "); Serial.println(out.volume(1)); } 

Instead of the volume as amplitude you can also get the ratio (range 0-1.0), percent (range 0-100) or the value in db (range negative to 0)

You can also use this class anywhere in your input or output chain.

If you just want to detect if there is some signal, you can use the AudioInputMonitor with the isActive(uint16_t ms) method.

Clone this wiki locally