Refactor um_data: remove inputLevel

This commit is contained in:
ewowi 2022-07-29 15:43:27 +02:00
parent c1f9445e9d
commit dfa1a3ad90
3 changed files with 7 additions and 13 deletions

View File

@ -824,7 +824,7 @@ class AudioReactive : public Usermod {
// usermod exchangeable data // usermod exchangeable data
// we will assign all usermod exportable data here as pointers to original variables or arrays and allocate memory for pointers // 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 = 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_type = new um_types_t[um_data->u_size];
um_data->u_data = new void*[um_data->u_size]; um_data->u_data = new void*[um_data->u_size];
um_data->u_data[0] = &volumeSmth; //*used (New) 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_type[7] = UMT_BYTE;
um_data->u_data[8] = fftBin; //*used (for debugging) (only once, Binmap) um_data->u_data[8] = fftBin; //*used (for debugging) (only once, Binmap)
um_data->u_type[8] = UMT_FLOAT_ARR; 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 // Reset I2S peripheral for good measure

View File

@ -5972,15 +5972,15 @@ static const char *_data_FX_MODE_2DDRIFTROSE PROGMEM = "2D Drift Rose@Fade,Blur;
float *fftBin = nullptr; float *fftBin = nullptr;
um_data_t *um_data; um_data_t *um_data;
if (usermods.getUMData(&um_data, USERMOD_ID_AUDIOREACTIVE)) { 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]; samplePeak = *(uint8_t*) um_data->u_data[3];
FFT_MajorPeak = *(float*) um_data->u_data[4]; 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 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 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]; 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 { } else {
// add support for no audio data // add support for no audio data
um_data = simulateSound(SEGMENT.soundSim); um_data = simulateSound(SEGMENT.soundSim);
@ -6669,7 +6669,7 @@ uint16_t WS2812FX::mode_binmap(void) {
maxVol = (uint8_t*)um_data->u_data[6]; maxVol = (uint8_t*)um_data->u_data[6];
#endif #endif
fftBin = (float*) um_data->u_data[8]; 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(); if (!fftBin) return mode_static();

View File

@ -402,8 +402,6 @@ um_data_t* simulateSound(uint8_t simulationId)
static uint8_t maxVol; static uint8_t maxVol;
static uint8_t binNum; static uint8_t binNum;
uint8_t inputLevel;
static float volumeSmth; static float volumeSmth;
static uint16_t volumeRaw; static uint16_t volumeRaw;
static float my_magnitude; static float my_magnitude;
@ -423,7 +421,7 @@ um_data_t* simulateSound(uint8_t simulationId)
// NOTE!!! // NOTE!!!
// This may change as AudioReactive usermod may change // This may change as AudioReactive usermod may change
um_data = new um_data_t; 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_type = new um_types_t[um_data->u_size];
um_data->u_data = new void*[um_data->u_size]; um_data->u_data = new void*[um_data->u_size];
um_data->u_data[0] = &volumeSmth; 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[6] = &maxVol;
um_data->u_data[7] = &binNum; um_data->u_data[7] = &binNum;
um_data->u_data[8] = fftBin; //only used in binmap um_data->u_data[8] = fftBin; //only used in binmap
um_data->u_data[9] = &inputLevel;
} else { } else {
// get arrays from um_data // get arrays from um_data
fftResult = (uint8_t*)um_data->u_data[2]; fftResult = (uint8_t*)um_data->u_data[2];
@ -500,7 +497,6 @@ um_data_t* simulateSound(uint8_t simulationId)
FFT_MajorPeak = volumeSmth; FFT_MajorPeak = volumeSmth;
maxVol = 10; // this gets feedback fro UI maxVol = 10; // this gets feedback fro UI
binNum = 8; // this gets feedback fro UI binNum = 8; // this gets feedback fro UI
inputLevel = 128; // this gets feedback fro UI
volumeRaw = volumeSmth; volumeRaw = volumeSmth;
my_magnitude = 10000.0 / 8.0f; //no idea if 10000 is a good value for FFT_Magnitude ??? 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 if (volumeSmth < 1 ) my_magnitude = 0.001f; // noise gate closed - mute