trying to make effects respond to changes quicker in fastpath mode
filter parameter tuning
This commit is contained in:
@@ -239,7 +239,11 @@ const double agcFollowFast[AGC_NUM_PRESETS] = { 1/192.f, 1/128.f, 1/256.f}; //
|
|||||||
const double agcFollowSlow[AGC_NUM_PRESETS] = {1/6144.f,1/4096.f,1/8192.f}; // slowly follow setpoint - ~2-15 secs
|
const double agcFollowSlow[AGC_NUM_PRESETS] = {1/6144.f,1/4096.f,1/8192.f}; // slowly follow setpoint - ~2-15 secs
|
||||||
const double agcControlKp[AGC_NUM_PRESETS] = { 0.6f, 1.5f, 0.65f}; // AGC - PI control, proportional gain parameter
|
const double agcControlKp[AGC_NUM_PRESETS] = { 0.6f, 1.5f, 0.65f}; // AGC - PI control, proportional gain parameter
|
||||||
const double agcControlKi[AGC_NUM_PRESETS] = { 1.7f, 1.85f, 1.2f}; // AGC - PI control, integral gain parameter
|
const double agcControlKi[AGC_NUM_PRESETS] = { 1.7f, 1.85f, 1.2f}; // AGC - PI control, integral gain parameter
|
||||||
|
#if defined(WLEDMM_FASTPATH)
|
||||||
|
const float agcSampleSmooth[AGC_NUM_PRESETS] = { 1/6.f, 1/5.f, 1/10.f}; // smoothing factor for sampleAgc (use rawSampleAgc if you want the non-smoothed value)
|
||||||
|
#else
|
||||||
const float agcSampleSmooth[AGC_NUM_PRESETS] = { 1/12.f, 1/6.f, 1/16.f}; // smoothing factor for sampleAgc (use rawSampleAgc if you want the non-smoothed value)
|
const float agcSampleSmooth[AGC_NUM_PRESETS] = { 1/12.f, 1/6.f, 1/16.f}; // smoothing factor for sampleAgc (use rawSampleAgc if you want the non-smoothed value)
|
||||||
|
#endif
|
||||||
// AGC presets end
|
// AGC presets end
|
||||||
|
|
||||||
static AudioSource *audioSource = nullptr;
|
static AudioSource *audioSource = nullptr;
|
||||||
@@ -594,7 +598,9 @@ void FFTcode(void * parameter)
|
|||||||
|
|
||||||
#if defined(WLEDMM_FASTPATH) && !defined(CONFIG_IDF_TARGET_ESP32S2) && !defined(CONFIG_IDF_TARGET_ESP32C3) && defined(ARDUINO_ARCH_ESP32)
|
#if defined(WLEDMM_FASTPATH) && !defined(CONFIG_IDF_TARGET_ESP32S2) && !defined(CONFIG_IDF_TARGET_ESP32C3) && defined(ARDUINO_ARCH_ESP32)
|
||||||
// experimental - be nice to LED update task (trying to avoid flickering) - dual core only
|
// experimental - be nice to LED update task (trying to avoid flickering) - dual core only
|
||||||
if (strip.isServicing()) delay(2);
|
#if FFTTASK_PRIORITY > 1
|
||||||
|
if (strip.isServicing()) delay(1);
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// normal mode: filter everything
|
// normal mode: filter everything
|
||||||
@@ -1364,7 +1370,11 @@ class AudioReactive : public Usermod {
|
|||||||
|
|
||||||
// update global vars ONCE - multAgc, sampleAGC, rawSampleAgc
|
// update global vars ONCE - multAgc, sampleAGC, rawSampleAgc
|
||||||
multAgc = multAgcTemp;
|
multAgc = multAgcTemp;
|
||||||
|
#if defined(WLEDMM_FASTPATH)
|
||||||
|
rawSampleAgc = 0.65f * tmpAgc + 0.35f * (float)rawSampleAgc;
|
||||||
|
#else
|
||||||
rawSampleAgc = 0.8f * tmpAgc + 0.2f * (float)rawSampleAgc;
|
rawSampleAgc = 0.8f * tmpAgc + 0.2f * (float)rawSampleAgc;
|
||||||
|
#endif
|
||||||
// update smoothed AGC sample
|
// update smoothed AGC sample
|
||||||
if (fabsf(tmpAgc) < 1.0f)
|
if (fabsf(tmpAgc) < 1.0f)
|
||||||
sampleAgc = 0.5f * tmpAgc + 0.5f * sampleAgc; // fast path to zero
|
sampleAgc = 0.5f * tmpAgc + 0.5f * sampleAgc; // fast path to zero
|
||||||
@@ -1483,7 +1493,11 @@ class AudioReactive : public Usermod {
|
|||||||
}
|
}
|
||||||
if (sampleMax < 0.5f) sampleMax = 0.0f;
|
if (sampleMax < 0.5f) sampleMax = 0.0f;
|
||||||
|
|
||||||
|
#if defined(WLEDMM_FASTPATH)
|
||||||
|
sampleAvg = ((sampleAvg * 7.0f) + sampleAdj) / 8.0f; // make reactions a bit more "crisp" in fastpath mode
|
||||||
|
#else
|
||||||
sampleAvg = ((sampleAvg * 15.0f) + sampleAdj) / 16.0f; // Smooth it out over the last 16 samples.
|
sampleAvg = ((sampleAvg * 15.0f) + sampleAdj) / 16.0f; // Smooth it out over the last 16 samples.
|
||||||
|
#endif
|
||||||
sampleAvg = fabsf(sampleAvg); // make sure we have a positive value
|
sampleAvg = fabsf(sampleAvg); // make sure we have a positive value
|
||||||
} // getSample()
|
} // getSample()
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user