Load presets from playlist
This commit is contained in:
@@ -36,6 +36,8 @@ class AutoPlaylistUsermod : public Usermod {
|
|||||||
int ideal_change_max = 5000; // ideally change patterns no more than this number of millis
|
int ideal_change_max = 5000; // ideally change patterns no more than this number of millis
|
||||||
int ideal_change_min = 2000; // ideally change patterns no less than this number of millis
|
int ideal_change_min = 2000; // ideally change patterns no less than this number of millis
|
||||||
|
|
||||||
|
std::vector<int> autoChangeIds;
|
||||||
|
|
||||||
static const char _enabled[];
|
static const char _enabled[];
|
||||||
static const char _ambientPlaylist[];
|
static const char _ambientPlaylist[];
|
||||||
static const char _musicPlaylist[];
|
static const char _musicPlaylist[];
|
||||||
@@ -94,10 +96,23 @@ class AutoPlaylistUsermod : public Usermod {
|
|||||||
}
|
}
|
||||||
if (change_threshold < 0) change_threshold = 0;
|
if (change_threshold < 0) change_threshold = 0;
|
||||||
|
|
||||||
int newpreset = random(2,30);
|
if(autoChangeIds.size() == 0) {
|
||||||
while (currentPreset == newpreset || newpreset == 8 || newpreset == 16 || newpreset == 27) { // 8 is a playlist for me so skip it and the other two just suck :D
|
USER_PRINTF("Loading presets from playlist:%u\n", currentPlaylist);
|
||||||
newpreset = random(2,30); // make sure we get a different preset
|
JsonObject playtlistOjb = doc.to<JsonObject>();
|
||||||
|
serializePlaylist(playtlistOjb);
|
||||||
|
JsonArray playlistArray = playtlistOjb["playlist"]["ps"];
|
||||||
|
for(JsonVariant v : playlistArray) {
|
||||||
|
USER_PRINTF("Adding %u to autoChangeIds\n", v.as<int>());
|
||||||
|
autoChangeIds.push_back(v.as<int>());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
uint8_t newpreset = 0;
|
||||||
|
do {
|
||||||
|
newpreset = autoChangeIds.at(random(0, (autoChangeIds.size() - 1)));
|
||||||
|
}
|
||||||
|
while (currentPreset == newpreset);
|
||||||
|
|
||||||
applyPreset(newpreset);
|
applyPreset(newpreset);
|
||||||
USER_PRINTF("*** CHANGE! Squared distance = %d - change interval was %d ms - next change min is %d\n",squared_distance, change_interval, change_threshold);
|
USER_PRINTF("*** CHANGE! Squared distance = %d - change interval was %d ms - next change min is %d\n",squared_distance, change_interval, change_threshold);
|
||||||
lastchange = millis();
|
lastchange = millis();
|
||||||
@@ -105,7 +120,7 @@ class AutoPlaylistUsermod : public Usermod {
|
|||||||
}
|
}
|
||||||
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) {
|
||||||
uint8_t *fftResult = (uint8_t*) data->u_data[2];
|
uint8_t *fftResult = (uint8_t*) data->u_data[2];
|
||||||
uint8_t result = 0;
|
uint16_t result = 0;
|
||||||
for (int i = from; i <= to; i++) {
|
for (int i = from; i <= to; i++) {
|
||||||
result += fftResult[i] * fftResult[i];
|
result += fftResult[i] * fftResult[i];
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user