Quick add shortcuts
This commit is contained in:
parent
d9f1f1200c
commit
9cf6d600e0
@ -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);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user