From d2be261b88753c3e0fdeb7588057aa3f1648ead5 Mon Sep 17 00:00:00 2001 From: Bad Diode Date: Wed, 12 Jul 2023 16:02:28 +0200 Subject: Add notification bar and mockup of pattern chaining --- src/drawing.c | 37 ++++++++++++++++++++++++------------- src/globals.c | 14 +++++++------- src/main.c | 14 ++++++++++++++ 3 files changed, 45 insertions(+), 20 deletions(-) (limited to 'src') diff --git a/src/drawing.c b/src/drawing.c index 4481374..3e00e17 100644 --- a/src/drawing.c +++ b/src/drawing.c @@ -342,7 +342,7 @@ draw_note(u8 note, u8 clr) { x0 = PIANO_START_X + 2 + octave * 28 + 4; x1 = x0 + 2; y0 = PIANO_START_Y - 2 + 13; - y1 = y0 + 7; + y1 = y0 + 2; draw_filled_rect(x0, y0, x1, y1, clr); } break; case 4:{ @@ -354,7 +354,7 @@ draw_note(u8 note, u8 clr) { x0 = PIANO_START_X + 2 + octave * 28 + 8; x1 = x0 + 2; y0 = PIANO_START_Y - 2 + 13; - y1 = y0 + 7; + y1 = y0 + 2; draw_filled_rect(x0, y0, x1, y1, clr); } break; case 5:{ @@ -377,7 +377,7 @@ draw_note(u8 note, u8 clr) { x0 = PIANO_START_X + 2 + octave * 28 + 16; x1 = x0 + 2; y0 = PIANO_START_Y - 2 + 13; - y1 = y0 + 7; + y1 = y0 + 2; draw_filled_rect(x0, y0, x1, y1, clr); } break; case 9:{ @@ -389,7 +389,7 @@ draw_note(u8 note, u8 clr) { x0 = PIANO_START_X + 2 + octave * 28 + 20; x1 = x0 + 2; y0 = PIANO_START_Y - 2 + 13; - y1 = y0 + 7; + y1 = y0 + 2; draw_filled_rect(x0, y0, x1, y1, clr); } break; case 11: { @@ -401,7 +401,7 @@ draw_note(u8 note, u8 clr) { x0 = PIANO_START_X + 2 + octave * 28 + 24; x1 = x0 + 2; y0 = PIANO_START_Y - 2 + 13; - y1 = y0 + 7; + y1 = y0 + 2; draw_filled_rect(x0, y0, x1, y1, clr); } break; default: { @@ -611,7 +611,7 @@ draw_parameters_wave(ChannelWaveParams *params, bool global) { u8 *wave_b = params->wave_b; size_t x = PARAMS_START_X; - size_t y = PARAMS_START_Y + 12; + size_t y = PARAMS_START_Y + 8; // Wave Patterns. draw_wave_pattern(wave_a, x, y + 1, COL_ACC_1); @@ -706,7 +706,7 @@ draw_parameters_square(ChannelSquareParams *params, bool sweep, bool global) { // Shape drawing. { size_t x = PARAMS_START_X + x_offset; - size_t y = PARAMS_START_Y + PARAMS_H - 47; + size_t y = PARAMS_START_Y + PARAMS_H - 43; size_t x0 = x + 2; size_t x1 = x0; @@ -788,14 +788,14 @@ draw_parameters_square(ChannelSquareParams *params, bool sweep, bool global) { // Bounding box. { size_t x0 = PARAMS_START_X + 31 + x_offset; - size_t y0 = PARAMS_START_Y + PARAMS_H - 50; + size_t y0 = PARAMS_START_Y + PARAMS_H - 46; size_t x1 = x0 + 79; size_t y1 = y0 + 21; draw_rect(x0, y0, x1, y1, COL_ACC_2); } size_t x = PARAMS_START_X + 42 + x_offset; - size_t y = PARAMS_START_Y + PARAMS_H - 47; + size_t y = PARAMS_START_Y + PARAMS_H - 43; size_t x0 = x; size_t y0 = y + 15 - params->env_volume; size_t x1 = x + 8 * params->env_time; @@ -954,7 +954,7 @@ draw_parameters_square(ChannelSquareParams *params, bool sweep, bool global) { // Labels. { size_t x = PARAMS_START_X + x_offset; - size_t y = PARAMS_START_Y + PARAMS_H - 48; + size_t y = PARAMS_START_Y + PARAMS_H - 43; txt_drawf_small("shape", x + 1, y - 12, col_fg); txt_drawf_small("envelope", x + 54, y - 12, col_fg); if (sweep) { @@ -998,14 +998,14 @@ draw_parameters_noise(ChannelNoiseParams* params, bool global) { // Bounding box. { size_t x0 = PARAMS_START_X + 31 + x_offset; - size_t y0 = PARAMS_START_Y + PARAMS_H - 50; + size_t y0 = PARAMS_START_Y + PARAMS_H - 46; size_t x1 = x0 + 79; size_t y1 = y0 + 21; draw_rect(x0, y0, x1, y1, COL_ACC_2); } size_t x = PARAMS_START_X + 42 + x_offset; - size_t y = PARAMS_START_Y + PARAMS_H - 47; + size_t y = PARAMS_START_Y + PARAMS_H - 43; size_t x0 = x; size_t y0 = y + 15 - params->env_volume; size_t x1 = x + 8 * params->env_time; @@ -1103,7 +1103,7 @@ draw_parameters_noise(ChannelNoiseParams* params, bool global) { // Labels. { size_t x = PARAMS_START_X + x_offset; - size_t y = PARAMS_START_Y + PARAMS_H - 48; + size_t y = PARAMS_START_Y + PARAMS_H - 43; txt_drawf_small("envelope", x + 54, y - 12, col_fg); } } @@ -1238,3 +1238,14 @@ draw_piano_notes(void) { } } } + +void +draw_notif_bar() { + u8 x0 = PARAMS_START_X; + u8 y0 = PARAMS_START_Y - 7; + u8 x1 = PARAMS_START_X + PARAMS_W; + u8 y1 = y0 + 10; + u8 color = COL_FG; + draw_rect(x0, y0, x1, y1, color); + txt_drawf_small("HELLO WORLD!", x0 + 2, y0 + 1, color); +} diff --git a/src/globals.c b/src/globals.c index b113d6d..2f4d32d 100644 --- a/src/globals.c +++ b/src/globals.c @@ -33,32 +33,32 @@ bool clear_screen = true; #define CHAN_W 19 #define CHAN_H 8 #define CHAN_START_X 30 -#define CHAN_START_Y 95 +#define CHAN_START_Y 97 #define CHAN_OFFSET_Y 15 #define TRIG_W 15 #define TRIG_H 22 #define TRIG_START_X 59 -#define TRIG_START_Y 95 +#define TRIG_START_Y 97 #define TRIG_OFFSET_X (TRIG_W + 3) #define TRIG_OFFSET_Y (TRIG_H + 8) #define PIANO_W 170 -#define PIANO_H 20 +#define PIANO_H 15 #define PIANO_START_X 30 -#define PIANO_START_Y 69 +#define PIANO_START_Y 76 #define PIANO_NOTE_W 2 #define PARAMS_W 170 -#define PARAMS_H 64 +#define PARAMS_H 60 #define PARAMS_START_X 30 -#define PARAMS_START_Y 4 +#define PARAMS_START_Y 16 #define R_SIDEBAR_X ((TRIG_START_X) + (TRIG_OFFSET_X) * 8 + 4) #define L_SIDEBAR_X ((CHAN_START_X) - 26) #define PAT_START_X (L_SIDEBAR_X + 4) -#define PAT_START_Y 18 +#define PAT_START_Y 20 #define PAT_W 14 #define PAT_H 10 #define PAT_OFFSET_Y 17 diff --git a/src/main.c b/src/main.c index e819558..5c7d6ed 100644 --- a/src/main.c +++ b/src/main.c @@ -23,6 +23,9 @@ WITH REGARD TO THIS SOFTWARE. // This could get annoying, so maybe it should be a configuration option to // enable it? // - Pattern chaining for more than 1 queue and/or song mode. +// - L: Remove from chain +// - R: Add to chain +// - Loop? // - Undo/Redo. // - Select + up/down to queue the next pattern as we move to it? // @@ -88,7 +91,18 @@ render_sequencer(void) { if (redraw_params) { PROF(draw_parameters(), draw_param_cycles); redraw_params = false; + } else if (input_handler == handle_pattern_selection){ + // DEBUG: move to drawing file + draw_rect( + PARAMS_START_X, + PARAMS_START_Y + 6, + PARAMS_START_X + PARAMS_W, + PARAMS_START_Y + PARAMS_H - 6, COL_FG); + txt_drawf_small("Current pattern: %s", PARAMS_START_X + 3, PARAMS_START_Y + 8, COL_FG, "A"); + txt_drawf_small("Next pattern: %s", PARAMS_START_X + 3, PARAMS_START_Y + 8 * 2, COL_FG, "A"); + txt_drawf_small("Chain: %s", PARAMS_START_X + 3, PARAMS_START_Y + 8 * 3, COL_FG, "A - B - B - A - B"); } + draw_notif_bar(); PROF(draw_cursors(), draw_cursor_cycles); } -- cgit v1.2.1