From eaf5d404450c4e467b981db1ea79c6871667a52e Mon Sep 17 00:00:00 2001 From: Bad Diode Date: Fri, 25 Aug 2023 11:37:02 +0200 Subject: Add global BPM behaviour --- src/sequencer.c | 57 +++++++++++++++++++++++++++++++++------------------------ 1 file changed, 33 insertions(+), 24 deletions(-) (limited to 'src/sequencer.c') diff --git a/src/sequencer.c b/src/sequencer.c index f3dff04..07f3012 100644 --- a/src/sequencer.c +++ b/src/sequencer.c @@ -8,17 +8,6 @@ void set_time(int bpm); -bool redraw_pattern_buttons = true; -bool redraw_play_pause = true; -bool redraw_trigs = true; -bool redraw_channels = true; -bool redraw_bank_buttons = true; -bool redraw_params = true; -bool redraw_bpm = true; -bool redraw_scale = true; -bool update_bpm = false; -u8 bar_counter = 0; - void clear_pattern(size_t idx) { Pattern *pat = &patterns[idx]; @@ -121,7 +110,9 @@ select_bank(int i) { next_pattern = 0; next_bank = i; clipboard.type = CLIP_EMPTY; - save_bank(current_bank); + if (settings.auto_save) { + save_bank(current_bank); + } metadata.current_pattern = current_pattern; metadata.current_bank = i; save_metadata(); @@ -552,7 +543,11 @@ toggle_playing(void) { if (current_bank != next_bank) { select_bank(next_bank); } - set_time(patterns[current_pattern].bpm); + if (settings.global_bpm) { + set_time(settings.bpm); + } else { + set_time(patterns[current_pattern].bpm); + } play_step(); } else { TIMER_CTRL_2 ^= TIMER_CTRL_ENABLE; @@ -590,7 +585,11 @@ pause_playing(void) { current_pattern = next_pattern; redraw_pattern_buttons = true; } - set_time(patterns[current_pattern].bpm); + if (settings.global_bpm) { + set_time(settings.bpm); + } else { + set_time(patterns[current_pattern].bpm); + } play_step(); } else { TIMER_CTRL_2 ^= TIMER_CTRL_ENABLE; @@ -666,13 +665,18 @@ handle_right_col_selection(void) { if (key_pressed(KEY_SELECT)) { bpm_inc = -10; } - patterns[pattern_selection_loc].bpm = CLAMP( - patterns[pattern_selection_loc].bpm + bpm_inc, - 10, - 300); + if (settings.global_bpm) { + settings.bpm = CLAMP(settings.bpm + bpm_inc, 10, 300); + } else { + patterns[pattern_selection_loc].bpm = CLAMP(patterns[pattern_selection_loc].bpm + bpm_inc, 10, 300); + } if ((TIMER_CTRL_2 & TIMER_CTRL_ENABLE) != 0 && current_pattern == pattern_selection_loc) { - set_time(patterns[current_pattern].bpm); + if (settings.global_bpm) { + set_time(settings.bpm); + } else { + set_time(patterns[current_pattern].bpm); + } } redraw_bpm = true; if (patterns[pattern_selection_loc].empty) { @@ -701,13 +705,18 @@ handle_right_col_selection(void) { if (key_pressed(KEY_SELECT)) { bpm_inc = 10; } - patterns[pattern_selection_loc].bpm = CLAMP( - patterns[pattern_selection_loc].bpm + bpm_inc, - 10, - 300); + if (settings.global_bpm) { + settings.bpm = CLAMP(settings.bpm + bpm_inc, 10, 300); + } else { + patterns[pattern_selection_loc].bpm = CLAMP(patterns[pattern_selection_loc].bpm + bpm_inc, 10, 300); + } if ((TIMER_CTRL_2 & TIMER_CTRL_ENABLE) != 0 && current_pattern == pattern_selection_loc) { - set_time(patterns[current_pattern].bpm); + if (settings.global_bpm) { + set_time(settings.bpm); + } else { + set_time(patterns[current_pattern].bpm); + } } redraw_bpm = true; if (patterns[pattern_selection_loc].empty) { -- cgit v1.2.1