From bdfd216b4a9debd6390c684b7465557559f36a8c Mon Sep 17 00:00:00 2001 From: Dejvino Date: Sun, 1 Mar 2026 16:15:36 +0100 Subject: [PATCH] More simulator buttons --- .gitignore | 3 ++- simulator/main.cpp | 62 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 64 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 2252787..d0f5c58 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ noicesynth_linux -miniaudio.h \ No newline at end of file +miniaudio.h +noicesynth_patch* \ No newline at end of file diff --git a/simulator/main.cpp b/simulator/main.cpp index a726586..d45043d 100644 --- a/simulator/main.cpp +++ b/simulator/main.cpp @@ -1147,6 +1147,9 @@ int main(int argc, char* argv[]) { bool importButtonPressed = false; bool saveButtonPressed = false; bool loadButtonPressed = false; + bool randomizeButtonPressed = false; + bool clearButtonPressed = false; + bool nextPresetButtonPressed = false; while (!quit) { checkSerialInput(serialPort); @@ -1260,6 +1263,24 @@ int main(int argc, char* argv[]) { my >= loadButtonRect.y && my <= loadButtonRect.y + loadButtonRect.h) { loadButtonPressed = true; } + + SDL_Rect randomizeButtonRect = {250, 380, 100, 30}; + if (synthX >= randomizeButtonRect.x && synthX <= randomizeButtonRect.x + randomizeButtonRect.w && + my >= randomizeButtonRect.y && my <= randomizeButtonRect.y + randomizeButtonRect.h) { + randomizeButtonPressed = true; + } + + SDL_Rect clearButtonRect = {360, 380, 80, 30}; + if (synthX >= clearButtonRect.x && synthX <= clearButtonRect.x + clearButtonRect.w && + my >= clearButtonRect.y && my <= clearButtonRect.y + clearButtonRect.h) { + clearButtonPressed = true; + } + + SDL_Rect nextPresetButtonRect = {450, 380, 80, 30}; + if (synthX >= nextPresetButtonRect.x && synthX <= nextPresetButtonRect.x + nextPresetButtonRect.w && + my >= nextPresetButtonRect.y && my <= nextPresetButtonRect.y + nextPresetButtonRect.h) { + nextPresetButtonPressed = true; + } } } else if (e.type == SDL_MOUSEWHEEL) { SDL_Keymod modState = SDL_GetModState(); @@ -1416,6 +1437,43 @@ int main(int argc, char* argv[]) { } loadButtonPressed = false; } + if (randomizeButtonPressed) { + int mx = e.button.x; + int my = e.button.y; + int synthX = mx - GRID_PANEL_WIDTH; + SDL_Rect randomizeButtonRect = {250, 380, 100, 30}; + if (mx >= GRID_PANEL_WIDTH && + synthX >= randomizeButtonRect.x && synthX <= randomizeButtonRect.x + randomizeButtonRect.w && + my >= randomizeButtonRect.y && my <= randomizeButtonRect.y + randomizeButtonRect.h) { + randomizeGrid(); + } + randomizeButtonPressed = false; + } + if (clearButtonPressed) { + int mx = e.button.x; + int my = e.button.y; + int synthX = mx - GRID_PANEL_WIDTH; + SDL_Rect clearButtonRect = {360, 380, 80, 30}; + if (mx >= GRID_PANEL_WIDTH && + synthX >= clearButtonRect.x && synthX <= clearButtonRect.x + clearButtonRect.w && + my >= clearButtonRect.y && my <= clearButtonRect.y + clearButtonRect.h) { + engine.clearGrid(); + } + clearButtonPressed = false; + } + if (nextPresetButtonPressed) { + int mx = e.button.x; + int my = e.button.y; + int synthX = mx - GRID_PANEL_WIDTH; + SDL_Rect nextPresetButtonRect = {450, 380, 80, 30}; + if (mx >= GRID_PANEL_WIDTH && + synthX >= nextPresetButtonRect.x && synthX <= nextPresetButtonRect.x + nextPresetButtonRect.w && + my >= nextPresetButtonRect.y && my <= nextPresetButtonRect.y + nextPresetButtonRect.h) { + current_preset = (current_preset + 1) % 6; + engine.loadPreset(current_preset); + } + nextPresetButtonPressed = false; + } } else if (e.type == SDL_KEYUP) { if (!auto_melody_enabled && e.key.keysym.scancode == current_key_scancode) { engine.setGate(false); @@ -1498,6 +1556,10 @@ int main(int argc, char* argv[]) { drawButton(renderer, 300, 435, 100, 30, "EXPORT", exportButtonPressed); drawButton(renderer, 410, 435, 100, 30, "IMPORT", importButtonPressed); + drawButton(renderer, 250, 380, 100, 30, "RANDOM", randomizeButtonPressed); + drawButton(renderer, 360, 380, 80, 30, "CLEAR", clearButtonPressed); + drawButton(renderer, 450, 380, 80, 30, "PRESET+", nextPresetButtonPressed); + // Patch Slot Control float normalized_slot = (float)current_patch_slot / 7.0f; drawKnob(renderer, 400, 550, 40, normalized_slot);