diff options
author | Bad Diode <bd@badd10de.dev> | 2023-07-22 10:08:20 +0200 |
---|---|---|
committer | Bad Diode <bd@badd10de.dev> | 2023-07-22 10:08:20 +0200 |
commit | 8236e0a7d4f99d1d354b3c7667327e707f1f2f4c (patch) | |
tree | 25054bba1dcaf0b6817f1410cd8c69afbea92d2c /src/sequencer.c | |
parent | 2c4b3648075cc5faa24b859685426b208ccb3a80 (diff) | |
download | stepper-8236e0a7d4f99d1d354b3c7667327e707f1f2f4c.tar.gz stepper-8236e0a7d4f99d1d354b3c7667327e707f1f2f4c.zip |
Add trig probability
Diffstat (limited to 'src/sequencer.c')
-rw-r--r-- | src/sequencer.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/src/sequencer.c b/src/sequencer.c index 00baebb..e017700 100644 --- a/src/sequencer.c +++ b/src/sequencer.c | |||
@@ -17,6 +17,7 @@ bool redraw_params = true; | |||
17 | bool redraw_bpm = true; | 17 | bool redraw_bpm = true; |
18 | bool redraw_piano_note = true; | 18 | bool redraw_piano_note = true; |
19 | bool update_bpm = false; | 19 | bool update_bpm = false; |
20 | u8 bar_counter = 0; | ||
20 | 21 | ||
21 | void | 22 | void |
22 | gate_off(void) { | 23 | gate_off(void) { |
@@ -73,6 +74,25 @@ find_prev_pattern(void) { | |||
73 | 74 | ||
74 | bool | 75 | bool |
75 | should_play(u8 prob) { | 76 | should_play(u8 prob) { |
77 | switch (prob) { | ||
78 | case PROB_100: { return true; } break; | ||
79 | case PROB_80: { return rng16() < 52427; } break; | ||
80 | case PROB_60: { return rng16() < 39320; } break; | ||
81 | case PROB_40: { return rng16() < 26213; } break; | ||
82 | case PROB_20: { return rng16() < 13106; } break; | ||
83 | case PROB_FIRST: { return bar_counter == 0; } break; | ||
84 | case PROB_NOT_FIRST: { return bar_counter != 0; } break; | ||
85 | case PROB_ONE_TWO: { return bar_counter % 2 == 0; } break; | ||
86 | case PROB_TWO_TWO: { return bar_counter % 2 == 1; } break; | ||
87 | case PROB_ONE_THREE: { return bar_counter % 3 == 0; } break; | ||
88 | case PROB_TWO_THREE: { return bar_counter % 3 == 1; } break; | ||
89 | case PROB_THREE_THREE: { return bar_counter % 3 == 2; } break; | ||
90 | case PROB_ONE_FOUR: { return bar_counter % 4 == 0; } break; | ||
91 | case PROB_TWO_FOUR: { return bar_counter % 4 == 1; } break; | ||
92 | case PROB_THREE_FOUR: { return bar_counter % 4 == 2; } break; | ||
93 | case PROB_FOUR_FOUR: { return bar_counter % 4 == 3; } break; | ||
94 | default: break; | ||
95 | } | ||
76 | return true; | 96 | return true; |
77 | } | 97 | } |
78 | 98 | ||
@@ -246,6 +266,9 @@ play_step(void) { | |||
246 | case SYNC_OUT_LINK_AUDIO_4: { if (step_counter % 4 == 0) { gate_on(); audio_sync_click = true; } } break; | 266 | case SYNC_OUT_LINK_AUDIO_4: { if (step_counter % 4 == 0) { gate_on(); audio_sync_click = true; } } break; |
247 | default: break; | 267 | default: break; |
248 | } | 268 | } |
269 | if (step_counter == 15) { | ||
270 | bar_counter++; | ||
271 | } | ||
249 | step_counter = (step_counter + 1) % 16; | 272 | step_counter = (step_counter + 1) % 16; |
250 | redraw_piano_note = true; | 273 | redraw_piano_note = true; |
251 | } | 274 | } |
@@ -389,6 +412,7 @@ stop_playing(void) { | |||
389 | chain.current = 15; | 412 | chain.current = 15; |
390 | chain.current = find_next_pattern(); | 413 | chain.current = find_next_pattern(); |
391 | chain.playing = false; | 414 | chain.playing = false; |
415 | bar_counter = 0; | ||
392 | stop_sound(); | 416 | stop_sound(); |
393 | } | 417 | } |
394 | 418 | ||
@@ -399,6 +423,7 @@ toggle_playing(void) { | |||
399 | chain.current = 15; | 423 | chain.current = 15; |
400 | chain.current = find_next_pattern(); | 424 | chain.current = find_next_pattern(); |
401 | chain.playing = false; | 425 | chain.playing = false; |
426 | bar_counter = 0; | ||
402 | if (current_pattern == next_pattern && chain.len > 0) { | 427 | if (current_pattern == next_pattern && chain.len > 0) { |
403 | chain.playing = true; | 428 | chain.playing = true; |
404 | next_pattern = chain.chain[chain.current]; | 429 | next_pattern = chain.chain[chain.current]; |