From 67e27463192baa4d6b0ae1479078373a23ca0142 Mon Sep 17 00:00:00 2001 From: Bad Diode Date: Mon, 24 Apr 2023 19:28:12 +0200 Subject: Add wraparound cursor on left/right columns --- src/sequencer.c | 134 ++++++++++++++++++++++---------------------------------- 1 file changed, 52 insertions(+), 82 deletions(-) (limited to 'src/sequencer.c') diff --git a/src/sequencer.c b/src/sequencer.c index 1d5b3d6..547e9e8 100644 --- a/src/sequencer.c +++ b/src/sequencer.c @@ -173,18 +173,10 @@ handle_channel_selection(void) { clipboard_copy(); } else { switch (channel_selection_loc) { - case 0: { - pat->ch1.active ^= 1; - } break; - case 1: { - pat->ch2.active ^= 1; - } break; - case 2: { - pat->ch3.active ^= 1; - } break; - case 3: { - pat->ch4.active ^= 1; - } break; + case 0: { pat->ch1.active ^= 1; } break; + case 1: { pat->ch2.active ^= 1; } break; + case 2: { pat->ch3.active ^= 1; } break; + case 3: { pat->ch4.active ^= 1; } break; } redraw_channels = true; } @@ -342,15 +334,22 @@ 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; - case R_COL_PLAY : - case R_COL_STOP: { - trig_selection_loc = 7; - } break; + case R_COL_BPM: { trig_selection_loc = 15; } break; + default: { trig_selection_loc = 7; } break; } 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; + } + redraw_trigs = true; } else if (key_tap(KEY_UP)) { if (right_col_selection_loc < R_COL_BANK_A) { right_col_selection_loc++; @@ -397,24 +396,12 @@ handle_right_col_selection(void) { } } else if (key_tap(KEY_B)) { switch (right_col_selection_loc) { - case R_COL_STOP: { - toggle_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_STOP: { toggle_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; } } } @@ -452,6 +439,19 @@ handle_pattern_selection(void) { redraw_bpm = true; } } + if (key_tap(KEY_LEFT)) { + 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; + } + } } bool @@ -519,27 +519,13 @@ set_param_selection_sq1(ChannelSquareParams *params, InputHandler return_handler inc = 1; } switch (param_selection_loc) { - case 0: { - params->duty_cycle = CLAMP(params->duty_cycle + inc, 0, 3); - } break; - case 1: { - params->env_volume = CLAMP(params->env_volume + inc, 0, 15); - } break; - case 2: { - params->env_direction ^= 1; - } break; - case 3: { - params->env_time = CLAMP(params->env_time + inc, 0, 7); - } break; - case 4: { - params->sweep_number = CLAMP(params->sweep_number + inc, 0, 7); - } break; - case 5: { - params->sweep_time = CLAMP(params->sweep_time + inc, 0, 7); - } break; - case 6: { - params->sweep_direction ^= 1; - } break; + case 0: { params->duty_cycle = CLAMP(params->duty_cycle + inc, 0, 3); } break; + case 1: { params->env_volume = CLAMP(params->env_volume + inc, 0, 15); } break; + case 2: { params->env_direction ^= 1; } break; + case 3: { params->env_time = CLAMP(params->env_time + inc, 0, 7); } break; + case 4: { params->sweep_number = CLAMP(params->sweep_number + inc, 0, 7); } break; + case 5: { params->sweep_time = CLAMP(params->sweep_time + inc, 0, 7); } break; + case 6: { params->sweep_direction ^= 1; } break; } redraw_params = true; return true; @@ -580,18 +566,10 @@ set_param_selection_sq2(ChannelSquareParams *params, InputHandler return_handler inc = 1; } switch (param_selection_loc) { - case 0: { - params->duty_cycle = CLAMP(params->duty_cycle + inc, 0, 3); - } break; - case 1: { - params->env_volume = CLAMP(params->env_volume + inc, 0, 15); - } break; - case 2: { - params->env_direction ^= 1; - } break; - case 3: { - params->env_time = CLAMP(params->env_time + inc, 0, 7); - } break; + case 0: { params->duty_cycle = CLAMP(params->duty_cycle + inc, 0, 3); } break; + case 1: { params->env_volume = CLAMP(params->env_volume + inc, 0, 15); } break; + case 2: { params->env_direction ^= 1; } break; + case 3: { params->env_time = CLAMP(params->env_time + inc, 0, 7); } break; } redraw_params = true; return true; @@ -798,18 +776,10 @@ set_param_selection_noise(ChannelNoiseParams *params, InputHandler return_handle inc = 1; } switch (param_selection_loc) { - case 0: { - params->bit_mode = CLAMP(params->bit_mode + inc, 0, 1); - } break; - case 1: { - params->env_volume = CLAMP(params->env_volume + inc, 0, 15); - } break; - case 2: { - params->env_direction ^= 1; - } break; - case 3: { - params->env_time = CLAMP(params->env_time + inc, 0, 7); - } break; + case 0: { params->bit_mode = CLAMP(params->bit_mode + inc, 0, 1); } break; + case 1: { params->env_volume = CLAMP(params->env_volume + inc, 0, 15); } break; + case 2: { params->env_direction ^= 1; } break; + case 3: { params->env_time = CLAMP(params->env_time + inc, 0, 7); } break; } redraw_params = true; return true; -- cgit v1.2.1