aboutsummaryrefslogtreecommitdiffstats
path: root/src/sequencer.c
diff options
context:
space:
mode:
authorBad Diode <bd@badd10de.dev>2024-02-01 16:06:38 +0100
committerBad Diode <bd@badd10de.dev>2024-02-01 16:06:38 +0100
commite475e43918fc200fea3951093223273ee2fb3761 (patch)
tree60f72b186c6e6681f03b1ac115ad1b0e7d8a2852 /src/sequencer.c
parent8b34c630e2389df2b8892c7b3c52b8056ae5f8a1 (diff)
downloadstepper-e475e43918fc200fea3951093223273ee2fb3761.tar.gz
stepper-e475e43918fc200fea3951093223273ee2fb3761.zip
Adjust sync options to new tick sequencer
Diffstat (limited to 'src/sequencer.c')
-rw-r--r--src/sequencer.c64
1 files changed, 45 insertions, 19 deletions
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) {
306 SOUND_NOISE_CTRL = 0; 306 SOUND_NOISE_CTRL = 0;
307 } 307 }
308 308
309 switch (settings.sync) {
310 case SYNC_OUT_LINK_16: { gate_on(); } break;
311 case SYNC_OUT_LINK_8: { if (step_counter % 2 == 0) { gate_on(); } } break;
312 case SYNC_OUT_LINK_4: { if (step_counter % 4 == 0) { gate_on(); } } break;
313 case SYNC_OUT_AUDIO_16: { audio_sync_click = true; } break;
314 case SYNC_OUT_AUDIO_8: { if (step_counter % 2 == 0) { audio_sync_click = true; } } break;
315 case SYNC_OUT_AUDIO_4: { if (step_counter % 4 == 0) { audio_sync_click = true; } } break;
316 case SYNC_OUT_LINK_AUDIO_16: { gate_on(); audio_sync_click = true; } break;
317 case SYNC_OUT_LINK_AUDIO_8: { if (step_counter % 2 == 0) { gate_on(); audio_sync_click = true; } } break;
318 case SYNC_OUT_LINK_AUDIO_4: { if (step_counter % 4 == 0) { gate_on(); audio_sync_click = true; } } break;
319 default: break;
320 }
321
322 // Adjust per-channel panning. 309 // Adjust per-channel panning.
323 switch (settings.sync) { 310 switch (settings.sync) {
324 case SYNC_OUT_LINK_AUDIO_4: 311 case SYNC_OUT_AUDIO_12BPQ:
325 case SYNC_OUT_LINK_AUDIO_8: 312 case SYNC_OUT_AUDIO_6BPQ:
326 case SYNC_OUT_LINK_AUDIO_16: 313 case SYNC_OUT_AUDIO_4BPQ:
327 case SYNC_OUT_AUDIO_4: 314 case SYNC_OUT_LINK_AUDIO_12BPQ:
328 case SYNC_OUT_AUDIO_8: 315 case SYNC_OUT_LINK_AUDIO_6BPQ:
329 case SYNC_OUT_AUDIO_16: break; 316 case SYNC_OUT_LINK_AUDIO_4BPQ: break;
330 default: { 317 default: {
331 SOUND_DMG_MASTER = dmg_stereo_vol(3) 318 SOUND_DMG_MASTER = dmg_stereo_vol(3)
332 | channel_vol(SOUND_SQUARE1, pan[0]) 319 | channel_vol(SOUND_SQUARE1, pan[0])
@@ -485,6 +472,21 @@ env_start:
485 472
486void 473void
487sequencer_tick(void) { 474sequencer_tick(void) {
475 switch (settings.sync) {
476 case SYNC_OUT_LINK_96BPQ: { gate_on(); } break;
477 case SYNC_OUT_LINK_48BPQ: { if (nseq_ticks % 2 == 0) { gate_on(); } } break;
478 case SYNC_OUT_LINK_24BPQ: { if (nseq_ticks % 4 == 0) { gate_on(); } } break;
479 case SYNC_OUT_LINK_12BPQ: { if (nseq_ticks % 8 == 0) { gate_on(); } } break;
480 case SYNC_OUT_LINK_6BPQ: { if (nseq_ticks % 16 == 0) { gate_on(); } } break;
481 case SYNC_OUT_LINK_4BPQ: { if (nseq_ticks % 24 == 0) { gate_on(); } } break;
482 case SYNC_OUT_AUDIO_12BPQ: { if (nseq_ticks % 8 == 0) { audio_sync_click = true; } } break;
483 case SYNC_OUT_AUDIO_6BPQ: { if (nseq_ticks % 16 == 0) { audio_sync_click = true; } } break;
484 case SYNC_OUT_AUDIO_4BPQ: { if (nseq_ticks % 24 == 0) { audio_sync_click = true; } } break;
485 case SYNC_OUT_LINK_AUDIO_12BPQ: { if (nseq_ticks % 8 == 0) { gate_on(); audio_sync_click = true; } } break;
486 case SYNC_OUT_LINK_AUDIO_6BPQ: { if (nseq_ticks % 16 == 0) { audio_sync_click = true; } } break;
487 case SYNC_OUT_LINK_AUDIO_4BPQ: { if (nseq_ticks % 24 == 0) { gate_on(); audio_sync_click = true; } } break;
488 default: break;
489 }
488 if (nseq_ticks++ == 0) { 490 if (nseq_ticks++ == 0) {
489 play_step(); 491 play_step();
490 } else if (nseq_ticks == 24) { 492 } else if (nseq_ticks == 24) {
@@ -499,6 +501,7 @@ set_time(int bpm) {
499 settings.sync == SYNC_IN_LINK_48BPQ || 501 settings.sync == SYNC_IN_LINK_48BPQ ||
500 settings.sync == SYNC_IN_LINK_24BPQ || 502 settings.sync == SYNC_IN_LINK_24BPQ ||
501 settings.sync == SYNC_IN_LINK_12BPQ || 503 settings.sync == SYNC_IN_LINK_12BPQ ||
504 settings.sync == SYNC_IN_LINK_6BPQ ||
502 settings.sync == SYNC_IN_LINK_4BPQ) { 505 settings.sync == SYNC_IN_LINK_4BPQ) {
503 return; 506 return;
504 } 507 }
@@ -1887,6 +1890,29 @@ sync_in_12(void) {
1887} 1890}
1888 1891
1889void 1892void
1893sync_in_6(void) {
1894 if (play_status) {
1895 // 6bpq -> 96bpq.
1896 sequencer_tick();
1897 sequencer_tick();
1898 sequencer_tick();
1899 sequencer_tick();
1900 sequencer_tick();
1901 sequencer_tick();
1902 sequencer_tick();
1903 sequencer_tick();
1904 sequencer_tick();
1905 sequencer_tick();
1906 sequencer_tick();
1907 sequencer_tick();
1908 sequencer_tick();
1909 sequencer_tick();
1910 sequencer_tick();
1911 sequencer_tick();
1912 }
1913}
1914
1915void
1890sync_in_4(void) { 1916sync_in_4(void) {
1891 if (play_status) { 1917 if (play_status) {
1892 // 4bpq -> 96bpq. 1918 // 4bpq -> 96bpq.