diff options
Diffstat (limited to 'src/sequencer.c')
-rw-r--r-- | src/sequencer.c | 34 |
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 | ||
39 | void | 39 | void |
40 | gate_on(void) { | 40 | gate_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 | |||
474 | sequencer_tick(void) { | 477 | sequencer_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 | |||
679 | reset_sequencer(void) { | 686 | reset_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; |