aboutsummaryrefslogtreecommitdiffstats
path: root/src/sequencer.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/sequencer.c')
-rw-r--r--src/sequencer.c34
1 files changed, 21 insertions, 13 deletions
diff --git a/src/sequencer.c b/src/sequencer.c
index a72eced..56146c5 100644
--- a/src/sequencer.c
+++ b/src/sequencer.c
@@ -38,6 +38,7 @@ gate_off(void) {
38 38
39void 39void
40gate_on(void) { 40gate_on(void) {
41 gate_off();
41 SIO_MODE = SIO_MODE_GP 42 SIO_MODE = SIO_MODE_GP
42 | SIO_SC_OUT(1) 43 | SIO_SC_OUT(1)
43 | SIO_SD_OUT(1) 44 | SIO_SD_OUT(1)
@@ -311,9 +312,11 @@ play_step(void) {
311 case SYNC_OUT_AUDIO_12BPQ: 312 case SYNC_OUT_AUDIO_12BPQ:
312 case SYNC_OUT_AUDIO_6BPQ: 313 case SYNC_OUT_AUDIO_6BPQ:
313 case SYNC_OUT_AUDIO_4BPQ: 314 case SYNC_OUT_AUDIO_4BPQ:
315 case SYNC_OUT_AUDIO_2BPQ:
314 case SYNC_OUT_LINK_AUDIO_12BPQ: 316 case SYNC_OUT_LINK_AUDIO_12BPQ:
315 case SYNC_OUT_LINK_AUDIO_6BPQ: 317 case SYNC_OUT_LINK_AUDIO_6BPQ:
316 case SYNC_OUT_LINK_AUDIO_4BPQ: break; 318 case SYNC_OUT_LINK_AUDIO_4BPQ:
319 case SYNC_OUT_LINK_AUDIO_2BPQ: break;
317 default: { 320 default: {
318 SOUND_DMG_MASTER = dmg_stereo_vol(3) 321 SOUND_DMG_MASTER = dmg_stereo_vol(3)
319 | channel_vol(SOUND_SQUARE1, pan[0]) 322 | channel_vol(SOUND_SQUARE1, pan[0])
@@ -474,22 +477,26 @@ void
474sequencer_tick(void) { 477sequencer_tick(void) {
475 switch (settings.sync) { 478 switch (settings.sync) {
476 case SYNC_OUT_LINK_96BPQ: { gate_on(); } break; 479 case SYNC_OUT_LINK_96BPQ: { gate_on(); } break;
477 case SYNC_OUT_LINK_48BPQ: { if (nseq_ticks % 2 == 0) { gate_on(); } } break; 480 case SYNC_OUT_LINK_48BPQ: { if (sync_ticks++ % 2 == 0) { gate_on(); } } break;
478 case SYNC_OUT_LINK_24BPQ: { if (nseq_ticks % 4 == 0) { gate_on(); } } break; 481 case SYNC_OUT_LINK_24BPQ: { if (sync_ticks++ % 4 == 0) { gate_on(); } } break;
479 case SYNC_OUT_LINK_12BPQ: { if (nseq_ticks % 8 == 0) { gate_on(); } } break; 482 case SYNC_OUT_LINK_12BPQ: { if (sync_ticks++ % 8 == 0) { gate_on(); } } break;
480 case SYNC_OUT_LINK_6BPQ: { if (nseq_ticks % 16 == 0) { gate_on(); } } break; 483 case SYNC_OUT_LINK_6BPQ: { if (sync_ticks++ % 16 == 0) { gate_on(); } } break;
481 case SYNC_OUT_LINK_4BPQ: { if (nseq_ticks % 24 == 0) { gate_on(); } } break; 484 case SYNC_OUT_LINK_4BPQ: { if (sync_ticks++ % 24 == 0) { gate_on(); } } break;
482 case SYNC_OUT_AUDIO_12BPQ: { if (nseq_ticks % 8 == 0) { audio_sync_click = true; } } break; 485 case SYNC_OUT_LINK_2BPQ: { if (sync_ticks++ % 48 == 0) { gate_on(); } } break;
483 case SYNC_OUT_AUDIO_6BPQ: { if (nseq_ticks % 16 == 0) { audio_sync_click = true; } } break; 486 case SYNC_OUT_AUDIO_12BPQ: { if (sync_ticks++ % 8 == 0) { audio_sync_click = true; } } break;
484 case SYNC_OUT_AUDIO_4BPQ: { if (nseq_ticks % 24 == 0) { audio_sync_click = true; } } break; 487 case SYNC_OUT_AUDIO_6BPQ: { if (sync_ticks++ % 16 == 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; 488 case SYNC_OUT_AUDIO_4BPQ: { if (sync_ticks++ % 24 == 0) { audio_sync_click = true; } } break;
486 case SYNC_OUT_LINK_AUDIO_6BPQ: { if (nseq_ticks % 16 == 0) { audio_sync_click = true; } } break; 489 case SYNC_OUT_AUDIO_2BPQ: { if (sync_ticks++ % 48 == 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; 490 case SYNC_OUT_LINK_AUDIO_12BPQ: { if (sync_ticks++ % 8 == 0) { gate_on(); audio_sync_click = true; } } break;
491 case SYNC_OUT_LINK_AUDIO_6BPQ: { if (sync_ticks++ % 16 == 0) { gate_on(); audio_sync_click = true; } } break;
492 case SYNC_OUT_LINK_AUDIO_4BPQ: { if (sync_ticks++ % 24 == 0) { gate_on(); audio_sync_click = true; } } break;
493 case SYNC_OUT_LINK_AUDIO_2BPQ: { if (sync_ticks++ % 48 == 0) { gate_on(); audio_sync_click = true; } } break;
488 default: break; 494 default: break;
489 } 495 }
490 if (nseq_ticks++ == 0) { 496 if (nseq_ticks++ == 0) {
491 play_step(); 497 play_step();
492 } else if (nseq_ticks == 24) { 498 }
499 if (nseq_ticks == 24) {
493 nseq_ticks = 0; 500 nseq_ticks = 0;
494 } 501 }
495 wave_ad_tick(); 502 wave_ad_tick();
@@ -679,6 +686,7 @@ void
679reset_sequencer(void) { 686reset_sequencer(void) {
680 step_counter = 0; 687 step_counter = 0;
681 nseq_ticks = 0; 688 nseq_ticks = 0;
689 sync_ticks = 0;
682 chain.current = 15; 690 chain.current = 15;
683 chain.current = find_next_pattern(); 691 chain.current = find_next_pattern();
684 chain.playing = false; 692 chain.playing = false;