From dc53af3f01c0cbaefe4b330e2dcc2396b5afde47 Mon Sep 17 00:00:00 2001 From: Bad Diode Date: Tue, 30 May 2023 21:30:44 +0200 Subject: Add initial audio sync --- src/sequencer.c | 37 +++++++++++++++++++------------------ 1 file changed, 19 insertions(+), 18 deletions(-) (limited to 'src/sequencer.c') diff --git a/src/sequencer.c b/src/sequencer.c index b295730..d8c5f3f 100644 --- a/src/sequencer.c +++ b/src/sequencer.c @@ -26,9 +26,9 @@ gate_off(void) { | SIO_SI_OUT(0) | SIO_SO_OUT(1) | SIO_SC(0) - | SIO_SD(1) + | SIO_SD(0) | SIO_SO(0); - TIMER_CTRL_1 = 0; + TIMER_CTRL_3 = 0; } void @@ -39,12 +39,13 @@ gate_on(void) { | SIO_SI_OUT(0) | SIO_SO_OUT(1) | SIO_SC(1) - | SIO_SD(1) - | SIO_SO(0); + | SIO_SD(0) + | SIO_SO(1); int n_ticks = -244181 / 600; - irs_set(IRQ_TIMER_1, gate_off); - TIMER_DATA_1 = n_ticks; - TIMER_CTRL_1 = TIMER_CTRL_IRQ | TIMER_CTRL_ENABLE | TIMER_CTRL_FREQ_3; + irs_set(IRQ_TIMER_3, gate_off); + TIMER_DATA_3 = n_ticks; + TIMER_CTRL_3 = TIMER_CTRL_IRQ | TIMER_CTRL_ENABLE | TIMER_CTRL_FREQ_3; + audio_sync_click = true; } void @@ -183,9 +184,9 @@ set_time(int bpm) { // We have to operate on integer values, so the numbers have been // precalculated to `n_ticks = 244181 / bmp` int n_ticks = -244181 / bpm; - irs_set(IRQ_TIMER_0, play_step); - TIMER_DATA_0 = n_ticks; - TIMER_CTRL_0 = TIMER_CTRL_IRQ | TIMER_CTRL_ENABLE | TIMER_CTRL_FREQ_3; + irs_set(IRQ_TIMER_2, play_step); + TIMER_DATA_2 = n_ticks; + TIMER_CTRL_2 = TIMER_CTRL_IRQ | TIMER_CTRL_ENABLE | TIMER_CTRL_FREQ_3; } TriggerNote * @@ -296,7 +297,7 @@ void stop_playing(void) { play_status = 0; step_counter = 0; - TIMER_CTRL_0 = 0; + TIMER_CTRL_2 = 0; SOUND_SQUARE1_CTRL = 0; SOUND_SQUARE2_CTRL = 0; SOUND_WAVE_CTRL = 0; @@ -308,7 +309,7 @@ void toggle_playing(void) { play_status ^= 1; step_counter = 0; - if ((TIMER_CTRL_0 & TIMER_CTRL_ENABLE) == 0) { + if ((TIMER_CTRL_2 & TIMER_CTRL_ENABLE) == 0) { if (current_pattern != next_pattern) { current_pattern = next_pattern; redraw_pattern_buttons = true; @@ -316,7 +317,7 @@ toggle_playing(void) { set_time(patterns[current_pattern].bpm); play_step(); } else { - TIMER_CTRL_0 ^= TIMER_CTRL_ENABLE; + TIMER_CTRL_2 ^= TIMER_CTRL_ENABLE; SOUND_SQUARE1_CTRL = 0; SOUND_SQUARE2_CTRL = 0; SOUND_WAVE_CTRL = 0; @@ -328,7 +329,7 @@ toggle_playing(void) { void pause_playing(void) { play_status ^= 1; - if ((TIMER_CTRL_0 & TIMER_CTRL_ENABLE) == 0) { + if ((TIMER_CTRL_2 & TIMER_CTRL_ENABLE) == 0) { if (current_pattern != next_pattern && step_counter == 0) { current_pattern = next_pattern; redraw_pattern_buttons = true; @@ -336,7 +337,7 @@ pause_playing(void) { set_time(patterns[current_pattern].bpm); play_step(); } else { - TIMER_CTRL_0 ^= TIMER_CTRL_ENABLE; + TIMER_CTRL_2 ^= TIMER_CTRL_ENABLE; SOUND_SQUARE1_CTRL = 0; SOUND_SQUARE2_CTRL = 0; SOUND_WAVE_CTRL = 0; @@ -414,7 +415,7 @@ handle_right_col_selection(void) { patterns[pattern_selection_loc].bpm + bpm_inc, 10, 300); - if ((TIMER_CTRL_0 & TIMER_CTRL_ENABLE) != 0 + if ((TIMER_CTRL_2 & TIMER_CTRL_ENABLE) != 0 && current_pattern == pattern_selection_loc) { set_time(patterns[current_pattern].bpm); } @@ -432,7 +433,7 @@ handle_right_col_selection(void) { patterns[pattern_selection_loc].bpm + bpm_inc, 10, 300); - if ((TIMER_CTRL_0 & TIMER_CTRL_ENABLE) != 0 + if ((TIMER_CTRL_2 & TIMER_CTRL_ENABLE) != 0 && current_pattern == pattern_selection_loc) { set_time(patterns[current_pattern].bpm); } @@ -1036,5 +1037,5 @@ sequencer_init(void) { | SOUND_SQUARE2 | SOUND_WAVE | SOUND_NOISE, 3); - SOUND_DSOUND_MASTER = SOUND_DMG100; + init_dsound(); } -- cgit v1.2.1