aboutsummaryrefslogtreecommitdiffstats
path: root/src/sequencer.c
diff options
context:
space:
mode:
authorBad Diode <bd@badd10de.dev>2023-08-22 11:30:47 +0200
committerBad Diode <bd@badd10de.dev>2023-08-22 11:30:47 +0200
commit8fc5cc7f53ea3874bae5389f489814869d2abd04 (patch)
tree9d01ef11a0618a6377d07058c2cd704562827bb7 /src/sequencer.c
parentc888455af3ea5b9e8d2087a57df104c14ffac09e (diff)
downloadstepper-8fc5cc7f53ea3874bae5389f489814869d2abd04.tar.gz
stepper-8fc5cc7f53ea3874bae5389f489814869d2abd04.zip
Update right column UI and cursor management
Diffstat (limited to 'src/sequencer.c')
-rw-r--r--src/sequencer.c100
1 files changed, 64 insertions, 36 deletions
diff --git a/src/sequencer.c b/src/sequencer.c
index b3b27c6..4e3802f 100644
--- a/src/sequencer.c
+++ b/src/sequencer.c
@@ -570,42 +570,64 @@ select_bank(int i) {
570void 570void
571handle_right_col_selection(void) { 571handle_right_col_selection(void) {
572 if (key_tap(KEY_LEFT)) { 572 if (key_tap(KEY_LEFT)) {
573 if (right_col_selection_loc == R_COL_STOP) { 573 switch (right_col_selection_loc) {
574 right_col_selection_loc = R_COL_PLAY; 574 case R_COL_STOP:
575 case R_COL_BANK_B:
576 case R_COL_BANK_D:
577 case R_COL_BANK_F: { right_col_selection_loc--; } break;
578 case R_COL_BANK_A:
579 case R_COL_BANK_C:
580 case R_COL_BANK_E:
581 case R_COL_SCALE:
582 case R_COL_BPM:
583 case R_COL_SETTINGS:
584 case R_COL_PLAY: {
585 input_handler = handle_trigger_selection;
586 redraw_params = true;
587 } break;
588 }
589 if (right_col_selection_loc == R_COL_PLAY ||
590 right_col_selection_loc == R_COL_SETTINGS) {
591 trig_selection_loc = 15;
575 } else { 592 } else {
576 if (right_col_selection_loc == R_COL_BPM) { 593 trig_selection_loc = 7;
577 trig_selection_loc = 15;
578 } else {
579 trig_selection_loc = 7;
580 }
581 input_handler = handle_trigger_selection;
582 redraw_params = true;
583 } 594 }
584 } else if (key_tap(KEY_RIGHT)) { 595 } else if (key_tap(KEY_RIGHT)) {
585 if (right_col_selection_loc == R_COL_PLAY) { 596 switch (right_col_selection_loc) {
586 right_col_selection_loc = R_COL_STOP; 597 case R_COL_PLAY:
587 } else { 598 case R_COL_BANK_A:
588 input_handler = handle_pattern_selection; 599 case R_COL_BANK_C:
589 param_selection_loc = 0; 600 case R_COL_BANK_E: { right_col_selection_loc++; } break;
590 redraw_trigs = true; 601 case R_COL_BANK_B:
602 case R_COL_BANK_D:
603 case R_COL_BANK_F:
604 case R_COL_SCALE:
605 case R_COL_BPM:
606 case R_COL_SETTINGS:
607 case R_COL_STOP: { input_handler = handle_pattern_selection; } break;
591 } 608 }
592 } else if (key_tap(KEY_UP)) { 609 } else if (key_tap(KEY_UP)) {
593 switch (right_col_selection_loc) { 610 switch (right_col_selection_loc) {
594 case R_COL_PLAY: 611 case R_COL_BANK_A: { right_col_selection_loc = R_COL_PLAY; } break;
595 case R_COL_STOP: { right_col_selection_loc = R_COL_SETTINGS; } break; 612 case R_COL_BANK_B: { right_col_selection_loc = R_COL_STOP; } break;
596 case R_COL_SETTINGS: { right_col_selection_loc = R_COL_BANK_D; } break; 613 case R_COL_BANK_C:
597 case R_COL_BPM: { right_col_selection_loc = R_COL_PLAY; } break; 614 case R_COL_BANK_D:
598 case R_COL_BANK_A: { right_col_selection_loc = R_COL_BPM; } break; 615 case R_COL_BANK_E:
599 default: { right_col_selection_loc++; } break; 616 case R_COL_BANK_F:
617 case R_COL_STOP:
618 case R_COL_SCALE: { right_col_selection_loc -= 2; } break;
619 default: { right_col_selection_loc--; } break;
600 } 620 }
601 } else if (key_tap(KEY_DOWN)) { 621 } else if (key_tap(KEY_DOWN)) {
602 switch (right_col_selection_loc) { 622 switch (right_col_selection_loc) {
603 case R_COL_PLAY: 623 case R_COL_BANK_A:
604 case R_COL_STOP: { right_col_selection_loc = R_COL_BPM; } break; 624 case R_COL_BANK_B:
605 case R_COL_BPM: { right_col_selection_loc = R_COL_BANK_A; } break; 625 case R_COL_BANK_C:
606 case R_COL_BANK_D: { right_col_selection_loc = R_COL_SETTINGS; } break; 626 case R_COL_BANK_D:
607 case R_COL_SETTINGS: { right_col_selection_loc = R_COL_PLAY; } break; 627 case R_COL_BANK_E: { right_col_selection_loc += 2; } break;
608 default: { right_col_selection_loc--; } break; 628 case R_COL_PLAY: { right_col_selection_loc = R_COL_BANK_A; } break;
629 case R_COL_STOP: { right_col_selection_loc = R_COL_BANK_B; } break;
630 default: { right_col_selection_loc++; } break;
609 } 631 }
610 } else if (key_tap(KEY_L)) { 632 } else if (key_tap(KEY_L)) {
611 switch (right_col_selection_loc) { 633 switch (right_col_selection_loc) {
@@ -624,6 +646,7 @@ handle_right_col_selection(void) {
624 } 646 }
625 redraw_bpm = true; 647 redraw_bpm = true;
626 } break; 648 } break;
649 // TODO: Scale.
627 } 650 }
628 } else if (key_tap(KEY_R)) { 651 } else if (key_tap(KEY_R)) {
629 switch (right_col_selection_loc) { 652 switch (right_col_selection_loc) {
@@ -642,16 +665,20 @@ handle_right_col_selection(void) {
642 } 665 }
643 redraw_bpm = true; 666 redraw_bpm = true;
644 } break; 667 } break;
668 // TODO: Scale.
645 } 669 }
646 } else if (key_tap(KEY_B)) { 670 } else if (key_tap(KEY_B)) {
647 switch (right_col_selection_loc) { 671 switch (right_col_selection_loc) {
648 case R_COL_SETTINGS: { next_scene = SCENE_SETTINGS; } break; 672 case R_COL_SETTINGS: { next_scene = SCENE_SETTINGS; } break;
673 // case R_COL_SCALE: { stop_playing(); } break; // TODO: Should scale be toggleable?
649 case R_COL_STOP: { stop_playing(); } break; 674 case R_COL_STOP: { stop_playing(); } break;
650 case R_COL_PLAY: { pause_playing(); } break; 675 case R_COL_PLAY: { pause_playing(); } break;
651 case R_COL_BANK_A: { select_bank(0); } break; 676 case R_COL_BANK_A: { select_bank(0); } break;
652 case R_COL_BANK_B: { select_bank(1); } break; 677 case R_COL_BANK_B: { select_bank(1); } break;
653 case R_COL_BANK_C: { select_bank(2); } break; 678 case R_COL_BANK_C: { select_bank(2); } break;
654 case R_COL_BANK_D: { select_bank(3); } break; 679 case R_COL_BANK_D: { select_bank(3); } break;
680 case R_COL_BANK_E: { select_bank(4); } break;
681 case R_COL_BANK_F: { select_bank(5); } break;
655 } 682 }
656 } 683 }
657} 684}
@@ -759,13 +786,14 @@ handle_pattern_selection(void) {
759 input_handler = handle_right_col_selection; 786 input_handler = handle_right_col_selection;
760 right_col_selection_loc = R_COL_BPM; 787 right_col_selection_loc = R_COL_BPM;
761 switch (pattern_selection_loc) { 788 switch (pattern_selection_loc) {
762 case 0: { right_col_selection_loc = R_COL_BANK_A; } break; 789 case 0: { right_col_selection_loc = R_COL_BANK_B; } break;
763 case 1: { right_col_selection_loc = R_COL_BANK_B; } break; 790 case 1: { right_col_selection_loc = R_COL_BANK_D; } break;
764 case 2: { right_col_selection_loc = R_COL_BANK_C; } break; 791 case 2: { right_col_selection_loc = R_COL_BANK_F; } break;
765 case 3: { right_col_selection_loc = R_COL_BANK_D; } break; 792 case 3: { right_col_selection_loc = R_COL_SCALE; } break;
766 case 4: { right_col_selection_loc = R_COL_PLAY; } break; 793 case 4: { right_col_selection_loc = R_COL_SCALE; } break;
767 case 5: { right_col_selection_loc = R_COL_STOP; } break; 794 case 5: { right_col_selection_loc = R_COL_BPM; } break;
768 default: { right_col_selection_loc = R_COL_BPM; } break; 795 case 6: { right_col_selection_loc = R_COL_SETTINGS; } break;
796 case 7: { right_col_selection_loc = R_COL_STOP; } break;
769 } 797 }
770 } 798 }
771 if (key_tap(KEY_R)) { 799 if (key_tap(KEY_R)) {
@@ -1233,9 +1261,9 @@ handle_trigger_selection(void) {
1233 trig_selection_loc = MIN(trig_selection_loc + 1, 15); 1261 trig_selection_loc = MIN(trig_selection_loc + 1, 15);
1234 } else if (trig_selection_loc == 7) { 1262 } else if (trig_selection_loc == 7) {
1235 input_handler = handle_right_col_selection; 1263 input_handler = handle_right_col_selection;
1236 right_col_selection_loc = R_COL_PLAY;
1237 } else if (trig_selection_loc == 15) {
1238 right_col_selection_loc = R_COL_BPM; 1264 right_col_selection_loc = R_COL_BPM;
1265 } else if (trig_selection_loc == 15) {
1266 right_col_selection_loc = R_COL_PLAY;
1239 input_handler = handle_right_col_selection; 1267 input_handler = handle_right_col_selection;
1240 } 1268 }
1241 redraw_params = true; 1269 redraw_params = true;