From e475e43918fc200fea3951093223273ee2fb3761 Mon Sep 17 00:00:00 2001 From: Bad Diode Date: Thu, 1 Feb 2024 16:06:38 +0100 Subject: Adjust sync options to new tick sequencer --- src/sequencer.c | 64 ++++++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 45 insertions(+), 19 deletions(-) (limited to 'src/sequencer.c') diff --git a/src/sequencer.c b/src/sequencer.c index 7570a7a..a72eced 100644 --- a/src/sequencer.c +++ b/src/sequencer.c @@ -306,27 +306,14 @@ play_step(void) { SOUND_NOISE_CTRL = 0; } - switch (settings.sync) { - case SYNC_OUT_LINK_16: { gate_on(); } break; - case SYNC_OUT_LINK_8: { if (step_counter % 2 == 0) { gate_on(); } } break; - case SYNC_OUT_LINK_4: { if (step_counter % 4 == 0) { gate_on(); } } break; - case SYNC_OUT_AUDIO_16: { audio_sync_click = true; } break; - case SYNC_OUT_AUDIO_8: { if (step_counter % 2 == 0) { audio_sync_click = true; } } break; - case SYNC_OUT_AUDIO_4: { if (step_counter % 4 == 0) { audio_sync_click = true; } } break; - case SYNC_OUT_LINK_AUDIO_16: { gate_on(); audio_sync_click = true; } break; - case SYNC_OUT_LINK_AUDIO_8: { if (step_counter % 2 == 0) { gate_on(); audio_sync_click = true; } } break; - case SYNC_OUT_LINK_AUDIO_4: { if (step_counter % 4 == 0) { gate_on(); audio_sync_click = true; } } break; - default: break; - } - // Adjust per-channel panning. switch (settings.sync) { - case SYNC_OUT_LINK_AUDIO_4: - case SYNC_OUT_LINK_AUDIO_8: - case SYNC_OUT_LINK_AUDIO_16: - case SYNC_OUT_AUDIO_4: - case SYNC_OUT_AUDIO_8: - case SYNC_OUT_AUDIO_16: break; + case SYNC_OUT_AUDIO_12BPQ: + case SYNC_OUT_AUDIO_6BPQ: + case SYNC_OUT_AUDIO_4BPQ: + case SYNC_OUT_LINK_AUDIO_12BPQ: + case SYNC_OUT_LINK_AUDIO_6BPQ: + case SYNC_OUT_LINK_AUDIO_4BPQ: break; default: { SOUND_DMG_MASTER = dmg_stereo_vol(3) | channel_vol(SOUND_SQUARE1, pan[0]) @@ -485,6 +472,21 @@ env_start: void sequencer_tick(void) { + switch (settings.sync) { + case SYNC_OUT_LINK_96BPQ: { gate_on(); } break; + case SYNC_OUT_LINK_48BPQ: { if (nseq_ticks % 2 == 0) { gate_on(); } } break; + case SYNC_OUT_LINK_24BPQ: { if (nseq_ticks % 4 == 0) { gate_on(); } } break; + case SYNC_OUT_LINK_12BPQ: { if (nseq_ticks % 8 == 0) { gate_on(); } } break; + case SYNC_OUT_LINK_6BPQ: { if (nseq_ticks % 16 == 0) { gate_on(); } } break; + case SYNC_OUT_LINK_4BPQ: { if (nseq_ticks % 24 == 0) { gate_on(); } } break; + case SYNC_OUT_AUDIO_12BPQ: { if (nseq_ticks % 8 == 0) { audio_sync_click = true; } } break; + case SYNC_OUT_AUDIO_6BPQ: { if (nseq_ticks % 16 == 0) { audio_sync_click = true; } } break; + case SYNC_OUT_AUDIO_4BPQ: { if (nseq_ticks % 24 == 0) { audio_sync_click = true; } } break; + case SYNC_OUT_LINK_AUDIO_12BPQ: { if (nseq_ticks % 8 == 0) { gate_on(); audio_sync_click = true; } } break; + case SYNC_OUT_LINK_AUDIO_6BPQ: { if (nseq_ticks % 16 == 0) { audio_sync_click = true; } } break; + case SYNC_OUT_LINK_AUDIO_4BPQ: { if (nseq_ticks % 24 == 0) { gate_on(); audio_sync_click = true; } } break; + default: break; + } if (nseq_ticks++ == 0) { play_step(); } else if (nseq_ticks == 24) { @@ -499,6 +501,7 @@ set_time(int bpm) { settings.sync == SYNC_IN_LINK_48BPQ || settings.sync == SYNC_IN_LINK_24BPQ || settings.sync == SYNC_IN_LINK_12BPQ || + settings.sync == SYNC_IN_LINK_6BPQ || settings.sync == SYNC_IN_LINK_4BPQ) { return; } @@ -1886,6 +1889,29 @@ sync_in_12(void) { } } +void +sync_in_6(void) { + if (play_status) { + // 6bpq -> 96bpq. + sequencer_tick(); + sequencer_tick(); + sequencer_tick(); + sequencer_tick(); + sequencer_tick(); + sequencer_tick(); + sequencer_tick(); + sequencer_tick(); + sequencer_tick(); + sequencer_tick(); + sequencer_tick(); + sequencer_tick(); + sequencer_tick(); + sequencer_tick(); + sequencer_tick(); + sequencer_tick(); + } +} + void sync_in_4(void) { if (play_status) { -- cgit v1.2.1