Skip to content

Commit d381108

Browse files
committed
AR: add compile-time flag for "Automatic Gain Control" option
Automatic Gain Control is a very important aspect of the audioreactive plugin, and is vitally important when the external music volume constantly changes. It makes sense to allow users to choose their preferred AGC behavior at compile-time, since they can already set the Gain and Squelch via flags. Adds `SR_AGC` as a flag, which defaults to 0 (off).
1 parent cbe7d06 commit d381108

File tree

2 files changed

+6
-2
lines changed

2 files changed

+6
-2
lines changed

usermods/audioreactive/audio_reactive.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,11 +65,14 @@ static bool udpSyncConnected = false; // UDP connection status -> true i
6565

6666
// audioreactive variables
6767
#ifdef ARDUINO_ARCH_ESP32
68+
#ifndef SR_AGC // Automatic gain control mode
69+
#define SR_AGC 0 // default mode = off
70+
#endif
6871
static float micDataReal = 0.0f; // MicIn data with full 24bit resolution - lowest 8bit after decimal point
6972
static float multAgc = 1.0f; // sample * multAgc = sampleAgc. Our AGC multiplier
7073
static float sampleAvg = 0.0f; // Smoothed Average sample - sampleAvg < 1 means "quiet" (simple noise gate)
7174
static float sampleAgc = 0.0f; // Smoothed AGC sample
72-
static uint8_t soundAgc = 0; // Automagic gain control: 0 - none, 1 - normal, 2 - vivid, 3 - lazy (config value)
75+
static uint8_t soundAgc = SR_AGC; // Automatic gain control: 0 - off, 1 - normal, 2 - vivid, 3 - lazy (config value)
7376
#endif
7477
//static float volumeSmth = 0.0f; // either sampleAvg or sampleAgc depending on soundAgc; smoothed sample
7578
static float FFT_MajorPeak = 1.0f; // FFT: strongest (peak) frequency

usermods/audioreactive/readme.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,8 +60,9 @@ You can use the following additional flags in your `build_flags`
6060

6161
* `-D SR_SQUELCH=x` : Default "squelch" setting (10)
6262
* `-D SR_GAIN=x` : Default "gain" setting (60)
63+
* `-D SR_AGC=x` : (Only ESP32) Default "AGC (Automatic Gain Control)" setting (0): 0=off, 1=normal, 2=vivid, 3=lazy
6364
* `-D I2S_USE_RIGHT_CHANNEL`: Use RIGHT instead of LEFT channel (not recommended unless you strictly need this).
64-
* `-D I2S_USE_16BIT_SAMPLES`: Use 16bit instead of 32bit for internal sample buffers. Reduces sampling quality, but frees some RAM ressources (not recommended unless you absolutely need this).
65+
* `-D I2S_USE_16BIT_SAMPLES`: Use 16bit instead of 32bit for internal sample buffers. Reduces sampling quality, but frees some RAM resources (not recommended unless you absolutely need this).
6566
* `-D I2S_GRAB_ADC1_COMPLETELY`: Experimental: continuously sample analog ADC microphone. Only effective on ESP32. WARNING this *will* cause conflicts(lock-up) with any analogRead() call.
6667
* `-D MIC_LOGGER` : (debugging) Logs samples from the microphone to serial USB. Use with serial plotter (Arduino IDE)
6768
* `-D SR_DEBUG` : (debugging) Additional error diagnostics and debug info on serial USB.

0 commit comments

Comments
 (0)