From f34f9603583f07ee41bbc373719a5de58bf90fea Mon Sep 17 00:00:00 2001 From: Dejvino Date: Sat, 7 Mar 2026 21:31:17 +0100 Subject: [PATCH] Chance setting --- Persistence.cpp | 21 +++++++++++++++++++++ PlaybackThread.cpp | 5 ++++- SharedState.cpp | 4 +++- SharedState.h | 2 ++ TrackerTypes.h | 1 + UIManager.cpp | 15 +++++++++++++++ UIThread.cpp | 24 ++++++++++++++++++++++++ 7 files changed, 70 insertions(+), 2 deletions(-) diff --git a/Persistence.cpp b/Persistence.cpp index 300f875..7822742 100644 --- a/Persistence.cpp +++ b/Persistence.cpp @@ -22,6 +22,9 @@ void Persistence::saveSequence(bool quiet) { int intensities[NUM_TRACKS]; for(int i=0; i 10) trackIntensity[i] = 10; } + int chances[NUM_TRACKS]; + EEPROM.get(addr, chances); addr += sizeof(chances); + for(int i=0; i 100) trackChance[i] = 100; + } int steps[NUM_TRACKS]; EEPROM.get(addr, steps); addr += sizeof(steps); for(int i=0; i 10) trackIntensity[i] = 10; } + int chances[NUM_TRACKS]; + EEPROM.get(addr, chances); addr += sizeof(chances); + for(int i=0; i 100) trackChance[i] = 100; + } if (isPlaying) { SequenceGenerator::generateSequenceData(currentThemeIndex, nextSequence); @@ -189,6 +209,7 @@ void Persistence::factoryReset() { ui.showMessage("RESETTING..."); for(int i=0; i 100) current = 100; + trackChance[randomizeTrack] = current; + } + break; } if (currentState == UI_RANDOMIZE_TRACK_EDIT) { randomizeTrack += (delta > 0 ? 1 : -1); @@ -254,6 +263,7 @@ static void handleInput() { case MENU_ID_MUTE: trackMute[randomizeTrack] = !trackMute[randomizeTrack]; break; case MENU_ID_FLAVOUR: currentState = UI_EDIT_FLAVOUR; break; case MENU_ID_INTENSITY: currentState = UI_EDIT_INTENSITY; break; + case MENU_ID_CHANCE: currentState = UI_EDIT_CHANCE; break; case MENU_ID_MUTATION: mutationEnabled = !mutationEnabled; break; case MENU_ID_CHANNEL: currentState = UI_SETUP_CHANNEL_EDIT; break; @@ -355,6 +365,20 @@ static void handleInput() { } saveSequence(true); break; + case UI_EDIT_CHANCE: + currentState = UI_MENU_MAIN; + if (isPlaying) { + int theme = (queuedTheme != -1) ? queuedTheme : currentThemeIndex; + midi.lock(); + if (!sequenceChangeScheduled) { + memcpy(nextSequence, sequence, sizeof(sequence)); + } + SequenceGenerator::generateTrackData(randomizeTrack, theme, nextSequence); + sequenceChangeScheduled = true; + midi.unlock(); + } + saveSequence(true); + break; case UI_RANDOMIZE_TRACK_EDIT: currentState = UI_MENU_MAIN; saveSequence(true);