From 95e94a99b9b8bfa85a1fb68b86e708d7ddd21b39 Mon Sep 17 00:00:00 2001 From: Will Tatam Date: Fri, 8 Mar 2024 00:35:22 +0000 Subject: [PATCH] Try to use existing FTT data --- .../usermod_v2_auto_playlist.h | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/usermods/usermod_v2_auto_playlist/usermod_v2_auto_playlist.h b/usermods/usermod_v2_auto_playlist/usermod_v2_auto_playlist.h index 02d4bff8..71df7625 100644 --- a/usermods/usermod_v2_auto_playlist/usermod_v2_auto_playlist.h +++ b/usermods/usermod_v2_auto_playlist/usermod_v2_auto_playlist.h @@ -60,9 +60,9 @@ class AutoPlaylistUsermod : public Usermod { int *extra = (int*) um_data->u_data[11]; - int zcr = extra[0]; + unsigned int zcr = extra[0]; int energy = extra[1]; - int lfc = extra[2]; + int lfc = getFFTFromRange(um_data, 0 , 3); // WLED-MM/TroyHacks: Calculate the long- and short-running averages // and the squared_distance for the vector. @@ -103,6 +103,15 @@ class AutoPlaylistUsermod : public Usermod { lastchange = millis(); } } + uint8_t getFFTFromRange(um_data_t *data, uint8_t from, uint8_t to) { + uint8_t *fftResult = (uint8_t*) data->u_data[2]; + uint8_t result = 0; + for (int i = from; i <= to; i++) { + result += fftResult[i] * fftResult[i]; + } + return sqrt(result / (to - from + 1)); + } + /* * Da loop. */