diff options
| author | Jack Humbert <jack.humb@gmail.com> | 2018-07-16 11:48:31 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2018-07-16 11:48:31 -0400 |
| commit | ade22f8e2c272044ea2f80ff6fe5ca9576858939 (patch) | |
| tree | 03c0131fa5982afc10a60e1fdd38a60be750291b /quantum/audio | |
| parent | 96cb9f4661faa80e795b1e6731b7a8e8a50bd0cb (diff) | |
| download | qmk_firmware-ade22f8e2c272044ea2f80ff6fe5ca9576858939.tar.gz qmk_firmware-ade22f8e2c272044ea2f80ff6fe5ca9576858939.zip | |
Adds support for Planck Rev 6 (#2666)
* initial files for rev 6 with encoder
* music map init, dip scan added
* adds ws2812 driver for arm
* flesh out dip and encoder support
* adds default encoder res
* adds default encoder res
* start muse implementation
* muse working with encoder as control
* flip direction
* try mouse wheel again
* dont break other revs
* dont break other revs
* conditional autio
* pwm ws driver (not working)
* update build includes for chibios
* update ws2812 driver/config
* last commit for glasser code
* working example
* remove rgb for now
* finish up rev6
* working encoder keycodes
* add warnings to planck keymaps about the LAYOUT
Diffstat (limited to 'quantum/audio')
| -rw-r--r-- | quantum/audio/audio_arm.c | 148 | ||||
| -rw-r--r-- | quantum/audio/muse.c | 111 | ||||
| -rw-r--r-- | quantum/audio/muse.h | 9 |
3 files changed, 241 insertions, 27 deletions
diff --git a/quantum/audio/audio_arm.c b/quantum/audio/audio_arm.c index 247dc337d..d38184f32 100644 --- a/quantum/audio/audio_arm.c +++ b/quantum/audio/audio_arm.c | |||
| @@ -79,7 +79,7 @@ float startup_song[][2] = STARTUP_SONG; | |||
| 79 | 79 | ||
| 80 | static void gpt_cb8(GPTDriver *gptp); | 80 | static void gpt_cb8(GPTDriver *gptp); |
| 81 | 81 | ||
| 82 | #define DAC_BUFFER_SIZE 360 | 82 | #define DAC_BUFFER_SIZE 720 |
| 83 | 83 | ||
| 84 | #define START_CHANNEL_1() gptStart(&GPTD6, &gpt6cfg1); \ | 84 | #define START_CHANNEL_1() gptStart(&GPTD6, &gpt6cfg1); \ |
| 85 | gptStartContinuous(&GPTD6, 2U) | 85 | gptStartContinuous(&GPTD6, 2U) |
| @@ -167,6 +167,39 @@ GPTConfig gpt8cfg1 = { | |||
| 167 | // 1622, 1657, 1692, 1727, 1763, 1798, 1834, 1869, 1905, 1940, 1976, 2012 | 167 | // 1622, 1657, 1692, 1727, 1763, 1798, 1834, 1869, 1905, 1940, 1976, 2012 |
| 168 | // }; | 168 | // }; |
| 169 | 169 | ||
| 170 | // static const dacsample_t dac_buffer_2[DAC_BUFFER_SIZE] = { | ||
| 171 | // 12, 8, 5, 3, 2, 1, 0, 1, 2, 3, 5, 8, | ||
| 172 | // 12, 16, 20, 26, 32, 38, 45, 53, 61, 70, 80, 90, | ||
| 173 | // 101, 112, 124, 136, 150, 163, 177, 192, 208, 224, 240, 257, | ||
| 174 | // 275, 293, 312, 331, 350, 371, 391, 413, 434, 457, 479, 503, | ||
| 175 | // 526, 550, 575, 600, 626, 651, 678, 705, 732, 759, 787, 816, | ||
| 176 | // 844, 873, 903, 933, 963, 993, 1024, 1055, 1086, 1118, 1150, 1182, | ||
| 177 | // 1215, 1248, 1281, 1314, 1347, 1381, 1415, 1449, 1483, 1518, 1552, 1587, | ||
| 178 | // 1622, 1657, 1692, 1727, 1763, 1798, 1834, 1869, 1905, 1940, 1976, 2012, | ||
| 179 | // 2047, 2082, 2118, 2154, 2189, 2225, 2260, 2296, 2331, 2367, 2402, 2437, | ||
| 180 | // 2472, 2507, 2542, 2576, 2611, 2645, 2679, 2713, 2747, 2780, 2813, 2846, | ||
| 181 | // 2879, 2912, 2944, 2976, 3008, 3039, 3070, 3101, 3131, 3161, 3191, 3221, | ||
| 182 | // 3250, 3278, 3307, 3335, 3362, 3389, 3416, 3443, 3468, 3494, 3519, 3544, | ||
| 183 | // 3568, 3591, 3615, 3637, 3660, 3681, 3703, 3723, 3744, 3763, 3782, 3801, | ||
| 184 | // 3819, 3837, 3854, 3870, 3886, 3902, 3917, 3931, 3944, 3958, 3970, 3982, | ||
| 185 | // 3993, 4004, 4014, 4024, 4033, 4041, 4049, 4056, 4062, 4068, 4074, 4078, | ||
| 186 | // 4082, 4086, 4089, 4091, 4092, 4093, 4094, 4093, 4092, 4091, 4089, 4086, | ||
| 187 | // 4082, 4078, 4074, 4068, 4062, 4056, 4049, 4041, 4033, 4024, 4014, 4004, | ||
| 188 | // 3993, 3982, 3970, 3958, 3944, 3931, 3917, 3902, 3886, 3870, 3854, 3837, | ||
| 189 | // 3819, 3801, 3782, 3763, 3744, 3723, 3703, 3681, 3660, 3637, 3615, 3591, | ||
| 190 | // 3568, 3544, 3519, 3494, 3468, 3443, 3416, 3389, 3362, 3335, 3307, 3278, | ||
| 191 | // 3250, 3221, 3191, 3161, 3131, 3101, 3070, 3039, 3008, 2976, 2944, 2912, | ||
| 192 | // 2879, 2846, 2813, 2780, 2747, 2713, 2679, 2645, 2611, 2576, 2542, 2507, | ||
| 193 | // 2472, 2437, 2402, 2367, 2331, 2296, 2260, 2225, 2189, 2154, 2118, 2082, | ||
| 194 | // 2047, 2012, 1976, 1940, 1905, 1869, 1834, 1798, 1763, 1727, 1692, 1657, | ||
| 195 | // 1622, 1587, 1552, 1518, 1483, 1449, 1415, 1381, 1347, 1314, 1281, 1248, | ||
| 196 | // 1215, 1182, 1150, 1118, 1086, 1055, 1024, 993, 963, 933, 903, 873, | ||
| 197 | // 844, 816, 787, 759, 732, 705, 678, 651, 626, 600, 575, 550, | ||
| 198 | // 526, 503, 479, 457, 434, 413, 391, 371, 350, 331, 312, 293, | ||
| 199 | // 275, 257, 240, 224, 208, 192, 177, 163, 150, 136, 124, 112, | ||
| 200 | // 101, 90, 80, 70, 61, 53, 45, 38, 32, 26, 20, 16 | ||
| 201 | // }; | ||
| 202 | |||
| 170 | // squarewave | 203 | // squarewave |
| 171 | static const dacsample_t dac_buffer[DAC_BUFFER_SIZE] = { | 204 | static const dacsample_t dac_buffer[DAC_BUFFER_SIZE] = { |
| 172 | 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, | 205 | 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, |
| @@ -184,6 +217,21 @@ static const dacsample_t dac_buffer[DAC_BUFFER_SIZE] = { | |||
| 184 | 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, | 217 | 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, |
| 185 | 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, | 218 | 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, |
| 186 | 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, | 219 | 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, |
| 220 | 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, | ||
| 221 | 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, | ||
| 222 | 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, | ||
| 223 | 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, | ||
| 224 | 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, | ||
| 225 | 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, | ||
| 226 | 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, | ||
| 227 | 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, | ||
| 228 | 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, | ||
| 229 | 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, | ||
| 230 | 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, | ||
| 231 | 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, | ||
| 232 | 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, | ||
| 233 | 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, | ||
| 234 | 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, | ||
| 187 | 235 | ||
| 188 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | 236 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, |
| 189 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | 237 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, |
| @@ -199,26 +247,26 @@ static const dacsample_t dac_buffer[DAC_BUFFER_SIZE] = { | |||
| 199 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | 247 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, |
| 200 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | 248 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, |
| 201 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | 249 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, |
| 250 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | ||
| 251 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | ||
| 252 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | ||
| 253 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | ||
| 254 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | ||
| 255 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | ||
| 256 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | ||
| 257 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | ||
| 258 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | ||
| 259 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | ||
| 260 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | ||
| 261 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | ||
| 262 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | ||
| 263 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | ||
| 264 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | ||
| 202 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 | 265 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 |
| 203 | }; | 266 | }; |
| 204 | 267 | ||
| 205 | // squarewave | 268 | // squarewave |
| 206 | static const dacsample_t dac_buffer_2[DAC_BUFFER_SIZE] = { | 269 | static const dacsample_t dac_buffer_2[DAC_BUFFER_SIZE] = { |
| 207 | 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, | ||
| 208 | 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, | ||
| 209 | 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, | ||
| 210 | 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, | ||
| 211 | 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, | ||
| 212 | 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, | ||
| 213 | 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, | ||
| 214 | 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, | ||
| 215 | 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, | ||
| 216 | 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, | ||
| 217 | 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, | ||
| 218 | 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, | ||
| 219 | 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, | ||
| 220 | 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, | ||
| 221 | 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, | ||
| 222 | 270 | ||
| 223 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | 271 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, |
| 224 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | 272 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, |
| @@ -234,7 +282,52 @@ static const dacsample_t dac_buffer_2[DAC_BUFFER_SIZE] = { | |||
| 234 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | 282 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, |
| 235 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | 283 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, |
| 236 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | 284 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, |
| 237 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 | 285 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, |
| 286 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | ||
| 287 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | ||
| 288 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | ||
| 289 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | ||
| 290 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | ||
| 291 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | ||
| 292 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | ||
| 293 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | ||
| 294 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | ||
| 295 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | ||
| 296 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | ||
| 297 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | ||
| 298 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | ||
| 299 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | ||
| 300 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | ||
| 301 | 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, | ||
| 302 | 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, | ||
| 303 | 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, | ||
| 304 | 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, | ||
| 305 | 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, | ||
| 306 | 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, | ||
| 307 | 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, | ||
| 308 | 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, | ||
| 309 | 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, | ||
| 310 | 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, | ||
| 311 | 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, | ||
| 312 | 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, | ||
| 313 | 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, | ||
| 314 | 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, | ||
| 315 | 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, | ||
| 316 | 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, | ||
| 317 | 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, | ||
| 318 | 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, | ||
| 319 | 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, | ||
| 320 | 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, | ||
| 321 | 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, | ||
| 322 | 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, | ||
| 323 | 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, | ||
| 324 | 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, | ||
| 325 | 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, | ||
| 326 | 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, | ||
| 327 | 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, | ||
| 328 | 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, | ||
| 329 | 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, | ||
| 330 | 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047 | ||
| 238 | }; | 331 | }; |
| 239 | 332 | ||
| 240 | /* | 333 | /* |
| @@ -317,7 +410,7 @@ void audio_init() | |||
| 317 | dacStart(&DACD2, &dac1cfg2); | 410 | dacStart(&DACD2, &dac1cfg2); |
| 318 | 411 | ||
| 319 | /* | 412 | /* |
| 320 | * Starting GPT6 driver, it is used for triggering the DAC. | 413 | * Starting GPT6/7 driver, it is used for triggering the DAC. |
| 321 | */ | 414 | */ |
| 322 | START_CHANNEL_1(); | 415 | START_CHANNEL_1(); |
| 323 | START_CHANNEL_2(); | 416 | START_CHANNEL_2(); |
| @@ -325,12 +418,8 @@ void audio_init() | |||
| 325 | /* | 418 | /* |
| 326 | * Starting a continuous conversion. | 419 | * Starting a continuous conversion. |
| 327 | */ | 420 | */ |
| 328 | dacStartConversion(&DACD1, &dacgrpcfg1, | 421 | dacStartConversion(&DACD1, &dacgrpcfg1, (dacsample_t *)dac_buffer, DAC_BUFFER_SIZE); |
| 329 | (dacsample_t *)dac_buffer, DAC_BUFFER_SIZE); | 422 | dacStartConversion(&DACD2, &dacgrpcfg2, (dacsample_t *)dac_buffer_2, DAC_BUFFER_SIZE); |
| 330 | dacStartConversion(&DACD2, &dacgrpcfg2, | ||
| 331 | (dacsample_t *)dac_buffer_2, DAC_BUFFER_SIZE); | ||
| 332 | // gptStartContinuous(&GPTD6, 2U); | ||
| 333 | |||
| 334 | 423 | ||
| 335 | audio_initialized = true; | 424 | audio_initialized = true; |
| 336 | 425 | ||
| @@ -469,6 +558,8 @@ static void gpt_cb8(GPTDriver *gptp) { | |||
| 469 | 558 | ||
| 470 | if (GET_CHANNEL_2_FREQ != (uint16_t)freq_alt) { | 559 | if (GET_CHANNEL_2_FREQ != (uint16_t)freq_alt) { |
| 471 | UPDATE_CHANNEL_2_FREQ(freq_alt); | 560 | UPDATE_CHANNEL_2_FREQ(freq_alt); |
| 561 | } else { | ||
| 562 | RESTART_CHANNEL_2(); | ||
| 472 | } | 563 | } |
| 473 | //note_timbre; | 564 | //note_timbre; |
| 474 | } | 565 | } |
| @@ -528,6 +619,8 @@ static void gpt_cb8(GPTDriver *gptp) { | |||
| 528 | 619 | ||
| 529 | if (GET_CHANNEL_1_FREQ != (uint16_t)freq) { | 620 | if (GET_CHANNEL_1_FREQ != (uint16_t)freq) { |
| 530 | UPDATE_CHANNEL_1_FREQ(freq); | 621 | UPDATE_CHANNEL_1_FREQ(freq); |
| 622 | } else { | ||
| 623 | RESTART_CHANNEL_1(); | ||
| 531 | } | 624 | } |
| 532 | //note_timbre; | 625 | //note_timbre; |
| 533 | } | 626 | } |
| @@ -565,11 +658,11 @@ static void gpt_cb8(GPTDriver *gptp) { | |||
| 565 | bool end_of_note = false; | 658 | bool end_of_note = false; |
| 566 | if (GET_CHANNEL_1_FREQ > 0) { | 659 | if (GET_CHANNEL_1_FREQ > 0) { |
| 567 | if (!note_resting) | 660 | if (!note_resting) |
| 568 | end_of_note = (note_position >= (note_length*16 - 1)); | 661 | end_of_note = (note_position >= (note_length*8 - 1)); |
| 569 | else | 662 | else |
| 570 | end_of_note = (note_position >= (note_length*16)); | 663 | end_of_note = (note_position >= (note_length*8)); |
| 571 | } else { | 664 | } else { |
| 572 | end_of_note = (note_position >= (note_length*16)); | 665 | end_of_note = (note_position >= (note_length*8)); |
| 573 | } | 666 | } |
| 574 | 667 | ||
| 575 | if (end_of_note) { | 668 | if (end_of_note) { |
| @@ -622,6 +715,7 @@ void play_note(float freq, int vol) { | |||
| 622 | 715 | ||
| 623 | if (audio_config.enable && voices < 8) { | 716 | if (audio_config.enable && voices < 8) { |
| 624 | 717 | ||
| 718 | |||
| 625 | // Cancel notes if notes are playing | 719 | // Cancel notes if notes are playing |
| 626 | if (playing_notes) | 720 | if (playing_notes) |
| 627 | stop_all_notes(); | 721 | stop_all_notes(); |
diff --git a/quantum/audio/muse.c b/quantum/audio/muse.c new file mode 100644 index 000000000..f3cb592d8 --- /dev/null +++ b/quantum/audio/muse.c | |||
| @@ -0,0 +1,111 @@ | |||
| 1 | #include "muse.h" | ||
| 2 | |||
| 3 | enum { | ||
| 4 | MUSE_OFF, | ||
| 5 | MUSE_ON, | ||
| 6 | MUSE_C_1_2, | ||
| 7 | MUSE_C1, | ||
| 8 | MUSE_C2, | ||
| 9 | MUSE_C4, | ||
| 10 | MUSE_C8, | ||
| 11 | MUSE_C3, | ||
| 12 | MUSE_C6, | ||
| 13 | MUSE_B1, | ||
| 14 | MUSE_B2, | ||
| 15 | MUSE_B3, | ||
| 16 | MUSE_B4, | ||
| 17 | MUSE_B5, | ||
| 18 | MUSE_B6, | ||
| 19 | MUSE_B7, | ||
| 20 | MUSE_B8, | ||
| 21 | MUSE_B9, | ||
| 22 | MUSE_B10, | ||
| 23 | MUSE_B11, | ||
| 24 | MUSE_B12, | ||
| 25 | MUSE_B13, | ||
| 26 | MUSE_B14, | ||
| 27 | MUSE_B15, | ||
| 28 | MUSE_B16, | ||
| 29 | MUSE_B17, | ||
| 30 | MUSE_B18, | ||
| 31 | MUSE_B19, | ||
| 32 | MUSE_B20, | ||
| 33 | MUSE_B21, | ||
| 34 | MUSE_B22, | ||
| 35 | MUSE_B23, | ||
| 36 | MUSE_B24, | ||
| 37 | MUSE_B25, | ||
| 38 | MUSE_B26, | ||
| 39 | MUSE_B27, | ||
| 40 | MUSE_B28, | ||
| 41 | MUSE_B29, | ||
| 42 | MUSE_B30, | ||
| 43 | MUSE_B31 | ||
| 44 | }; | ||
| 45 | |||
| 46 | bool number_of_ones_to_bool[16] = { | ||
| 47 | 1, 0, 0, 1, 0, 1, 1, 0, | ||
| 48 | 0, 1, 1, 0, 1, 0, 0, 1 | ||
| 49 | }; | ||
| 50 | |||
| 51 | uint8_t muse_interval[4] = {MUSE_B7, MUSE_B19, MUSE_B3, MUSE_B28}; | ||
| 52 | uint8_t muse_theme[4] = {MUSE_B8, MUSE_B23, MUSE_B18, MUSE_B17}; | ||
| 53 | |||
| 54 | bool muse_timer_1bit = 0; | ||
| 55 | uint8_t muse_timer_2bit = 0; | ||
| 56 | uint8_t muse_timer_2bit_counter = 0; | ||
| 57 | uint8_t muse_timer_4bit = 0; | ||
| 58 | uint32_t muse_timer_31bit = 0; | ||
| 59 | |||
| 60 | bool bit_for_value(uint8_t value) { | ||
| 61 | switch (value) { | ||
| 62 | case MUSE_OFF: | ||
| 63 | return 0; | ||
| 64 | case MUSE_ON: | ||
| 65 | return 1; | ||
| 66 | case MUSE_C_1_2: | ||
| 67 | return muse_timer_1bit; | ||
| 68 | case MUSE_C1: | ||
| 69 | return (muse_timer_4bit & 1); | ||
| 70 | case MUSE_C2: | ||
| 71 | return (muse_timer_4bit & 2); | ||
| 72 | case MUSE_C4: | ||
| 73 | return (muse_timer_4bit & 4); | ||
| 74 | case MUSE_C8: | ||
| 75 | return (muse_timer_4bit & 8); | ||
| 76 | case MUSE_C3: | ||
| 77 | return (muse_timer_2bit & 1); | ||
| 78 | case MUSE_C6: | ||
| 79 | return (muse_timer_2bit & 2); | ||
| 80 | default: | ||
| 81 | return muse_timer_31bit & (1UL << (value - MUSE_B1)); | ||
| 82 | } | ||
| 83 | } | ||
| 84 | |||
| 85 | uint8_t muse_clock_pulse(void) { | ||
| 86 | |||
| 87 | bool top = number_of_ones_to_bool[ | ||
| 88 | bit_for_value(muse_theme[0]) + | ||
| 89 | (bit_for_value(muse_theme[1]) << 1) + | ||
| 90 | (bit_for_value(muse_theme[2]) << 2) + | ||
| 91 | (bit_for_value(muse_theme[3]) << 3) | ||
| 92 | ]; | ||
| 93 | |||
| 94 | if (muse_timer_1bit == 0) { | ||
| 95 | if (muse_timer_2bit_counter == 0) { | ||
| 96 | muse_timer_2bit = (muse_timer_2bit + 1) % 4; | ||
| 97 | } | ||
| 98 | muse_timer_2bit_counter = (muse_timer_2bit_counter + 1) % 3; | ||
| 99 | muse_timer_4bit = (muse_timer_4bit + 1) % 16; | ||
| 100 | muse_timer_31bit = (muse_timer_31bit << 1) + top; | ||
| 101 | } | ||
| 102 | |||
| 103 | muse_timer_1bit = (muse_timer_1bit + 1) % 2; | ||
| 104 | |||
| 105 | return | ||
| 106 | bit_for_value(muse_interval[0]) + | ||
| 107 | (bit_for_value(muse_interval[1]) << 1) + | ||
| 108 | (bit_for_value(muse_interval[2]) << 2) + | ||
| 109 | (bit_for_value(muse_interval[3]) << 3); | ||
| 110 | |||
| 111 | } | ||
diff --git a/quantum/audio/muse.h b/quantum/audio/muse.h new file mode 100644 index 000000000..6f382a7fe --- /dev/null +++ b/quantum/audio/muse.h | |||
| @@ -0,0 +1,9 @@ | |||
| 1 | #ifndef MUSE_H | ||
| 2 | #define MUSE_H | ||
| 3 | |||
| 4 | #include "quantum.h" | ||
| 5 | #include "process_audio.h" | ||
| 6 | |||
| 7 | uint8_t muse_clock_pulse(void); | ||
| 8 | |||
| 9 | #endif | ||
