diff options
author | Bad Diode <bd@badd10de.dev> | 2024-02-01 19:09:51 +0100 |
---|---|---|
committer | Bad Diode <bd@badd10de.dev> | 2024-02-01 19:09:51 +0100 |
commit | 8cc0da2ca7ba0cb3e44deea8eb031a36d96f7c72 (patch) | |
tree | 5ab6a644ee8654d5ea9a1c4139c9c613e921b061 | |
parent | e475e43918fc200fea3951093223273ee2fb3761 (diff) | |
download | stepper-8cc0da2ca7ba0cb3e44deea8eb031a36d96f7c72.tar.gz stepper-8cc0da2ca7ba0cb3e44deea8eb031a36d96f7c72.zip |
Fix some issues with sync and added more modes
-rw-r--r-- | src/drawing.c | 4 | ||||
-rw-r--r-- | src/profiling.c | 4 | ||||
-rw-r--r-- | src/sequencer.c | 34 | ||||
-rw-r--r-- | src/settings.c | 8 | ||||
-rw-r--r-- | src/settings.h | 6 |
5 files changed, 38 insertions, 18 deletions
diff --git a/src/drawing.c b/src/drawing.c index 3f646a6..18ee3b9 100644 --- a/src/drawing.c +++ b/src/drawing.c | |||
@@ -908,9 +908,11 @@ draw_panning(s8 pan, u8 clr) { | |||
908 | case SYNC_OUT_AUDIO_12BPQ: | 908 | case SYNC_OUT_AUDIO_12BPQ: |
909 | case SYNC_OUT_AUDIO_6BPQ: | 909 | case SYNC_OUT_AUDIO_6BPQ: |
910 | case SYNC_OUT_AUDIO_4BPQ: | 910 | case SYNC_OUT_AUDIO_4BPQ: |
911 | case SYNC_OUT_AUDIO_2BPQ: | ||
911 | case SYNC_OUT_LINK_AUDIO_12BPQ: | 912 | case SYNC_OUT_LINK_AUDIO_12BPQ: |
912 | case SYNC_OUT_LINK_AUDIO_6BPQ: | 913 | case SYNC_OUT_LINK_AUDIO_6BPQ: |
913 | case SYNC_OUT_LINK_AUDIO_4BPQ: { clr = COL_OFF; } break; | 914 | case SYNC_OUT_LINK_AUDIO_4BPQ: |
915 | case SYNC_OUT_LINK_AUDIO_2BPQ: { clr = COL_OFF; } break; | ||
914 | default: break; | 916 | default: break; |
915 | } | 917 | } |
916 | size_t x = PARAMS_START_X + PARAMS_BOX_OFFSET_X * 4 + 3; | 918 | size_t x = PARAMS_START_X + PARAMS_BOX_OFFSET_X * 4 + 3; |
diff --git a/src/profiling.c b/src/profiling.c index 713e2b3..cc58694 100644 --- a/src/profiling.c +++ b/src/profiling.c | |||
@@ -139,9 +139,7 @@ u8 prof_detail_level = 2; | |||
139 | // No profiling. | 139 | // No profiling. |
140 | #define PROF_INIT() | 140 | #define PROF_INIT() |
141 | #define PROF(F,VAR) do {F;} while(0) | 141 | #define PROF(F,VAR) do {F;} while(0) |
142 | #define FRAME_START() do { \ | 142 | #define FRAME_START() |
143 | profile_start();\ | ||
144 | } while(0) | ||
145 | #define FRAME_END() | 143 | #define FRAME_END() |
146 | #define PROF_SHOW() | 144 | #define PROF_SHOW() |
147 | #define PROF_DETAIL(N) | 145 | #define PROF_DETAIL(N) |
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; |
diff --git a/src/settings.c b/src/settings.c index 48cc3e7..8b4c3b1 100644 --- a/src/settings.c +++ b/src/settings.c | |||
@@ -14,9 +14,12 @@ void sync_in_24(void); | |||
14 | void sync_in_12(void); | 14 | void sync_in_12(void); |
15 | void sync_in_6(void); | 15 | void sync_in_6(void); |
16 | void sync_in_4(void); | 16 | void sync_in_4(void); |
17 | void reset_sequencer(void); | ||
17 | void toggle_playing(void); | 18 | void toggle_playing(void); |
18 | void stop_playing(void); | 19 | void stop_playing(void); |
19 | 20 | ||
21 | static int sync_ticks = 0; | ||
22 | |||
20 | void | 23 | void |
21 | set_audio_settings(void) { | 24 | set_audio_settings(void) { |
22 | if (settings.sync == SYNC_IN_LINK_96BPQ || | 25 | if (settings.sync == SYNC_IN_LINK_96BPQ || |
@@ -48,9 +51,11 @@ set_audio_settings(void) { | |||
48 | case SYNC_OUT_AUDIO_12BPQ: | 51 | case SYNC_OUT_AUDIO_12BPQ: |
49 | case SYNC_OUT_AUDIO_6BPQ: | 52 | case SYNC_OUT_AUDIO_6BPQ: |
50 | case SYNC_OUT_AUDIO_4BPQ: | 53 | case SYNC_OUT_AUDIO_4BPQ: |
54 | case SYNC_OUT_AUDIO_2BPQ: | ||
51 | case SYNC_OUT_LINK_AUDIO_12BPQ: | 55 | case SYNC_OUT_LINK_AUDIO_12BPQ: |
52 | case SYNC_OUT_LINK_AUDIO_6BPQ: | 56 | case SYNC_OUT_LINK_AUDIO_6BPQ: |
53 | case SYNC_OUT_LINK_AUDIO_4BPQ: { | 57 | case SYNC_OUT_LINK_AUDIO_4BPQ: |
58 | case SYNC_OUT_LINK_AUDIO_2BPQ: { | ||
54 | SOUND_DMG_MASTER = sound_volume(SOUND_SQUARE1 | 59 | SOUND_DMG_MASTER = sound_volume(SOUND_SQUARE1 |
55 | | SOUND_SQUARE2 | 60 | | SOUND_SQUARE2 |
56 | | SOUND_WAVE | 61 | | SOUND_WAVE |
@@ -205,6 +210,7 @@ handle_settings_input(void) { | |||
205 | next_scene = SCENE_SEQUENCER; | 210 | next_scene = SCENE_SEQUENCER; |
206 | } | 211 | } |
207 | if (key_tap(KEY_START)) { | 212 | if (key_tap(KEY_START)) { |
213 | reset_sequencer(); | ||
208 | toggle_playing(); | 214 | toggle_playing(); |
209 | } | 215 | } |
210 | } | 216 | } |
diff --git a/src/settings.h b/src/settings.h index 916f1be..bbfdfd2 100644 --- a/src/settings.h +++ b/src/settings.h | |||
@@ -19,12 +19,15 @@ typedef enum SyncSetting { | |||
19 | SYNC_OUT_LINK_12BPQ, | 19 | SYNC_OUT_LINK_12BPQ, |
20 | SYNC_OUT_LINK_6BPQ, | 20 | SYNC_OUT_LINK_6BPQ, |
21 | SYNC_OUT_LINK_4BPQ, | 21 | SYNC_OUT_LINK_4BPQ, |
22 | SYNC_OUT_LINK_2BPQ, | ||
22 | SYNC_OUT_AUDIO_12BPQ, | 23 | SYNC_OUT_AUDIO_12BPQ, |
23 | SYNC_OUT_AUDIO_6BPQ, | 24 | SYNC_OUT_AUDIO_6BPQ, |
24 | SYNC_OUT_AUDIO_4BPQ, | 25 | SYNC_OUT_AUDIO_4BPQ, |
26 | SYNC_OUT_AUDIO_2BPQ, | ||
25 | SYNC_OUT_LINK_AUDIO_12BPQ, | 27 | SYNC_OUT_LINK_AUDIO_12BPQ, |
26 | SYNC_OUT_LINK_AUDIO_6BPQ, | 28 | SYNC_OUT_LINK_AUDIO_6BPQ, |
27 | SYNC_OUT_LINK_AUDIO_4BPQ, | 29 | SYNC_OUT_LINK_AUDIO_4BPQ, |
30 | SYNC_OUT_LINK_AUDIO_2BPQ, | ||
28 | SYNC_IN_LINK_96BPQ, | 31 | SYNC_IN_LINK_96BPQ, |
29 | SYNC_IN_LINK_48BPQ, | 32 | SYNC_IN_LINK_48BPQ, |
30 | SYNC_IN_LINK_24BPQ, | 33 | SYNC_IN_LINK_24BPQ, |
@@ -42,12 +45,15 @@ char * sync_setting_str[] = { | |||
42 | "LINK OUT (12BPQ)", | 45 | "LINK OUT (12BPQ)", |
43 | "LINK OUT (6BPQ)", | 46 | "LINK OUT (6BPQ)", |
44 | "LINK OUT (4BPQ)", | 47 | "LINK OUT (4BPQ)", |
48 | "LINK OUT (2BPQ)", | ||
45 | "AUDIO OUT (12BPQ)", | 49 | "AUDIO OUT (12BPQ)", |
46 | "AUDIO OUT (6BPQ)", | 50 | "AUDIO OUT (6BPQ)", |
47 | "AUDIO OUT (4BPQ)", | 51 | "AUDIO OUT (4BPQ)", |
52 | "AUDIO OUT (2BPQ)", | ||
48 | "LINK+AUDIO OUT (12BPQ)", | 53 | "LINK+AUDIO OUT (12BPQ)", |
49 | "LINK+AUDIO OUT (6BPQ)", | 54 | "LINK+AUDIO OUT (6BPQ)", |
50 | "LINK+AUDIO OUT (4BPQ)", | 55 | "LINK+AUDIO OUT (4BPQ)", |
56 | "LINK+AUDIO OUT (2BPQ)", | ||
51 | "LINK IN (96BPQ)", | 57 | "LINK IN (96BPQ)", |
52 | "LINK IN (48BPQ)", | 58 | "LINK IN (48BPQ)", |
53 | "LINK IN (24BPQ)", | 59 | "LINK IN (24BPQ)", |