From b4593763ec78f14b9c6fb309f595740264969806 Mon Sep 17 00:00:00 2001 From: Bad Diode Date: Tue, 30 May 2023 14:00:23 +0200 Subject: Fix navigation on right column --- src/sequencer.c | 55 +++++++++++++++++++++++++++++++++++-------------------- 1 file changed, 35 insertions(+), 20 deletions(-) (limited to 'src/sequencer.c') diff --git a/src/sequencer.c b/src/sequencer.c index 115d848..b2a8468 100644 --- a/src/sequencer.c +++ b/src/sequencer.c @@ -367,31 +367,46 @@ select_bank(int i) { void handle_right_col_selection(void) { if (key_tap(KEY_LEFT)) { - input_handler = handle_trigger_selection; - switch (right_col_selection_loc) { - case R_COL_BPM: { trig_selection_loc = 15; } break; - default: { trig_selection_loc = 7; } break; + if (right_col_selection_loc == R_COL_STOP) { + right_col_selection_loc = R_COL_PLAY; + } else { + input_handler = handle_trigger_selection; + switch (right_col_selection_loc) { + case R_COL_BPM: { trig_selection_loc = 15; } break; + default: { trig_selection_loc = 7; } break; + } + redraw_params = true; } - redraw_params = true; } else if (key_tap(KEY_RIGHT)) { - input_handler = handle_pattern_selection; - switch (right_col_selection_loc) { - case R_COL_BANK_A: { pattern_selection_loc = 0; } break; - case R_COL_BANK_B: { pattern_selection_loc = 1; } break; - case R_COL_BANK_C: { pattern_selection_loc = 2; } break; - case R_COL_BANK_D: { pattern_selection_loc = 3; } break; - case R_COL_PLAY: { pattern_selection_loc = 4; } break; - case R_COL_STOP: { pattern_selection_loc = 5; } break; - default: { pattern_selection_loc = 6; } break; + if (right_col_selection_loc == R_COL_PLAY) { + right_col_selection_loc = R_COL_STOP; + } else { + input_handler = handle_pattern_selection; + switch (right_col_selection_loc) { + case R_COL_BANK_A: { pattern_selection_loc = 0; } break; + case R_COL_BANK_B: { pattern_selection_loc = 1; } break; + case R_COL_BANK_C: { pattern_selection_loc = 2; } break; + case R_COL_BANK_D: { pattern_selection_loc = 3; } break; + case R_COL_STOP: { pattern_selection_loc = 5; } break; + default: { pattern_selection_loc = 6; } break; + } + redraw_trigs = true; } - redraw_trigs = true; } else if (key_tap(KEY_UP)) { - if (right_col_selection_loc < R_COL_BANK_A) { - right_col_selection_loc++; + switch (right_col_selection_loc) { + case R_COL_PLAY: + case R_COL_STOP: { 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; } } else if (key_tap(KEY_DOWN)) { - if (right_col_selection_loc > R_COL_BPM) { - right_col_selection_loc--; + 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_PLAY; } break; + default: { right_col_selection_loc--; } break; } } else if (key_tap(KEY_L)) { switch (right_col_selection_loc) { @@ -938,7 +953,7 @@ 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_STOP; + right_col_selection_loc = R_COL_PLAY; } else if (trig_selection_loc == 15) { right_col_selection_loc = R_COL_BPM; input_handler = handle_right_col_selection; -- cgit v1.2.1