diff options
| author | QMK Bot <hello@qmk.fm> | 2022-02-12 10:29:31 -0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-02-12 18:29:31 +0000 |
| commit | 63646e8906e062d1c1de3925cba70c4e3426a855 (patch) | |
| tree | 4e91648b77b838e1125cf86331d7e84bde6d07a9 /quantum/sequencer | |
| parent | afcdd7079c774dec2aa4b7f2d08adf8b7310919b (diff) | |
Format code according to conventions (#16322)
Diffstat (limited to 'quantum/sequencer')
| -rw-r--r-- | quantum/sequencer/sequencer.c | 62 | ||||
| -rw-r--r-- | quantum/sequencer/sequencer.h | 8 | ||||
| -rw-r--r-- | quantum/sequencer/tests/midi_mock.c | 12 | ||||
| -rw-r--r-- | quantum/sequencer/tests/sequencer_tests.cpp | 4 |
4 files changed, 60 insertions, 26 deletions
diff --git a/quantum/sequencer/sequencer.c b/quantum/sequencer/sequencer.c index 18a83661ec..2e92f7b3eb 100644 --- a/quantum/sequencer/sequencer.c +++ b/quantum/sequencer/sequencer.c | |||
| @@ -25,16 +25,18 @@ | |||
| 25 | #endif | 25 | #endif |
| 26 | 26 | ||
| 27 | sequencer_config_t sequencer_config = { | 27 | sequencer_config_t sequencer_config = { |
| 28 | false, // enabled | 28 | false, // enabled |
| 29 | {false}, // steps | 29 | {false}, // steps |
| 30 | {0}, // track notes | 30 | {0}, // track notes |
| 31 | 60, // tempo | 31 | 60, // tempo |
| 32 | SQ_RES_4, // resolution | 32 | SQ_RES_4, // resolution |
| 33 | }; | 33 | }; |
| 34 | 34 | ||
| 35 | sequencer_state_t sequencer_internal_state = {0, 0, 0, 0, SEQUENCER_PHASE_ATTACK}; | 35 | sequencer_state_t sequencer_internal_state = {0, 0, 0, 0, SEQUENCER_PHASE_ATTACK}; |
| 36 | 36 | ||
| 37 | bool is_sequencer_on(void) { return sequencer_config.enabled; } | 37 | bool is_sequencer_on(void) { |
| 38 | return sequencer_config.enabled; | ||
| 39 | } | ||
| 38 | 40 | ||
| 39 | void sequencer_on(void) { | 41 | void sequencer_on(void) { |
| 40 | dprintln("sequencer on"); | 42 | dprintln("sequencer on"); |
| @@ -65,7 +67,9 @@ void sequencer_set_track_notes(const uint16_t track_notes[SEQUENCER_TRACKS]) { | |||
| 65 | } | 67 | } |
| 66 | } | 68 | } |
| 67 | 69 | ||
| 68 | bool is_sequencer_track_active(uint8_t track) { return (sequencer_internal_state.active_tracks >> track) & true; } | 70 | bool is_sequencer_track_active(uint8_t track) { |
| 71 | return (sequencer_internal_state.active_tracks >> track) & true; | ||
| 72 | } | ||
| 69 | 73 | ||
| 70 | void sequencer_set_track_activation(uint8_t track, bool value) { | 74 | void sequencer_set_track_activation(uint8_t track, bool value) { |
| 71 | if (value) { | 75 | if (value) { |
| @@ -76,7 +80,9 @@ void sequencer_set_track_activation(uint8_t track, bool value) { | |||
| 76 | dprintf("sequencer: track %d is %s\n", track, value ? "active" : "inactive"); | 80 | dprintf("sequencer: track %d is %s\n", track, value ? "active" : "inactive"); |
| 77 | } | 81 | } |
| 78 | 82 | ||
| 79 | void sequencer_toggle_track_activation(uint8_t track) { sequencer_set_track_activation(track, !is_sequencer_track_active(track)); } | 83 | void sequencer_toggle_track_activation(uint8_t track) { |
| 84 | sequencer_set_track_activation(track, !is_sequencer_track_active(track)); | ||
| 85 | } | ||
| 80 | 86 | ||
| 81 | void sequencer_toggle_single_active_track(uint8_t track) { | 87 | void sequencer_toggle_single_active_track(uint8_t track) { |
| 82 | if (is_sequencer_track_active(track)) { | 88 | if (is_sequencer_track_active(track)) { |
| @@ -86,9 +92,13 @@ void sequencer_toggle_single_active_track(uint8_t track) { | |||
| 86 | } | 92 | } |
| 87 | } | 93 | } |
| 88 | 94 | ||
| 89 | bool is_sequencer_step_on(uint8_t step) { return step < SEQUENCER_STEPS && (sequencer_config.steps[step] & sequencer_internal_state.active_tracks) > 0; } | 95 | bool is_sequencer_step_on(uint8_t step) { |
| 96 | return step < SEQUENCER_STEPS && (sequencer_config.steps[step] & sequencer_internal_state.active_tracks) > 0; | ||
| 97 | } | ||
| 90 | 98 | ||
| 91 | bool is_sequencer_step_on_for_track(uint8_t step, uint8_t track) { return step < SEQUENCER_STEPS && (sequencer_config.steps[step] >> track) & true; } | 99 | bool is_sequencer_step_on_for_track(uint8_t step, uint8_t track) { |
| 100 | return step < SEQUENCER_STEPS && (sequencer_config.steps[step] >> track) & true; | ||
| 101 | } | ||
| 92 | 102 | ||
| 93 | void sequencer_set_step(uint8_t step, bool value) { | 103 | void sequencer_set_step(uint8_t step, bool value) { |
| 94 | if (step < SEQUENCER_STEPS) { | 104 | if (step < SEQUENCER_STEPS) { |
| @@ -122,7 +132,9 @@ void sequencer_set_all_steps(bool value) { | |||
| 122 | dprintf("sequencer: all steps are %s\n", value ? "on" : "off"); | 132 | dprintf("sequencer: all steps are %s\n", value ? "on" : "off"); |
| 123 | } | 133 | } |
| 124 | 134 | ||
| 125 | uint8_t sequencer_get_tempo(void) { return sequencer_config.tempo; } | 135 | uint8_t sequencer_get_tempo(void) { |
| 136 | return sequencer_config.tempo; | ||
| 137 | } | ||
| 126 | 138 | ||
| 127 | void sequencer_set_tempo(uint8_t tempo) { | 139 | void sequencer_set_tempo(uint8_t tempo) { |
| 128 | if (tempo > 0) { | 140 | if (tempo > 0) { |
| @@ -142,9 +154,13 @@ void sequencer_increase_tempo(void) { | |||
| 142 | } | 154 | } |
| 143 | } | 155 | } |
| 144 | 156 | ||
| 145 | void sequencer_decrease_tempo(void) { sequencer_set_tempo(sequencer_config.tempo - 1); } | 157 | void sequencer_decrease_tempo(void) { |
| 158 | sequencer_set_tempo(sequencer_config.tempo - 1); | ||
| 159 | } | ||
| 146 | 160 | ||
| 147 | sequencer_resolution_t sequencer_get_resolution(void) { return sequencer_config.resolution; } | 161 | sequencer_resolution_t sequencer_get_resolution(void) { |
| 162 | return sequencer_config.resolution; | ||
| 163 | } | ||
| 148 | 164 | ||
| 149 | void sequencer_set_resolution(sequencer_resolution_t resolution) { | 165 | void sequencer_set_resolution(sequencer_resolution_t resolution) { |
| 150 | if (resolution >= 0 && resolution < SEQUENCER_RESOLUTIONS) { | 166 | if (resolution >= 0 && resolution < SEQUENCER_RESOLUTIONS) { |
| @@ -155,11 +171,17 @@ void sequencer_set_resolution(sequencer_resolution_t resolution) { | |||
| 155 | } | 171 | } |
| 156 | } | 172 | } |
| 157 | 173 | ||
| 158 | void sequencer_increase_resolution(void) { sequencer_set_resolution(sequencer_config.resolution + 1); } | 174 | void sequencer_increase_resolution(void) { |
| 175 | sequencer_set_resolution(sequencer_config.resolution + 1); | ||
| 176 | } | ||
| 159 | 177 | ||
| 160 | void sequencer_decrease_resolution(void) { sequencer_set_resolution(sequencer_config.resolution - 1); } | 178 | void sequencer_decrease_resolution(void) { |
| 179 | sequencer_set_resolution(sequencer_config.resolution - 1); | ||
| 180 | } | ||
| 161 | 181 | ||
| 162 | uint8_t sequencer_get_current_step(void) { return sequencer_internal_state.current_step; } | 182 | uint8_t sequencer_get_current_step(void) { |
| 183 | return sequencer_internal_state.current_step; | ||
| 184 | } | ||
| 163 | 185 | ||
| 164 | void sequencer_phase_attack(void) { | 186 | void sequencer_phase_attack(void) { |
| 165 | dprintf("sequencer: step %d\n", sequencer_internal_state.current_step); | 187 | dprintf("sequencer: step %d\n", sequencer_internal_state.current_step); |
| @@ -229,9 +251,13 @@ void sequencer_task(void) { | |||
| 229 | } | 251 | } |
| 230 | } | 252 | } |
| 231 | 253 | ||
| 232 | uint16_t sequencer_get_beat_duration(void) { return get_beat_duration(sequencer_config.tempo); } | 254 | uint16_t sequencer_get_beat_duration(void) { |
| 255 | return get_beat_duration(sequencer_config.tempo); | ||
| 256 | } | ||
| 233 | 257 | ||
| 234 | uint16_t sequencer_get_step_duration(void) { return get_step_duration(sequencer_config.tempo, sequencer_config.resolution); } | 258 | uint16_t sequencer_get_step_duration(void) { |
| 259 | return get_step_duration(sequencer_config.tempo, sequencer_config.resolution); | ||
| 260 | } | ||
| 235 | 261 | ||
| 236 | uint16_t get_beat_duration(uint8_t tempo) { | 262 | uint16_t get_beat_duration(uint8_t tempo) { |
| 237 | // Don’t crash in the unlikely case where the given tempo is 0 | 263 | // Don’t crash in the unlikely case where the given tempo is 0 |
diff --git a/quantum/sequencer/sequencer.h b/quantum/sequencer/sequencer.h index 4017ae764e..a8ea16eece 100644 --- a/quantum/sequencer/sequencer.h +++ b/quantum/sequencer/sequencer.h | |||
| @@ -48,7 +48,7 @@ typedef struct { | |||
| 48 | bool enabled; | 48 | bool enabled; |
| 49 | uint8_t steps[SEQUENCER_STEPS]; | 49 | uint8_t steps[SEQUENCER_STEPS]; |
| 50 | uint16_t track_notes[SEQUENCER_TRACKS]; | 50 | uint16_t track_notes[SEQUENCER_TRACKS]; |
| 51 | uint8_t tempo; // Is a maximum tempo of 255 reasonable? | 51 | uint8_t tempo; // Is a maximum tempo of 255 reasonable? |
| 52 | sequencer_resolution_t resolution; | 52 | sequencer_resolution_t resolution; |
| 53 | } sequencer_config_t; | 53 | } sequencer_config_t; |
| 54 | 54 | ||
| @@ -57,9 +57,9 @@ typedef struct { | |||
| 57 | * We use a "phase" state machine to delay some of the events. | 57 | * We use a "phase" state machine to delay some of the events. |
| 58 | */ | 58 | */ |
| 59 | typedef enum sequencer_phase_t { | 59 | typedef enum sequencer_phase_t { |
| 60 | SEQUENCER_PHASE_ATTACK, // t=0ms, send the MIDI note on signal | 60 | SEQUENCER_PHASE_ATTACK, // t=0ms, send the MIDI note on signal |
| 61 | SEQUENCER_PHASE_RELEASE, // t=SEQUENCER_PHASE_RELEASE_TIMEOUT ms, send the MIDI note off signal | 61 | SEQUENCER_PHASE_RELEASE, // t=SEQUENCER_PHASE_RELEASE_TIMEOUT ms, send the MIDI note off signal |
| 62 | SEQUENCER_PHASE_PAUSE // t=step duration ms, loop | 62 | SEQUENCER_PHASE_PAUSE // t=step duration ms, loop |
| 63 | } sequencer_phase_t; | 63 | } sequencer_phase_t; |
| 64 | 64 | ||
| 65 | typedef struct { | 65 | typedef struct { |
diff --git a/quantum/sequencer/tests/midi_mock.c b/quantum/sequencer/tests/midi_mock.c index 236e16f9d7..5bd945d615 100644 --- a/quantum/sequencer/tests/midi_mock.c +++ b/quantum/sequencer/tests/midi_mock.c | |||
| @@ -19,8 +19,14 @@ | |||
| 19 | uint16_t last_noteon = 0; | 19 | uint16_t last_noteon = 0; |
| 20 | uint16_t last_noteoff = 0; | 20 | uint16_t last_noteoff = 0; |
| 21 | 21 | ||
| 22 | uint16_t midi_compute_note(uint16_t keycode) { return keycode; } | 22 | uint16_t midi_compute_note(uint16_t keycode) { |
| 23 | return keycode; | ||
| 24 | } | ||
| 23 | 25 | ||
| 24 | void process_midi_basic_noteon(uint16_t note) { last_noteon = note; } | 26 | void process_midi_basic_noteon(uint16_t note) { |
| 27 | last_noteon = note; | ||
| 28 | } | ||
| 25 | 29 | ||
| 26 | void process_midi_basic_noteoff(uint16_t note) { last_noteoff = note; } | 30 | void process_midi_basic_noteoff(uint16_t note) { |
| 31 | last_noteoff = note; | ||
| 32 | } | ||
diff --git a/quantum/sequencer/tests/sequencer_tests.cpp b/quantum/sequencer/tests/sequencer_tests.cpp index 290605a52a..05e58e4111 100644 --- a/quantum/sequencer/tests/sequencer_tests.cpp +++ b/quantum/sequencer/tests/sequencer_tests.cpp | |||
| @@ -78,7 +78,9 @@ class SequencerTest : public ::testing::Test { | |||
| 78 | sequencer_state_t state_copy; | 78 | sequencer_state_t state_copy; |
| 79 | }; | 79 | }; |
| 80 | 80 | ||
| 81 | TEST_F(SequencerTest, TestOffByDefault) { EXPECT_EQ(is_sequencer_on(), false); } | 81 | TEST_F(SequencerTest, TestOffByDefault) { |
| 82 | EXPECT_EQ(is_sequencer_on(), false); | ||
| 83 | } | ||
| 82 | 84 | ||
| 83 | TEST_F(SequencerTest, TestOn) { | 85 | TEST_F(SequencerTest, TestOn) { |
| 84 | sequencer_config.enabled = false; | 86 | sequencer_config.enabled = false; |
