change_threshold pushback when window missing.
This commit is contained in:
@@ -96,27 +96,30 @@ class AutoPlaylistUsermod : public Usermod {
|
|||||||
}
|
}
|
||||||
|
|
||||||
distance = vector_lfc + vector_energy + vector_zcr;
|
distance = vector_lfc + vector_energy + vector_zcr;
|
||||||
// USER_PRINTF("squared_distance = %d\n", squared_distance * squared_distance / 10000000);
|
|
||||||
|
|
||||||
// squared_distance = distance * distance;
|
// squared_distance = distance * distance;
|
||||||
|
|
||||||
int change_interval = millis()-lastchange;
|
int change_interval = millis()-lastchange;
|
||||||
|
|
||||||
// if (millis() > change_timer + 100) {
|
// USER_PRINT("\tDistance: ");
|
||||||
// // if (change_interval > ideal_change_max) {
|
// USER_PRINT(distance);
|
||||||
// // USER_PRINTF("Increasing sensitivity to: %d\n",change_threshold++);
|
// USER_PRINT("\tv_lfc: ");
|
||||||
// // }
|
// USER_PRINT(vector_lfc);
|
||||||
// USER_PRINT("\tDistance: ");
|
// USER_PRINT("\tv_energy: ");
|
||||||
// USER_PRINT(distance);
|
// USER_PRINT(vector_energy);
|
||||||
// USER_PRINT("\tv_lfc: ");
|
// USER_PRINT("\tv_zcr: ");
|
||||||
// USER_PRINT(vector_lfc);
|
// USER_PRINTLN(vector_zcr);
|
||||||
// USER_PRINT("\tv_energy: ");
|
|
||||||
// USER_PRINT(vector_energy);
|
|
||||||
// USER_PRINT("\tv_zcr: ");
|
|
||||||
// USER_PRINTLN(vector_zcr);
|
|
||||||
|
|
||||||
// change_timer = millis();
|
if (millis() > change_timer + ideal_change_min) {
|
||||||
// }
|
// Make the analysis less sensitive if we miss the window, slowly.
|
||||||
|
// Sometimes the analysis lowers the change_threshold too much for
|
||||||
|
// the current music, especially after track changes or during
|
||||||
|
// sparce intros and breakdowns.
|
||||||
|
if (change_interval > ideal_change_min) {
|
||||||
|
change_threshold++;
|
||||||
|
USER_PRINTF("Increasing change_threshold to: %d\n",change_threshold);
|
||||||
|
}
|
||||||
|
change_timer = millis();
|
||||||
|
}
|
||||||
|
|
||||||
// WLED-MM/TroyHacks - Change pattern testing
|
// WLED-MM/TroyHacks - Change pattern testing
|
||||||
//
|
//
|
||||||
@@ -146,14 +149,17 @@ class AutoPlaylistUsermod : public Usermod {
|
|||||||
while (currentPreset == newpreset);
|
while (currentPreset == newpreset);
|
||||||
|
|
||||||
applyPreset(newpreset);
|
applyPreset(newpreset);
|
||||||
|
|
||||||
USER_PRINT("*** CHANGE! Vector distance = ");
|
USER_PRINT("*** CHANGE! Vector distance = ");
|
||||||
USER_PRINT(distance);
|
USER_PRINT(distance);
|
||||||
USER_PRINT(" - change interval was ");
|
USER_PRINT(" - change_interval was ");
|
||||||
USER_PRINT(change_interval);
|
USER_PRINT(change_interval);
|
||||||
USER_PRINT("ms - next change min is ");
|
USER_PRINT("ms - next change_threshold is ");
|
||||||
USER_PRINTLN(change_threshold);
|
USER_PRINTLN(change_threshold);
|
||||||
lastchange = millis();
|
lastchange = millis();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t getFFTFromRange(um_data_t *data, uint8_t from, uint8_t to) {
|
uint8_t getFFTFromRange(um_data_t *data, uint8_t from, uint8_t to) {
|
||||||
@@ -283,7 +289,9 @@ class AutoPlaylistUsermod : public Usermod {
|
|||||||
* I highly recommend checking out the basics of ArduinoJson serialization and deserialization in order to use custom settings!
|
* I highly recommend checking out the basics of ArduinoJson serialization and deserialization in order to use custom settings!
|
||||||
*/
|
*/
|
||||||
void addToConfig(JsonObject& root) {
|
void addToConfig(JsonObject& root) {
|
||||||
|
|
||||||
JsonObject top = root.createNestedObject(FPSTR(_name)); // usermodname
|
JsonObject top = root.createNestedObject(FPSTR(_name)); // usermodname
|
||||||
|
|
||||||
top[FPSTR(_enabled)] = enabled;
|
top[FPSTR(_enabled)] = enabled;
|
||||||
top[FPSTR(_timeout)] = timeout;
|
top[FPSTR(_timeout)] = timeout;
|
||||||
top[FPSTR(_ambientPlaylist)] = ambientPlaylist; // usermodparam
|
top[FPSTR(_ambientPlaylist)] = ambientPlaylist; // usermodparam
|
||||||
@@ -292,8 +300,11 @@ class AutoPlaylistUsermod : public Usermod {
|
|||||||
top[FPSTR(_change_lockout)] = change_lockout;
|
top[FPSTR(_change_lockout)] = change_lockout;
|
||||||
top[FPSTR(_ideal_change_min)] = ideal_change_min;
|
top[FPSTR(_ideal_change_min)] = ideal_change_min;
|
||||||
top[FPSTR(_ideal_change_max)] = ideal_change_max;
|
top[FPSTR(_ideal_change_max)] = ideal_change_max;
|
||||||
|
|
||||||
lastAutoPlaylist = 0;
|
lastAutoPlaylist = 0;
|
||||||
|
|
||||||
DEBUG_PRINTLN(F("AutoPlaylist config saved."));
|
DEBUG_PRINTLN(F("AutoPlaylist config saved."));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -307,7 +318,9 @@ class AutoPlaylistUsermod : public Usermod {
|
|||||||
* The function should return true if configuration was successfully loaded or false if there was no configuration.
|
* The function should return true if configuration was successfully loaded or false if there was no configuration.
|
||||||
*/
|
*/
|
||||||
bool readFromConfig(JsonObject& root) {
|
bool readFromConfig(JsonObject& root) {
|
||||||
|
|
||||||
JsonObject top = root[FPSTR(_name)];
|
JsonObject top = root[FPSTR(_name)];
|
||||||
|
|
||||||
if (top.isNull()) {
|
if (top.isNull()) {
|
||||||
DEBUG_PRINT(FPSTR(_name));
|
DEBUG_PRINT(FPSTR(_name));
|
||||||
DEBUG_PRINTLN(F(": No config found. (Using defaults.)"));
|
DEBUG_PRINTLN(F(": No config found. (Using defaults.)"));
|
||||||
@@ -328,6 +341,7 @@ class AutoPlaylistUsermod : public Usermod {
|
|||||||
|
|
||||||
// use "return !top["newestParameter"].isNull();" when updating Usermod with new features
|
// use "return !top["newestParameter"].isNull();" when updating Usermod with new features
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -348,7 +362,6 @@ class AutoPlaylistUsermod : public Usermod {
|
|||||||
lastAutoPlaylist = id;
|
lastAutoPlaylist = id;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const char AutoPlaylistUsermod::_enabled[] PROGMEM = "enabled";
|
const char AutoPlaylistUsermod::_enabled[] PROGMEM = "enabled";
|
||||||
|
|||||||
Reference in New Issue
Block a user