aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBad Diode <bd@badd10de.dev>2023-05-30 14:39:30 +0200
committerBad Diode <bd@badd10de.dev>2023-05-30 14:39:30 +0200
commitd813b06a015bd678af7d8262b26373759bf2aacb (patch)
tree44378d9b77dbf75c7ea83c706452c7f0a2762817
parentb4593763ec78f14b9c6fb309f595740264969806 (diff)
downloadstepper-d813b06a015bd678af7d8262b26373759bf2aacb.tar.gz
stepper-d813b06a015bd678af7d8262b26373759bf2aacb.zip
Add settings button and navigation
-rw-r--r--src/drawing.c18
-rw-r--r--src/globals.c19
-rw-r--r--src/sequencer.c23
3 files changed, 38 insertions, 22 deletions
diff --git a/src/drawing.c b/src/drawing.c
index 1652c17..a9322dd 100644
--- a/src/drawing.c
+++ b/src/drawing.c
@@ -123,6 +123,11 @@ draw_right_col_cursor(int i, u8 clr) {
123 x1 = x0 + PLAY_STOP_W; 123 x1 = x0 + PLAY_STOP_W;
124 y = PLAY_START_Y + PLAY_STOP_H + 2; 124 y = PLAY_START_Y + PLAY_STOP_H + 2;
125 } break; 125 } break;
126 case R_COL_SETTINGS: {
127 x0 = SETTINGS_START_X + 2;
128 x1 = x0 + R_COL_W - 4;
129 y = SETTINGS_START_Y + PLAY_STOP_H + 2;
130 } break;
126 case R_COL_BANK_A: { 131 case R_COL_BANK_A: {
127 x0 = BANK_START_X; 132 x0 = BANK_START_X;
128 x1 = x0 + PAT_W; 133 x1 = x0 + PAT_W;
@@ -250,12 +255,25 @@ draw_play() {
250} 255}
251 256
252void 257void
258draw_settings() {
259 size_t x = SETTINGS_START_X;
260 size_t y = SETTINGS_START_Y;
261 draw_rect(x + 2, y, x + R_COL_W - 2, y + PLAY_STOP_H, COL_OFF);
262 draw_line(x + 6, y + 4, x + 9, y + 4, COL_OFF);
263 draw_line(x + 6, y + 6, x + 9, y + 6, COL_OFF);
264 draw_line(x + 15, y + 4, x + 18, y + 4, COL_OFF);
265 draw_line(x + 15, y + 6, x + 18, y + 6, COL_OFF);
266 draw_line(x + 9, y + 5, x + 15, y + 5, COL_OFF);
267}
268
269void
253draw_stop() { 270draw_stop() {
254 size_t x = STOP_START_X; 271 size_t x = STOP_START_X;
255 size_t y = STOP_START_Y; 272 size_t y = STOP_START_Y;
256 size_t x_btn = x + PLAY_STOP_W / 2 - 2; 273 size_t x_btn = x + PLAY_STOP_W / 2 - 2;
257 draw_rect(x, y, x + PLAY_STOP_W, y + PLAY_STOP_H, COL_ACC_1); 274 draw_rect(x, y, x + PLAY_STOP_W, y + PLAY_STOP_H, COL_ACC_1);
258 draw_filled_rect(x_btn, y + 3, x_btn + 4, y + 7, COL_ACC_1); 275 draw_filled_rect(x_btn, y + 3, x_btn + 4, y + 7, COL_ACC_1);
276 draw_settings();
259} 277}
260 278
261void 279void
diff --git a/src/globals.c b/src/globals.c
index f62962a..5580681 100644
--- a/src/globals.c
+++ b/src/globals.c
@@ -46,7 +46,7 @@ bool clear_screen = true;
46#define PIANO_W 170 46#define PIANO_W 170
47#define PIANO_H 20 47#define PIANO_H 20
48#define PIANO_START_X 30 48#define PIANO_START_X 30
49#define PIANO_START_Y 67 49#define PIANO_START_Y 69
50#define PIANO_NOTE_W 2 50#define PIANO_NOTE_W 2
51 51
52#define PARAMS_W 170 52#define PARAMS_W 170
@@ -68,6 +68,8 @@ bool clear_screen = true;
68#define BPM_START_Y (TRIG_START_Y + TRIG_H + 8) 68#define BPM_START_Y (TRIG_START_Y + TRIG_H + 8)
69#define BPM_H 22 69#define BPM_H 22
70 70
71#define SETTINGS_START_X (R_SIDEBAR_X)
72#define SETTINGS_START_Y (TRIG_START_Y - 7)
71#define PLAY_START_X (R_SIDEBAR_X) 73#define PLAY_START_X (R_SIDEBAR_X)
72#define PLAY_START_Y (TRIG_START_Y + 12) 74#define PLAY_START_Y (TRIG_START_Y + 12)
73#define STOP_START_X (R_SIDEBAR_X + 14) 75#define STOP_START_X (R_SIDEBAR_X + 14)
@@ -81,13 +83,14 @@ bool clear_screen = true;
81#define SEQ_N_CHANNELS 4 83#define SEQ_N_CHANNELS 4
82 84
83enum RIGHT_COL_LOC { 85enum RIGHT_COL_LOC {
84 R_COL_BPM = 0, 86 R_COL_BPM = 0,
85 R_COL_PLAY = 1, 87 R_COL_PLAY = 1,
86 R_COL_STOP = 2, 88 R_COL_STOP = 2,
87 R_COL_BANK_D = 3, 89 R_COL_SETTINGS = 3,
88 R_COL_BANK_C = 4, 90 R_COL_BANK_D = 4,
89 R_COL_BANK_B = 5, 91 R_COL_BANK_C = 5,
90 R_COL_BANK_A = 6, 92 R_COL_BANK_B = 6,
93 R_COL_BANK_A = 7,
91}; 94};
92 95
93// Input handling works using a FSM. The input handler is switched to whichever 96// Input handling works using a FSM. The input handler is switched to whichever
diff --git a/src/sequencer.c b/src/sequencer.c
index b2a8468..0efd50c 100644
--- a/src/sequencer.c
+++ b/src/sequencer.c
@@ -370,11 +370,12 @@ handle_right_col_selection(void) {
370 if (right_col_selection_loc == R_COL_STOP) { 370 if (right_col_selection_loc == R_COL_STOP) {
371 right_col_selection_loc = R_COL_PLAY; 371 right_col_selection_loc = R_COL_PLAY;
372 } else { 372 } else {
373 input_handler = handle_trigger_selection; 373 if (right_col_selection_loc == R_COL_BPM) {
374 switch (right_col_selection_loc) { 374 trig_selection_loc = 15;
375 case R_COL_BPM: { trig_selection_loc = 15; } break; 375 } else {
376 default: { trig_selection_loc = 7; } break; 376 trig_selection_loc = 7;
377 } 377 }
378 input_handler = handle_trigger_selection;
378 redraw_params = true; 379 redraw_params = true;
379 } 380 }
380 } else if (key_tap(KEY_RIGHT)) { 381 } else if (key_tap(KEY_RIGHT)) {
@@ -382,20 +383,13 @@ handle_right_col_selection(void) {
382 right_col_selection_loc = R_COL_STOP; 383 right_col_selection_loc = R_COL_STOP;
383 } else { 384 } else {
384 input_handler = handle_pattern_selection; 385 input_handler = handle_pattern_selection;
385 switch (right_col_selection_loc) {
386 case R_COL_BANK_A: { pattern_selection_loc = 0; } break;
387 case R_COL_BANK_B: { pattern_selection_loc = 1; } break;
388 case R_COL_BANK_C: { pattern_selection_loc = 2; } break;
389 case R_COL_BANK_D: { pattern_selection_loc = 3; } break;
390 case R_COL_STOP: { pattern_selection_loc = 5; } break;
391 default: { pattern_selection_loc = 6; } break;
392 }
393 redraw_trigs = true; 386 redraw_trigs = true;
394 } 387 }
395 } else if (key_tap(KEY_UP)) { 388 } else if (key_tap(KEY_UP)) {
396 switch (right_col_selection_loc) { 389 switch (right_col_selection_loc) {
397 case R_COL_PLAY: 390 case R_COL_PLAY:
398 case R_COL_STOP: { right_col_selection_loc = R_COL_BANK_D; } break; 391 case R_COL_STOP: { right_col_selection_loc = R_COL_SETTINGS; } break;
392 case R_COL_SETTINGS: { right_col_selection_loc = R_COL_BANK_D; } break;
399 case R_COL_BPM: { right_col_selection_loc = R_COL_PLAY; } break; 393 case R_COL_BPM: { right_col_selection_loc = R_COL_PLAY; } break;
400 case R_COL_BANK_A: { right_col_selection_loc = R_COL_BPM; } break; 394 case R_COL_BANK_A: { right_col_selection_loc = R_COL_BPM; } break;
401 default: { right_col_selection_loc++; } break; 395 default: { right_col_selection_loc++; } break;
@@ -405,7 +399,8 @@ handle_right_col_selection(void) {
405 case R_COL_PLAY: 399 case R_COL_PLAY:
406 case R_COL_STOP: { right_col_selection_loc = R_COL_BPM; } break; 400 case R_COL_STOP: { right_col_selection_loc = R_COL_BPM; } break;
407 case R_COL_BPM: { right_col_selection_loc = R_COL_BANK_A; } break; 401 case R_COL_BPM: { right_col_selection_loc = R_COL_BANK_A; } break;
408 case R_COL_BANK_D: { right_col_selection_loc = R_COL_PLAY; } break; 402 case R_COL_BANK_D: { right_col_selection_loc = R_COL_SETTINGS; } break;
403 case R_COL_SETTINGS: { right_col_selection_loc = R_COL_PLAY; } break;
409 default: { right_col_selection_loc--; } break; 404 default: { right_col_selection_loc--; } break;
410 } 405 }
411 } else if (key_tap(KEY_L)) { 406 } else if (key_tap(KEY_L)) {