aboutsummaryrefslogtreecommitdiffstats
path: root/src/sequencer.c
diff options
context:
space:
mode:
authorBad Diode <bd@badd10de.dev>2023-08-24 18:38:46 +0200
committerBad Diode <bd@badd10de.dev>2023-08-24 18:38:46 +0200
commitcf9912cd61c9499fc60a839042fcae1ac556e044 (patch)
tree47d396da1f5515038080adcd8c947e593a205b21 /src/sequencer.c
parent84f7dd59c87506a29f534a2f6a558799db38d256 (diff)
downloadstepper-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.c40
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;
15bool redraw_bank_buttons = true; 15bool redraw_bank_buttons = true;
16bool redraw_params = true; 16bool redraw_params = true;
17bool redraw_bpm = true; 17bool redraw_bpm = true;
18bool redraw_piano_note = true;
19bool redraw_scale = true; 18bool redraw_scale = true;
20bool update_bpm = false; 19bool update_bpm = false;
21u8 bar_counter = 0; 20u8 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
358void 356void
@@ -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
509void 505void
@@ -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}