Quick add shortcuts

This commit is contained in:
Dejvino 2026-03-01 23:16:47 +01:00
parent d9f1f1200c
commit 9cf6d600e0

View File

@ -1115,6 +1115,20 @@ int main(int argc, char* argv[]) {
engine.setVolume(knob_vol_val); engine.setVolume(knob_vol_val);
engine.setGate(false); // Start with silence engine.setGate(false); // Start with silence
// Define shortcuts for quick placement
const std::vector<std::pair<SDL_Scancode, SynthEngine::GridCell::Type>> shortcuts = {
{SDL_SCANCODE_1, SynthEngine::GridCell::WIRE},
{SDL_SCANCODE_2, SynthEngine::GridCell::FIXED_OSCILLATOR},
{SDL_SCANCODE_3, SynthEngine::GridCell::INPUT_OSCILLATOR},
{SDL_SCANCODE_4, SynthEngine::GridCell::GATE_INPUT},
{SDL_SCANCODE_5, SynthEngine::GridCell::ADSR_ATTACK},
{SDL_SCANCODE_6, SynthEngine::GridCell::VCA},
{SDL_SCANCODE_7, SynthEngine::GridCell::LPF},
{SDL_SCANCODE_8, SynthEngine::GridCell::DELAY},
{SDL_SCANCODE_9, SynthEngine::GridCell::REVERB},
{SDL_SCANCODE_0, SynthEngine::GridCell::EMPTY}
};
// --- Main Loop --- // --- Main Loop ---
const SynthEngine::GridCell::Type cellTypes[] = { const SynthEngine::GridCell::Type cellTypes[] = {
@ -1397,6 +1411,29 @@ int main(int argc, char* argv[]) {
} }
} }
} }
// Shortcuts for grid placement
for (const auto& shortcut : shortcuts) {
if (e.key.keysym.scancode == shortcut.first) {
int mx, my;
SDL_GetMouseState(&mx, &my);
if (mx < GRID_PANEL_WIDTH) {
int gx = mx / CELL_SIZE;
int gy = my / CELL_SIZE;
if (gx >= 0 && gx < SynthEngine::GRID_W && gy >= 0 && gy < SynthEngine::GRID_H) {
SynthLockGuard<SynthMutex> lock(engine.gridMutex);
if (engine.grid[gx][gy].type != SynthEngine::GridCell::SINK) {
engine.grid[gx][gy].type = shortcut.second;
engine.grid[gx][gy].param = 16384;
engine.grid[gx][gy].rotation = 0;
engine.grid[gx][gy].value = 0;
engine.grid[gx][gy].phase = 0;
}
}
engine.rebuildProcessingOrder();
}
}
}
} }
} else if (e.type == SDL_MOUSEBUTTONUP) { } else if (e.type == SDL_MOUSEBUTTONUP) {
if (exportButtonPressed) { if (exportButtonPressed) {
@ -1604,8 +1641,27 @@ int main(int argc, char* argv[]) {
// Buffer Preview // Buffer Preview
drawString(renderer, 50, 560, 12, "BUFFER"); drawString(renderer, 50, 560, 12, "BUFFER");
drawGridCell(renderer, 50, 580, CELL_SIZE, clipboardCell); drawGridCell(renderer, 50, 580, CELL_SIZE, clipboardCell);
drawString(renderer, 50, 580 + CELL_SIZE + 10, 12, "C-COPY"); drawString(renderer, 120, 590, 12, "C-COPY");
drawString(renderer, 50, 580 + CELL_SIZE + 30, 12, "V-PASTE"); drawString(renderer, 120, 610, 12, "V-PASTE");
// Shortcuts Hint
int sx = 50;
int sy = 660;
int sSize = 45;
for (const auto& shortcut : shortcuts) {
SynthEngine::GridCell dummy;
dummy.type = shortcut.second;
dummy.param = 16384;
dummy.rotation = 0;
dummy.value = 0;
dummy.phase = 0;
drawGridCell(renderer, sx, sy, sSize, dummy);
char keyName[2] = {0, 0};
if (shortcut.first == SDL_SCANCODE_0) keyName[0] = '0';
else keyName[0] = '1' + (shortcut.first - SDL_SCANCODE_1);
drawString(renderer, sx + 10, sy - 15, 12, keyName);
sx += sSize + 10;
}
drawButton(renderer, 270, 535, 80, 30, "SAVE", saveButtonPressed); drawButton(renderer, 270, 535, 80, 30, "SAVE", saveButtonPressed);
drawButton(renderer, 450, 535, 80, 30, "LOAD", loadButtonPressed); drawButton(renderer, 450, 535, 80, 30, "LOAD", loadButtonPressed);