aboutsummaryrefslogtreecommitdiffstats
path: root/src/main.c
diff options
context:
space:
mode:
authorBad Diode <bd@badd10de.dev>2023-08-08 18:50:46 +0200
committerBad Diode <bd@badd10de.dev>2023-08-08 18:50:46 +0200
commitbb4af22481a27d9324f5377b7024e3592d4227ff (patch)
tree7b6704fc1f8f719eb6a9abe4e5c7c220e142dbb0 /src/main.c
parent8aa5155ecfbaaa2e67f82561352a5857bc86d39e (diff)
downloadstepper-bb4af22481a27d9324f5377b7024e3592d4227ff.tar.gz
stepper-bb4af22481a27d9324f5377b7024e3592d4227ff.zip
Update main UI with new 1.7 design
Diffstat (limited to 'src/main.c')
-rw-r--r--src/main.c38
1 files changed, 22 insertions, 16 deletions
diff --git a/src/main.c b/src/main.c
index eb16687..76a54b6 100644
--- a/src/main.c
+++ b/src/main.c
@@ -14,11 +14,6 @@ WITH REGARD TO THIS SOFTWARE.
14// UI tweaks. 14// UI tweaks.
15// - Add custom user themes 15// - Add custom user themes
16// - Animations for cursor movement/current step highlight. (A fade out maybe?) 16// - Animations for cursor movement/current step highlight. (A fade out maybe?)
17// - Improve "grey" cursor with dithering instead.
18// - Remove thin cursor option and make the fat one default, it's just better.
19// - Settings page overhaul.
20// - Make sure there is an ALL notification when modifying channel params so
21// that it's clear it's affecting all triggers.
22// 17//
23// Quality of life improvements. 18// Quality of life improvements.
24// - When not on play mode, adjusting a note or a parameter triggers the sound. 19// - When not on play mode, adjusting a note or a parameter triggers the sound.
@@ -27,7 +22,6 @@ WITH REGARD TO THIS SOFTWARE.
27// - Undo/Redo. 22// - Undo/Redo.
28// 23//
29// Advanced 24// Advanced
30// - Scale mode for entering notes.
31// - Add tap tempo for BPM. 25// - Add tap tempo for BPM.
32// - Allow "marking" several trigs to be able to copy/paste them and/or adjust 26// - Allow "marking" several trigs to be able to copy/paste them and/or adjust
33// their parameters. 27// their parameters.
@@ -37,19 +31,30 @@ WITH REGARD TO THIS SOFTWARE.
37// - Per trig LFO? How would we go about this? There is at least one empty slot 31// - Per trig LFO? How would we go about this? There is at least one empty slot
38// in all channels. LFO amount? LFO speed? Would need a dedicated page for 32// in all channels. LFO amount? LFO speed? Would need a dedicated page for
39// configuring LFOs 33// configuring LFOs
40// - Multiple pattern chains per bank that we can toggle between, gotta study
41// if they fit in the SRAM.
42// - Make sure bank switching is queued like patterns.
43// - Add settings for "performance mode" in which banks are not saved by
44// default while changing patterns.
45// - Make sure sync works with the same cable for in/out.
46// - Per-channel N steps to create polymeters? 34// - Per-channel N steps to create polymeters?
47// - Higher resolution clock to allow for microtiming and more accurate tempo.
48// - Study how to better embed data into the cart that doesn't involve the 35// - Study how to better embed data into the cart that doesn't involve the
49// build system to generate .c files. Just use the linker to put binary data 36// build system to generate .c files. Just use the linker to put binary data
50// into the ROM. 37// into the ROM.
38//
39// WIP (1.7)
40// - Scale mode for entering notes.
51// - Improve SRAM saving to make room for longer patterns and/or more banks. 41// - Improve SRAM saving to make room for longer patterns and/or more banks.
52// - Add CLEAR ALL to the settings menu. 42// - Add CLEAR ALL to the settings menu.
43// - Higher resolution clock to allow for microtiming and more accurate tempo.
44// - Multiple pattern chains per bank that we can toggle between, gotta study
45// if they fit in the SRAM.
46// - Make sure bank switching is queued like patterns.
47// - Add settings for "performance mode" in which banks are not saved by
48// default while changing patterns.
49// - Make sure sync works with the same cable for in/out.
50// - Improve "grey" cursor with dithering instead.
51// - Remove thin cursor option and make the fat one default, it's just better.
52// - Settings page overhaul.
53// - Make sure there is an ALL notification when modifying channel params so
54// that it's clear it's affecting all triggers.
55// - Blank patterns could show up as empty on the pattern view for better
56// separation and section organization.
57// - Study more improvements for a "performance mode".
53// 58//
54 59
55#include "gba/gba.h" 60#include "gba/gba.h"
@@ -65,7 +70,6 @@ WITH REGARD TO THIS SOFTWARE.
65 70
66void 71void
67render_sequencer(void) { 72render_sequencer(void) {
68 PROF(draw_rect(0, 0, SCREEN_WIDTH - 1, SCREEN_HEIGHT - 1, 1), clear_cycles);
69 if (redraw_trigs) { 73 if (redraw_trigs) {
70 PROF(draw_triggers(), draw_trigs_cycles); 74 PROF(draw_triggers(), draw_trigs_cycles);
71 redraw_trigs = false; 75 redraw_trigs = false;
@@ -89,6 +93,9 @@ render_sequencer(void) {
89 if (redraw_play_pause) { 93 if (redraw_play_pause) {
90 PROF(draw_play(), draw_btn_cycles); 94 PROF(draw_play(), draw_btn_cycles);
91 PROF(draw_stop(), draw_btn_cycles); 95 PROF(draw_stop(), draw_btn_cycles);
96 // TODO: Move to separate if condition
97 PROF(draw_settings(), draw_btn_cycles);
98 PROF(draw_scale(), draw_btn_cycles);
92 redraw_play_pause = false; 99 redraw_play_pause = false;
93 } 100 }
94 if (redraw_piano_note) { 101 if (redraw_piano_note) {
@@ -112,7 +119,6 @@ render_sequencer(void) {
112 119
113void 120void
114render_settings(void) { 121render_settings(void) {
115 PROF(draw_rect(0, 0, SCREEN_WIDTH - 1, SCREEN_HEIGHT - 1, 1), clear_cycles);
116 txt_drawf_small("settings", 11, 5, COL_FG) 122 txt_drawf_small("settings", 11, 5, COL_FG)
117 txt_printf("\n\n\n"); 123 txt_printf("\n\n\n");
118 txt_printf(" SYNC: %s\n\n", sync_setting_str[settings.sync]); 124 txt_printf(" SYNC: %s\n\n", sync_setting_str[settings.sync]);
@@ -139,7 +145,7 @@ render(void) {
139 } break; 145 } break;
140 } 146 }
141 // DEBUG: Ensuring the saved data don't exceed SRAM size (32k). 147 // DEBUG: Ensuring the saved data don't exceed SRAM size (32k).
142 // txt_drawf("SIZE: %lu", 0, 0, COL_ACC_1, sizeof(Metadata) + sizeof(patterns) * 4 + sizeof(chain) * 4); 148 txt_drawf("SIZE: %lu", 0, 0, COL_ACC_1, sizeof(Metadata) + sizeof(patterns) * 6 + sizeof(chain) * 6);
143} 149}
144 150
145void 151void