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 | |
| 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')
| -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 | ||||
| -rw-r--r-- | quantum/config_common.h | 102 | ||||
| -rw-r--r-- | quantum/process_keycode/process_audio.c | 4 | ||||
| -rw-r--r-- | quantum/process_keycode/process_audio.h | 4 | ||||
| -rw-r--r-- | quantum/process_keycode/process_music.c | 31 | ||||
| -rw-r--r-- | quantum/process_keycode/process_music.h | 5 | ||||
| -rw-r--r-- | quantum/rgblight.c | 20 | ||||
| -rw-r--r-- | quantum/rgblight_types.h | 4 |
10 files changed, 339 insertions, 99 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 | ||
diff --git a/quantum/config_common.h b/quantum/config_common.h index 4c6a702af..f6f51b367 100644 --- a/quantum/config_common.h +++ b/quantum/config_common.h | |||
| @@ -22,56 +22,58 @@ | |||
| 22 | #define ROW2COL 1 | 22 | #define ROW2COL 1 |
| 23 | #define CUSTOM_MATRIX 2 /* Disables built-in matrix scanning code */ | 23 | #define CUSTOM_MATRIX 2 /* Disables built-in matrix scanning code */ |
| 24 | 24 | ||
| 25 | /* I/O pins */ | 25 | #ifdef __AVR__ |
| 26 | #ifndef F0 | 26 | /* I/O pins */ |
| 27 | #define B0 0x30 | 27 | #ifndef F0 |
| 28 | #define B1 0x31 | 28 | #define B0 0x30 |
| 29 | #define B2 0x32 | 29 | #define B1 0x31 |
| 30 | #define B3 0x33 | 30 | #define B2 0x32 |
| 31 | #define B4 0x34 | 31 | #define B3 0x33 |
| 32 | #define B5 0x35 | 32 | #define B4 0x34 |
| 33 | #define B6 0x36 | 33 | #define B5 0x35 |
| 34 | #define B7 0x37 | 34 | #define B6 0x36 |
| 35 | #define C0 0x60 | 35 | #define B7 0x37 |
| 36 | #define C1 0x61 | 36 | #define C0 0x60 |
| 37 | #define C2 0x62 | 37 | #define C1 0x61 |
| 38 | #define C3 0x63 | 38 | #define C2 0x62 |
| 39 | #define C4 0x64 | 39 | #define C3 0x63 |
| 40 | #define C5 0x65 | 40 | #define C4 0x64 |
| 41 | #define C6 0x66 | 41 | #define C5 0x65 |
| 42 | #define C7 0x67 | 42 | #define C6 0x66 |
| 43 | #define D0 0x90 | 43 | #define C7 0x67 |
| 44 | #define D1 0x91 | 44 | #define D0 0x90 |
| 45 | #define D2 0x92 | 45 | #define D1 0x91 |
| 46 | #define D3 0x93 | 46 | #define D2 0x92 |
| 47 | #define D4 0x94 | 47 | #define D3 0x93 |
| 48 | #define D5 0x95 | 48 | #define D4 0x94 |
| 49 | #define D6 0x96 | 49 | #define D5 0x95 |
| 50 | #define D7 0x97 | 50 | #define D6 0x96 |
| 51 | #define E0 0xC0 | 51 | #define D7 0x97 |
| 52 | #define E1 0xC1 | 52 | #define E0 0xC0 |
| 53 | #define E2 0xC2 | 53 | #define E1 0xC1 |
| 54 | #define E3 0xC3 | 54 | #define E2 0xC2 |
| 55 | #define E4 0xC4 | 55 | #define E3 0xC3 |
| 56 | #define E5 0xC5 | 56 | #define E4 0xC4 |
| 57 | #define E6 0xC6 | 57 | #define E5 0xC5 |
| 58 | #define E7 0xC7 | 58 | #define E6 0xC6 |
| 59 | #define F0 0xF0 | 59 | #define E7 0xC7 |
| 60 | #define F1 0xF1 | 60 | #define F0 0xF0 |
| 61 | #define F2 0xF2 | 61 | #define F1 0xF1 |
| 62 | #define F3 0xF3 | 62 | #define F2 0xF2 |
| 63 | #define F4 0xF4 | 63 | #define F3 0xF3 |
| 64 | #define F5 0xF5 | 64 | #define F4 0xF4 |
| 65 | #define F6 0xF6 | 65 | #define F5 0xF5 |
| 66 | #define F7 0xF7 | 66 | #define F6 0xF6 |
| 67 | #define A0 0x00 | 67 | #define F7 0xF7 |
| 68 | #define A1 0x01 | 68 | #define A0 0x00 |
| 69 | #define A2 0x02 | 69 | #define A1 0x01 |
| 70 | #define A3 0x03 | 70 | #define A2 0x02 |
| 71 | #define A4 0x04 | 71 | #define A3 0x03 |
| 72 | #define A5 0x05 | 72 | #define A4 0x04 |
| 73 | #define A6 0x06 | 73 | #define A5 0x05 |
| 74 | #define A7 0x07 | 74 | #define A6 0x06 |
| 75 | #define A7 0x07 | ||
| 76 | #endif | ||
| 75 | #endif | 77 | #endif |
| 76 | 78 | ||
| 77 | /* USART configuration */ | 79 | /* USART configuration */ |
diff --git a/quantum/process_keycode/process_audio.c b/quantum/process_keycode/process_audio.c index e9b20512e..0a25aa535 100644 --- a/quantum/process_keycode/process_audio.c +++ b/quantum/process_keycode/process_audio.c | |||
| @@ -10,9 +10,7 @@ float voice_change_song[][2] = VOICE_CHANGE_SONG; | |||
| 10 | #define PITCH_STANDARD_A 440.0f | 10 | #define PITCH_STANDARD_A 440.0f |
| 11 | #endif | 11 | #endif |
| 12 | 12 | ||
| 13 | 13 | float compute_freq_for_midi_note(uint8_t note) | |
| 14 | |||
| 15 | static float compute_freq_for_midi_note(uint8_t note) | ||
| 16 | { | 14 | { |
| 17 | // https://en.wikipedia.org/wiki/MIDI_tuning_standard | 15 | // https://en.wikipedia.org/wiki/MIDI_tuning_standard |
| 18 | return pow(2.0, (note - 69) / 12.0) * PITCH_STANDARD_A; | 16 | return pow(2.0, (note - 69) / 12.0) * PITCH_STANDARD_A; |
diff --git a/quantum/process_keycode/process_audio.h b/quantum/process_keycode/process_audio.h index 7ac15b733..3a84c3d86 100644 --- a/quantum/process_keycode/process_audio.h +++ b/quantum/process_keycode/process_audio.h | |||
| @@ -1,6 +1,8 @@ | |||
| 1 | #ifndef PROCESS_AUDIO_H | 1 | #ifndef PROCESS_AUDIO_H |
| 2 | #define PROCESS_AUDIO_H | 2 | #define PROCESS_AUDIO_H |
| 3 | 3 | ||
| 4 | float compute_freq_for_midi_note(uint8_t note); | ||
| 5 | |||
| 4 | bool process_audio(uint16_t keycode, keyrecord_t *record); | 6 | bool process_audio(uint16_t keycode, keyrecord_t *record); |
| 5 | void process_audio_noteon(uint8_t note); | 7 | void process_audio_noteon(uint8_t note); |
| 6 | void process_audio_noteoff(uint8_t note); | 8 | void process_audio_noteoff(uint8_t note); |
| @@ -8,4 +10,4 @@ void process_audio_all_notes_off(void); | |||
| 8 | 10 | ||
| 9 | void audio_on_user(void); | 11 | void audio_on_user(void); |
| 10 | 12 | ||
| 11 | #endif \ No newline at end of file | 13 | #endif |
diff --git a/quantum/process_keycode/process_music.c b/quantum/process_keycode/process_music.c index 742bb08b1..697aa237f 100644 --- a/quantum/process_keycode/process_music.c +++ b/quantum/process_keycode/process_music.c | |||
| @@ -197,17 +197,26 @@ bool process_music(uint16_t keycode, keyrecord_t *record) { | |||
| 197 | } | 197 | } |
| 198 | } | 198 | } |
| 199 | 199 | ||
| 200 | uint8_t note; | 200 | uint8_t note = 36; |
| 201 | if (music_mode == MUSIC_MODE_CHROMATIC) | 201 | #ifdef MUSIC_MAP |
| 202 | note = (music_starting_note + record->event.key.col + music_offset - 3)+12*(MATRIX_ROWS - record->event.key.row); | 202 | if (music_mode == MUSIC_MODE_CHROMATIC) { |
| 203 | else if (music_mode == MUSIC_MODE_GUITAR) | 203 | note = music_starting_note + music_offset + 36 + music_map[record->event.key.row][record->event.key.col]; |
| 204 | note = (music_starting_note + record->event.key.col + music_offset + 32)+5*(MATRIX_ROWS - record->event.key.row); | 204 | } else { |
| 205 | else if (music_mode == MUSIC_MODE_VIOLIN) | 205 | uint8_t position = music_map[record->event.key.row][record->event.key.col]; |
| 206 | note = (music_starting_note + record->event.key.col + music_offset + 32)+7*(MATRIX_ROWS - record->event.key.row); | 206 | note = music_starting_note + music_offset + 36 + SCALE[position % 12] + (position / 12)*12; |
| 207 | else if (music_mode == MUSIC_MODE_MAJOR) | 207 | } |
| 208 | note = (music_starting_note + SCALE[record->event.key.col + music_offset] - 3)+12*(MATRIX_ROWS - record->event.key.row); | 208 | #else |
| 209 | else | 209 | if (music_mode == MUSIC_MODE_CHROMATIC) |
| 210 | note = music_starting_note; | 210 | note = (music_starting_note + record->event.key.col + music_offset - 3)+12*(MATRIX_ROWS - record->event.key.row); |
| 211 | else if (music_mode == MUSIC_MODE_GUITAR) | ||
| 212 | note = (music_starting_note + record->event.key.col + music_offset + 32)+5*(MATRIX_ROWS - record->event.key.row); | ||
| 213 | else if (music_mode == MUSIC_MODE_VIOLIN) | ||
| 214 | note = (music_starting_note + record->event.key.col + music_offset + 32)+7*(MATRIX_ROWS - record->event.key.row); | ||
| 215 | else if (music_mode == MUSIC_MODE_MAJOR) | ||
| 216 | note = (music_starting_note + SCALE[record->event.key.col + music_offset] - 3)+12*(MATRIX_ROWS - record->event.key.row); | ||
| 217 | else | ||
| 218 | note = music_starting_note; | ||
| 219 | #endif | ||
| 211 | 220 | ||
| 212 | if (record->event.pressed) { | 221 | if (record->event.pressed) { |
| 213 | music_noteon(note); | 222 | music_noteon(note); |
diff --git a/quantum/process_keycode/process_music.h b/quantum/process_keycode/process_music.h index 8ccb7a3a5..f6753d4f2 100644 --- a/quantum/process_keycode/process_music.h +++ b/quantum/process_keycode/process_music.h | |||
| @@ -29,6 +29,11 @@ enum music_modes { | |||
| 29 | NUMBER_OF_MODES | 29 | NUMBER_OF_MODES |
| 30 | }; | 30 | }; |
| 31 | 31 | ||
| 32 | |||
| 33 | #ifdef MUSIC_MAP | ||
| 34 | extern const uint8_t music_map[MATRIX_ROWS][MATRIX_COLS]; | ||
| 35 | #endif | ||
| 36 | |||
| 32 | bool process_music(uint16_t keycode, keyrecord_t *record); | 37 | bool process_music(uint16_t keycode, keyrecord_t *record); |
| 33 | 38 | ||
| 34 | bool is_music_on(void); | 39 | bool is_music_on(void); |
diff --git a/quantum/rgblight.c b/quantum/rgblight.c index 4e2671d24..2490a1d9f 100644 --- a/quantum/rgblight.c +++ b/quantum/rgblight.c | |||
| @@ -14,9 +14,11 @@ | |||
| 14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | 14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
| 15 | */ | 15 | */ |
| 16 | #include <math.h> | 16 | #include <math.h> |
| 17 | #include <avr/eeprom.h> | 17 | #ifdef __AVR__ |
| 18 | #include <avr/interrupt.h> | 18 | #include <avr/eeprom.h> |
| 19 | #include <util/delay.h> | 19 | #include <avr/interrupt.h> |
| 20 | #endif | ||
| 21 | #include "wait.h" | ||
| 20 | #include "progmem.h" | 22 | #include "progmem.h" |
| 21 | #include "timer.h" | 23 | #include "timer.h" |
| 22 | #include "rgblight.h" | 24 | #include "rgblight.h" |
| @@ -113,10 +115,16 @@ void setrgb(uint8_t r, uint8_t g, uint8_t b, LED_TYPE *led1) { | |||
| 113 | 115 | ||
| 114 | 116 | ||
| 115 | uint32_t eeconfig_read_rgblight(void) { | 117 | uint32_t eeconfig_read_rgblight(void) { |
| 116 | return eeprom_read_dword(EECONFIG_RGBLIGHT); | 118 | #ifdef __AVR__ |
| 119 | return eeprom_read_dword(EECONFIG_RGBLIGHT); | ||
| 120 | #else | ||
| 121 | return 0; | ||
| 122 | #endif | ||
| 117 | } | 123 | } |
| 118 | void eeconfig_update_rgblight(uint32_t val) { | 124 | void eeconfig_update_rgblight(uint32_t val) { |
| 119 | eeprom_update_dword(EECONFIG_RGBLIGHT, val); | 125 | #ifdef __AVR__ |
| 126 | eeprom_update_dword(EECONFIG_RGBLIGHT, val); | ||
| 127 | #endif | ||
| 120 | } | 128 | } |
| 121 | void eeconfig_update_rgblight_default(void) { | 129 | void eeconfig_update_rgblight_default(void) { |
| 122 | dprintf("eeconfig_update_rgblight_default\n"); | 130 | dprintf("eeconfig_update_rgblight_default\n"); |
| @@ -311,7 +319,7 @@ void rgblight_disable(void) { | |||
| 311 | #ifdef RGBLIGHT_ANIMATIONS | 319 | #ifdef RGBLIGHT_ANIMATIONS |
| 312 | rgblight_timer_disable(); | 320 | rgblight_timer_disable(); |
| 313 | #endif | 321 | #endif |
| 314 | _delay_ms(50); | 322 | wait_ms(50); |
| 315 | rgblight_set(); | 323 | rgblight_set(); |
| 316 | } | 324 | } |
| 317 | 325 | ||
diff --git a/quantum/rgblight_types.h b/quantum/rgblight_types.h index b1aa7026c..49ef5c8ea 100644 --- a/quantum/rgblight_types.h +++ b/quantum/rgblight_types.h | |||
| @@ -23,7 +23,9 @@ | |||
| 23 | #ifndef RGBLIGHT_TYPES | 23 | #ifndef RGBLIGHT_TYPES |
| 24 | #define RGBLIGHT_TYPES | 24 | #define RGBLIGHT_TYPES |
| 25 | 25 | ||
| 26 | #include <avr/io.h> | 26 | #ifdef __AVR__ |
| 27 | #include <avr/io.h> | ||
| 28 | #endif | ||
| 27 | 29 | ||
| 28 | #ifdef RGBW | 30 | #ifdef RGBW |
| 29 | #define LED_TYPE struct cRGBW | 31 | #define LED_TYPE struct cRGBW |
