From 8fc5cc7f53ea3874bae5389f489814869d2abd04 Mon Sep 17 00:00:00 2001 From: Bad Diode Date: Tue, 22 Aug 2023 11:30:47 +0200 Subject: Update right column UI and cursor management --- src/sequencer.c | 100 ++++++++++++++++++++++++++++++++++++-------------------- 1 file changed, 64 insertions(+), 36 deletions(-) (limited to 'src/sequencer.c') 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) { void handle_right_col_selection(void) { if (key_tap(KEY_LEFT)) { - if (right_col_selection_loc == R_COL_STOP) { - right_col_selection_loc = R_COL_PLAY; + switch (right_col_selection_loc) { + case R_COL_STOP: + case R_COL_BANK_B: + case R_COL_BANK_D: + case R_COL_BANK_F: { right_col_selection_loc--; } break; + case R_COL_BANK_A: + case R_COL_BANK_C: + case R_COL_BANK_E: + case R_COL_SCALE: + case R_COL_BPM: + case R_COL_SETTINGS: + case R_COL_PLAY: { + input_handler = handle_trigger_selection; + redraw_params = true; + } break; + } + if (right_col_selection_loc == R_COL_PLAY || + right_col_selection_loc == R_COL_SETTINGS) { + trig_selection_loc = 15; } else { - if (right_col_selection_loc == R_COL_BPM) { - trig_selection_loc = 15; - } else { - trig_selection_loc = 7; - } - input_handler = handle_trigger_selection; - redraw_params = true; + trig_selection_loc = 7; } } else if (key_tap(KEY_RIGHT)) { - if (right_col_selection_loc == R_COL_PLAY) { - right_col_selection_loc = R_COL_STOP; - } else { - input_handler = handle_pattern_selection; - param_selection_loc = 0; - redraw_trigs = true; + switch (right_col_selection_loc) { + case R_COL_PLAY: + case R_COL_BANK_A: + case R_COL_BANK_C: + case R_COL_BANK_E: { right_col_selection_loc++; } break; + case R_COL_BANK_B: + case R_COL_BANK_D: + case R_COL_BANK_F: + case R_COL_SCALE: + case R_COL_BPM: + case R_COL_SETTINGS: + case R_COL_STOP: { input_handler = handle_pattern_selection; } break; } } else if (key_tap(KEY_UP)) { switch (right_col_selection_loc) { - case R_COL_PLAY: - case R_COL_STOP: { right_col_selection_loc = R_COL_SETTINGS; } break; - case R_COL_SETTINGS: { right_col_selection_loc = R_COL_BANK_D; } break; - case R_COL_BPM: { right_col_selection_loc = R_COL_PLAY; } break; - case R_COL_BANK_A: { right_col_selection_loc = R_COL_BPM; } break; - default: { right_col_selection_loc++; } break; + case R_COL_BANK_A: { right_col_selection_loc = R_COL_PLAY; } break; + case R_COL_BANK_B: { right_col_selection_loc = R_COL_STOP; } break; + case R_COL_BANK_C: + case R_COL_BANK_D: + case R_COL_BANK_E: + case R_COL_BANK_F: + case R_COL_STOP: + case R_COL_SCALE: { right_col_selection_loc -= 2; } break; + default: { right_col_selection_loc--; } break; } } else if (key_tap(KEY_DOWN)) { switch (right_col_selection_loc) { - case R_COL_PLAY: - case R_COL_STOP: { right_col_selection_loc = R_COL_BPM; } break; - case R_COL_BPM: { right_col_selection_loc = R_COL_BANK_A; } break; - case R_COL_BANK_D: { right_col_selection_loc = R_COL_SETTINGS; } break; - case R_COL_SETTINGS: { right_col_selection_loc = R_COL_PLAY; } break; - default: { right_col_selection_loc--; } break; + case R_COL_BANK_A: + case R_COL_BANK_B: + case R_COL_BANK_C: + case R_COL_BANK_D: + case R_COL_BANK_E: { right_col_selection_loc += 2; } break; + case R_COL_PLAY: { right_col_selection_loc = R_COL_BANK_A; } break; + case R_COL_STOP: { right_col_selection_loc = R_COL_BANK_B; } break; + default: { right_col_selection_loc++; } break; } } else if (key_tap(KEY_L)) { switch (right_col_selection_loc) { @@ -624,6 +646,7 @@ handle_right_col_selection(void) { } redraw_bpm = true; } break; + // TODO: Scale. } } else if (key_tap(KEY_R)) { switch (right_col_selection_loc) { @@ -642,16 +665,20 @@ handle_right_col_selection(void) { } redraw_bpm = true; } break; + // TODO: Scale. } } else if (key_tap(KEY_B)) { switch (right_col_selection_loc) { case R_COL_SETTINGS: { next_scene = SCENE_SETTINGS; } break; + // case R_COL_SCALE: { stop_playing(); } break; // TODO: Should scale be toggleable? case R_COL_STOP: { stop_playing(); } break; case R_COL_PLAY: { pause_playing(); } break; case R_COL_BANK_A: { select_bank(0); } break; case R_COL_BANK_B: { select_bank(1); } break; case R_COL_BANK_C: { select_bank(2); } break; case R_COL_BANK_D: { select_bank(3); } break; + case R_COL_BANK_E: { select_bank(4); } break; + case R_COL_BANK_F: { select_bank(5); } break; } } } @@ -759,13 +786,14 @@ handle_pattern_selection(void) { input_handler = handle_right_col_selection; right_col_selection_loc = R_COL_BPM; switch (pattern_selection_loc) { - case 0: { right_col_selection_loc = R_COL_BANK_A; } break; - case 1: { right_col_selection_loc = R_COL_BANK_B; } break; - case 2: { right_col_selection_loc = R_COL_BANK_C; } break; - case 3: { right_col_selection_loc = R_COL_BANK_D; } break; - case 4: { right_col_selection_loc = R_COL_PLAY; } break; - case 5: { right_col_selection_loc = R_COL_STOP; } break; - default: { right_col_selection_loc = R_COL_BPM; } break; + case 0: { right_col_selection_loc = R_COL_BANK_B; } break; + case 1: { right_col_selection_loc = R_COL_BANK_D; } break; + case 2: { right_col_selection_loc = R_COL_BANK_F; } break; + case 3: { right_col_selection_loc = R_COL_SCALE; } break; + case 4: { right_col_selection_loc = R_COL_SCALE; } break; + case 5: { right_col_selection_loc = R_COL_BPM; } break; + case 6: { right_col_selection_loc = R_COL_SETTINGS; } break; + case 7: { right_col_selection_loc = R_COL_STOP; } break; } } if (key_tap(KEY_R)) { @@ -1233,9 +1261,9 @@ handle_trigger_selection(void) { trig_selection_loc = MIN(trig_selection_loc + 1, 15); } else if (trig_selection_loc == 7) { input_handler = handle_right_col_selection; - right_col_selection_loc = R_COL_PLAY; - } else if (trig_selection_loc == 15) { right_col_selection_loc = R_COL_BPM; + } else if (trig_selection_loc == 15) { + right_col_selection_loc = R_COL_PLAY; input_handler = handle_right_col_selection; } redraw_params = true; -- cgit v1.2.1