diff options
author | Bad Diode <bd@badd10de.dev> | 2023-08-24 18:38:46 +0200 |
---|---|---|
committer | Bad Diode <bd@badd10de.dev> | 2023-08-24 18:38:46 +0200 |
commit | cf9912cd61c9499fc60a839042fcae1ac556e044 (patch) | |
tree | 47d396da1f5515038080adcd8c947e593a205b21 /src/sequencer.c | |
parent | 84f7dd59c87506a29f534a2f6a558799db38d256 (diff) | |
download | stepper-cf9912cd61c9499fc60a839042fcae1ac556e044.tar.gz stepper-cf9912cd61c9499fc60a839042fcae1ac556e044.zip |
Add visual feedback and control for scale roots
Diffstat (limited to 'src/sequencer.c')
-rw-r--r-- | src/sequencer.c | 40 |
1 files changed, 19 insertions, 21 deletions
diff --git a/src/sequencer.c b/src/sequencer.c index 3635657..f3dff04 100644 --- a/src/sequencer.c +++ b/src/sequencer.c | |||
@@ -15,7 +15,6 @@ bool redraw_channels = true; | |||
15 | bool redraw_bank_buttons = true; | 15 | bool redraw_bank_buttons = true; |
16 | bool redraw_params = true; | 16 | bool redraw_params = true; |
17 | bool redraw_bpm = true; | 17 | bool redraw_bpm = true; |
18 | bool redraw_piano_note = true; | ||
19 | bool redraw_scale = true; | 18 | bool redraw_scale = true; |
20 | bool update_bpm = false; | 19 | bool update_bpm = false; |
21 | u8 bar_counter = 0; | 20 | u8 bar_counter = 0; |
@@ -352,7 +351,6 @@ play_step(void) { | |||
352 | bar_counter++; | 351 | bar_counter++; |
353 | } | 352 | } |
354 | step_counter = (step_counter + 1) % 16; | 353 | step_counter = (step_counter + 1) % 16; |
355 | redraw_piano_note = true; | ||
356 | } | 354 | } |
357 | 355 | ||
358 | void | 356 | void |
@@ -457,7 +455,6 @@ handle_channel_selection(void) { | |||
457 | trig_selection_loc = 0; | 455 | trig_selection_loc = 0; |
458 | param_selection_loc = 0; | 456 | param_selection_loc = 0; |
459 | input_handler = handle_trigger_selection; | 457 | input_handler = handle_trigger_selection; |
460 | redraw_piano_note = true; | ||
461 | redraw_params = true; | 458 | redraw_params = true; |
462 | } else if (key_tap(KEY_LEFT)) { | 459 | } else if (key_tap(KEY_LEFT)) { |
463 | input_handler = handle_pattern_selection; | 460 | input_handler = handle_pattern_selection; |
@@ -503,7 +500,6 @@ stop_sound(void) { | |||
503 | SOUND_NOISE_CTRL = 0; | 500 | SOUND_NOISE_CTRL = 0; |
504 | redraw_play_pause = true; | 501 | redraw_play_pause = true; |
505 | redraw_pattern_buttons = true; | 502 | redraw_pattern_buttons = true; |
506 | redraw_piano_note = true; | ||
507 | } | 503 | } |
508 | 504 | ||
509 | void | 505 | void |
@@ -544,7 +540,6 @@ toggle_playing(void) { | |||
544 | SOUND_NOISE_CTRL = 0; | 540 | SOUND_NOISE_CTRL = 0; |
545 | redraw_play_pause = true; | 541 | redraw_play_pause = true; |
546 | redraw_pattern_buttons = true; | 542 | redraw_pattern_buttons = true; |
547 | redraw_piano_note = true; | ||
548 | if (settings.sync == SYNC_IN_LINK) { | 543 | if (settings.sync == SYNC_IN_LINK) { |
549 | return; | 544 | return; |
550 | } | 545 | } |
@@ -685,12 +680,18 @@ handle_right_col_selection(void) { | |||
685 | } | 680 | } |
686 | } break; | 681 | } break; |
687 | case R_COL_SCALE: { | 682 | case R_COL_SCALE: { |
688 | current_scale--; | 683 | if (key_hold(KEY_SELECT)) { |
689 | if (current_scale < 0) { | 684 | current_scale_root--; |
690 | current_scale = SCALE_NUM - 1; | 685 | if (current_scale_root < 0) { |
686 | current_scale_root = 11; | ||
687 | } | ||
688 | } else { | ||
689 | current_scale--; | ||
690 | if (current_scale < 0) { | ||
691 | current_scale = SCALE_NUM - 1; | ||
692 | } | ||
693 | redraw_scale = true; | ||
691 | } | 694 | } |
692 | // TODO: add root note change & keyboard viz. | ||
693 | redraw_scale = true; | ||
694 | } break; | 695 | } break; |
695 | } | 696 | } |
696 | } else if (key_tap(KEY_R)) { | 697 | } else if (key_tap(KEY_R)) { |
@@ -714,11 +715,15 @@ handle_right_col_selection(void) { | |||
714 | } | 715 | } |
715 | } break; | 716 | } break; |
716 | case R_COL_SCALE: { | 717 | case R_COL_SCALE: { |
717 | current_scale++; | 718 | if (key_hold(KEY_SELECT)) { |
718 | if (current_scale >= SCALE_NUM) { | 719 | current_scale_root = (current_scale_root + 1) % 12; |
719 | current_scale = 0; | 720 | } else { |
721 | current_scale++; | ||
722 | if (current_scale >= SCALE_NUM) { | ||
723 | current_scale = 0; | ||
724 | } | ||
725 | redraw_scale = true; | ||
720 | } | 726 | } |
721 | redraw_scale = true; | ||
722 | } break; | 727 | } break; |
723 | } | 728 | } |
724 | } else if (key_tap(KEY_B)) { | 729 | } else if (key_tap(KEY_B)) { |
@@ -1293,7 +1298,6 @@ handle_trigger_selection(void) { | |||
1293 | } | 1298 | } |
1294 | trig->active ^= 1; | 1299 | trig->active ^= 1; |
1295 | redraw_trigs = true; | 1300 | redraw_trigs = true; |
1296 | redraw_piano_note = true; | ||
1297 | } | 1301 | } |
1298 | } else if (key_tap(KEY_L)) { | 1302 | } else if (key_tap(KEY_L)) { |
1299 | s32 inc = -1; | 1303 | s32 inc = -1; |
@@ -1305,7 +1309,6 @@ handle_trigger_selection(void) { | |||
1305 | trig->note = scale_note(trig->note, inc); | 1309 | trig->note = scale_note(trig->note, inc); |
1306 | } | 1310 | } |
1307 | redraw_trigs = true; | 1311 | redraw_trigs = true; |
1308 | redraw_piano_note = true; | ||
1309 | } else if (key_tap(KEY_R)) { | 1312 | } else if (key_tap(KEY_R)) { |
1310 | s32 inc = 1; | 1313 | s32 inc = 1; |
1311 | if (key_hold(KEY_SELECT)) { | 1314 | if (key_hold(KEY_SELECT)) { |
@@ -1316,7 +1319,6 @@ handle_trigger_selection(void) { | |||
1316 | trig->note = scale_note(trig->note, inc); | 1319 | trig->note = scale_note(trig->note, inc); |
1317 | } | 1320 | } |
1318 | redraw_trigs = true; | 1321 | redraw_trigs = true; |
1319 | redraw_piano_note = true; | ||
1320 | } | 1322 | } |
1321 | 1323 | ||
1322 | // Move trigger cursor. | 1324 | // Move trigger cursor. |
@@ -1328,7 +1330,6 @@ handle_trigger_selection(void) { | |||
1328 | trig_selection_loc = MAX(trig_selection_loc - 1, 0); | 1330 | trig_selection_loc = MAX(trig_selection_loc - 1, 0); |
1329 | } | 1331 | } |
1330 | redraw_params = true; | 1332 | redraw_params = true; |
1331 | redraw_piano_note = true; | ||
1332 | } else if (key_tap(KEY_RIGHT)) { | 1333 | } else if (key_tap(KEY_RIGHT)) { |
1333 | if (trig_selection_loc != 7 && trig_selection_loc != 15) { | 1334 | if (trig_selection_loc != 7 && trig_selection_loc != 15) { |
1334 | trig_selection_loc = MIN(trig_selection_loc + 1, 15); | 1335 | trig_selection_loc = MIN(trig_selection_loc + 1, 15); |
@@ -1340,11 +1341,9 @@ handle_trigger_selection(void) { | |||
1340 | input_handler = handle_right_col_selection; | 1341 | input_handler = handle_right_col_selection; |
1341 | } | 1342 | } |
1342 | redraw_params = true; | 1343 | redraw_params = true; |
1343 | redraw_piano_note = true; | ||
1344 | } else if (key_tap(KEY_UP) || key_tap(KEY_DOWN)) { | 1344 | } else if (key_tap(KEY_UP) || key_tap(KEY_DOWN)) { |
1345 | trig_selection_loc = (trig_selection_loc + 8) % 16; | 1345 | trig_selection_loc = (trig_selection_loc + 8) % 16; |
1346 | redraw_params = true; | 1346 | redraw_params = true; |
1347 | redraw_piano_note = true; | ||
1348 | } else if (key_tap(KEY_A)) { | 1347 | } else if (key_tap(KEY_A)) { |
1349 | if (key_hold(KEY_SELECT)) { | 1348 | if (key_hold(KEY_SELECT)) { |
1350 | if (patterns[pattern_selection_loc].empty) { | 1349 | if (patterns[pattern_selection_loc].empty) { |
@@ -1364,7 +1363,6 @@ handle_trigger_selection(void) { | |||
1364 | case 3: { input_handler = handle_param_selection_noise; } break; | 1363 | case 3: { input_handler = handle_param_selection_noise; } break; |
1365 | } | 1364 | } |
1366 | redraw_params = true; | 1365 | redraw_params = true; |
1367 | redraw_piano_note = true; | ||
1368 | } | 1366 | } |
1369 | } | 1367 | } |
1370 | } | 1368 | } |