@@ -100,6 +100,11 @@ static um_data_t* getAudioData() {
100100 return um_data;
101101}
102102
103+ static float mapf (float x, float in_min, float in_max, float out_min, float out_max){
104+ if (in_max == in_min) return (out_min); // WLEDMM avoid div/0
105+ return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
106+ }
107+
103108void handleSerial ()
104109{
105110 if (pinManager.isPinAllocated (hardwareRX)) return ;
@@ -229,13 +234,16 @@ void handleSerial()
229234 min = fftBinAverage[i];
230235 }
231236 }
232- // 5.53, 8.10 = 1.70, 1.83, 1.82, 1.85, 1.78, 1.82, 1.76, 1.79, 1.79, 1.79, 1.79, 1.79, 1.79, 1.79, 1.89, 2.17
237+ // 5.53, 8.10 = 1.70, 1.83, 1.82, 1.85, 1.78, 1.82, 1.76, 1.79, 1.79, 1.79, 1.79, 1.79, 1.79, 1.79, 1.89, 2.17
238+ // 10.05,95.22 = 7.78, 6.95, 5.15, 3.73, 1.70, 2.20, 4.86, 3.95, 5.92, 7.45, 7.64, 7.52, 6.84, 7.14, 6.90, 6.06,
239+ // 2.11, 16.77 = 9.67, 8.97, 6.87, 4.89, 3.36, 1.70, 4.69, 2.71, 6.73, 8.85, 9.01, 8.53, 7.10, 7.86, 5.23, 4.26,
240+ // 2.62,19.27 = 7.34, 6.64, 4.99, 3.76, 1.39, 1.00, 3.20, 1.23, 5.07, 6.63, 6.75, 6.37, 5.26, 5.72, 2.73, 2.74,
233241 USER_PRINT (min);
234242 USER_PRINT (" ," );
235243 USER_PRINT (max);
236244 USER_PRINT (" = " );
237245 for (int i=0 ; i < 16 ; i++) {
238- fftBinAverage[i] = (max/ fftBinAverage[i]) + 0 . 7f ;
246+ fftBinAverage[i] = mapf ( fftBinAverage[i],min,max,(max/min), 1 . 00f ) ;
239247 USER_PRINTF (" %1.2f, " , fftBinAverage[i]);
240248 }
241249 USER_PRINTLN ();
0 commit comments