From dfa1a3ad90c7b3d2df1a8840e65d5986f5605e51 Mon Sep 17 00:00:00 2001 From: ewowi Date: Fri, 29 Jul 2022 15:43:27 +0200 Subject: [PATCH] Refactor um_data: remove inputLevel --- usermods/audioreactive/audio_reactive.h | 4 +--- wled00/FX.cpp | 10 +++++----- wled00/util.cpp | 6 +----- 3 files changed, 7 insertions(+), 13 deletions(-) diff --git a/usermods/audioreactive/audio_reactive.h b/usermods/audioreactive/audio_reactive.h index b374b6b1..7dffd8ec 100644 --- a/usermods/audioreactive/audio_reactive.h +++ b/usermods/audioreactive/audio_reactive.h @@ -824,7 +824,7 @@ class AudioReactive : public Usermod { // usermod exchangeable data // we will assign all usermod exportable data here as pointers to original variables or arrays and allocate memory for pointers um_data = new um_data_t; - um_data->u_size = 10; + um_data->u_size = 9; um_data->u_type = new um_types_t[um_data->u_size]; um_data->u_data = new void*[um_data->u_size]; um_data->u_data[0] = &volumeSmth; //*used (New) @@ -845,8 +845,6 @@ class AudioReactive : public Usermod { um_data->u_type[7] = UMT_BYTE; um_data->u_data[8] = fftBin; //*used (for debugging) (only once, Binmap) um_data->u_type[8] = UMT_FLOAT_ARR; - um_data->u_data[9] = &inputLevel; // global UI element!!! (Gravimeter, Binmap) - um_data->u_type[9] = UMT_BYTE; } // Reset I2S peripheral for good measure diff --git a/wled00/FX.cpp b/wled00/FX.cpp index 6ceb2078..88fbdc9c 100644 --- a/wled00/FX.cpp +++ b/wled00/FX.cpp @@ -5972,15 +5972,15 @@ static const char *_data_FX_MODE_2DDRIFTROSE PROGMEM = "2D Drift Rose@Fade,Blur; float *fftBin = nullptr; um_data_t *um_data; if (usermods.getUMData(&um_data, USERMOD_ID_AUDIOREACTIVE)) { + volumeSmth = *(float*) um_data->u_data[0]; + volumeRaw = *(float*) um_data->u_data[1]; + fftResult = (uint8_t*) um_data->u_data[2]; samplePeak = *(uint8_t*) um_data->u_data[3]; FFT_MajorPeak = *(float*) um_data->u_data[4]; - fftResult = (uint8_t*) um_data->u_data[2]; + my_magnitude = *(float*) um_data->u_data[5]; maxVol = (uint8_t*) um_data->u_data[6]; // requires UI element (SEGMENT.customX?), changes source element binNum = (uint8_t*) um_data->u_data[7]; // requires UI element (SEGMENT.customX?), changes source element - volumeSmth = *(float*) um_data->u_data[0]; fftBin = (float*) um_data->u_data[8]; - inputLevel = (uint8_t*) um_data->u_data[9]; // requires UI element (SEGMENT.customX?), changes source element - volumeRaw = *(float*) um_data->u_data[1]; } else { // add support for no audio data um_data = simulateSound(SEGMENT.soundSim); @@ -6669,7 +6669,7 @@ uint16_t WS2812FX::mode_binmap(void) { maxVol = (uint8_t*)um_data->u_data[6]; #endif fftBin = (float*) um_data->u_data[8]; - inputLevel = (uint8_t*)um_data->u_data[9]; + inputLevel = (uint8_t*)um_data->u_data[10]; } if (!fftBin) return mode_static(); diff --git a/wled00/util.cpp b/wled00/util.cpp index e47f1653..ad35183f 100644 --- a/wled00/util.cpp +++ b/wled00/util.cpp @@ -402,8 +402,6 @@ um_data_t* simulateSound(uint8_t simulationId) static uint8_t maxVol; static uint8_t binNum; - uint8_t inputLevel; - static float volumeSmth; static uint16_t volumeRaw; static float my_magnitude; @@ -423,7 +421,7 @@ um_data_t* simulateSound(uint8_t simulationId) // NOTE!!! // This may change as AudioReactive usermod may change um_data = new um_data_t; - um_data->u_size = 10; + um_data->u_size = 9; um_data->u_type = new um_types_t[um_data->u_size]; um_data->u_data = new void*[um_data->u_size]; um_data->u_data[0] = &volumeSmth; @@ -435,7 +433,6 @@ um_data_t* simulateSound(uint8_t simulationId) um_data->u_data[6] = &maxVol; um_data->u_data[7] = &binNum; um_data->u_data[8] = fftBin; //only used in binmap - um_data->u_data[9] = &inputLevel; } else { // get arrays from um_data fftResult = (uint8_t*)um_data->u_data[2]; @@ -500,7 +497,6 @@ um_data_t* simulateSound(uint8_t simulationId) FFT_MajorPeak = volumeSmth; maxVol = 10; // this gets feedback fro UI binNum = 8; // this gets feedback fro UI - inputLevel = 128; // this gets feedback fro UI volumeRaw = volumeSmth; my_magnitude = 10000.0 / 8.0f; //no idea if 10000 is a good value for FFT_Magnitude ??? if (volumeSmth < 1 ) my_magnitude = 0.001f; // noise gate closed - mute