aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--common_features.mk6
-rw-r--r--keyboards/clueboard/60/keymaps/default/keymap.c94
-rw-r--r--keyboards/clueboard/60/led.c9
-rw-r--r--keyboards/clueboard/60/matrix.c6
-rw-r--r--keyboards/clueboard/60/rules.mk2
-rw-r--r--quantum/audio/audio_arm.c1
-rw-r--r--quantum/audio/musical_notes.h226
-rw-r--r--quantum/audio/song_list.h18
8 files changed, 230 insertions, 132 deletions
diff --git a/common_features.mk b/common_features.mk
index 319834b5e..a67cf230f 100644
--- a/common_features.mk
+++ b/common_features.mk
@@ -34,7 +34,11 @@ ifeq ($(strip $(AUDIO_ENABLE)), yes)
34 OPT_DEFS += -DAUDIO_ENABLE 34 OPT_DEFS += -DAUDIO_ENABLE
35 MUSIC_ENABLE := 1 35 MUSIC_ENABLE := 1
36 SRC += $(QUANTUM_DIR)/process_keycode/process_audio.c 36 SRC += $(QUANTUM_DIR)/process_keycode/process_audio.c
37 SRC += $(QUANTUM_DIR)/audio/audio.c 37 ifeq ($(PLATFORM),AVR)
38 SRC += $(QUANTUM_DIR)/audio/audio.c
39 else
40 SRC += $(QUANTUM_DIR)/audio/audio_arm.c
41 endif
38 SRC += $(QUANTUM_DIR)/audio/voices.c 42 SRC += $(QUANTUM_DIR)/audio/voices.c
39 SRC += $(QUANTUM_DIR)/audio/luts.c 43 SRC += $(QUANTUM_DIR)/audio/luts.c
40endif 44endif
diff --git a/keyboards/clueboard/60/keymaps/default/keymap.c b/keyboards/clueboard/60/keymaps/default/keymap.c
index 1b0c71264..8397c4bbf 100644
--- a/keyboards/clueboard/60/keymaps/default/keymap.c
+++ b/keyboards/clueboard/60/keymaps/default/keymap.c
@@ -3,11 +3,35 @@
3#define _______ KC_TRNS 3#define _______ KC_TRNS
4 4
5enum keyboard_layers { 5enum keyboard_layers {
6 _BL, 6 _BL,
7 _FL, 7 _FL,
8 _CL 8 _CL
9}; 9};
10 10
11enum custom_keycodes {
12 S_BSKTC = SAFE_RANGE,
13 S_ODEJY,
14 S_RCKBY,
15 S_DOEDR,
16 S_SCALE,
17 S_ONEUP,
18 S_COIN,
19 S_SONIC,
20 S_ZELDA
21};
22
23#ifdef AUDIO_ENABLE
24 float song_basketcase[][2] = SONG(BASKET_CASE);
25 float song_ode_to_joy[][2] = SONG(ODE_TO_JOY);
26 float song_rock_a_bye_baby[][2] = SONG(ROCK_A_BYE_BABY);
27 float song_doe_a_deer[][2] = SONG(DOE_A_DEER);
28 float song_scale[][2] = SONG(MUSIC_SCALE_SOUND);
29 float song_coin[][2] = SONG(COIN_SOUND);
30 float song_one_up[][2] = SONG(ONE_UP_SOUND);
31 float song_sonic_ring[][2] = SONG(SONIC_RING);
32 float song_zelda_puzzle[][2] = SONG(ZELDA_PUZZLE);
33#endif
34
11const uint16_t keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 35const uint16_t keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
12 /* Layer 0: Default Layer 36 /* Layer 0: Default Layer
13 * ,-----------------------------------------------------------. 37 * ,-----------------------------------------------------------.
@@ -33,11 +57,71 @@ const uint16_t keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
33 _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, \ 57 _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, \
34 _______, _______,MO(_CL),_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, \ 58 _______, _______,MO(_CL),_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, \
35 _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, _______, \ 59 _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, _______, \
36 _______, _______, _______, _______, _______, _______, MO(_FL), _______), 60 _______,_______,_______, _______, _______, _______, MO(_FL), _______),
37 [_CL] = KEYMAP( 61 [_CL] = KEYMAP(
38 BL_STEP,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,\ 62 BL_STEP,S_BSKTC,S_ODEJY,S_RCKBY,S_DOEDR,S_SCALE,S_ONEUP,S_COIN, S_SONIC,S_ZELDA,_______,_______,_______,_______,_______,\
39 _______, _______,_______,_______,RESET, _______,_______,_______,_______,_______,_______,_______,_______,_______, \ 63 _______, _______,_______,_______,RESET, _______,_______,_______,_______,_______,_______,_______,_______,_______, \
40 _______, _______,MO(_CL),_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, \ 64 _______, _______,MO(_CL),_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, \
41 _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, \ 65 _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, \
42 _______, _______, _______, _______, _______, _______, MO(_FL), _______) 66 _______, _______, _______, _______, _______, _______, MO(_FL), _______)
43}; 67};
68
69bool process_record_user(uint16_t keycode, keyrecord_t *record) {
70 switch (keycode) {
71 case S_BSKTC:
72 if (record->event.pressed) {
73 stop_all_notes();
74 PLAY_SONG(song_basketcase);
75 }
76 return false;
77 case S_ODEJY:
78 if (record->event.pressed) {
79 stop_all_notes();
80 PLAY_SONG(song_ode_to_joy);
81 }
82 return false;
83 case S_RCKBY:
84 if (record->event.pressed) {
85 stop_all_notes();
86 PLAY_SONG(song_rock_a_bye_baby);
87 }
88 return false;
89 case S_DOEDR:
90 if (record->event.pressed) {
91 stop_all_notes();
92 PLAY_SONG(song_doe_a_deer);
93 }
94 return false;
95 case S_SCALE:
96 if (record->event.pressed) {
97 stop_all_notes();
98 PLAY_SONG(song_scale);
99 }
100 return false;
101 case S_ONEUP:
102 if (record->event.pressed) {
103 stop_all_notes();
104 PLAY_SONG(song_one_up);
105 }
106 return false;
107 case S_COIN:
108 if (record->event.pressed) {
109 stop_all_notes();
110 PLAY_SONG(song_coin);
111 }
112 return false;
113 case S_SONIC:
114 if (record->event.pressed) {
115 stop_all_notes();
116 PLAY_SONG(song_sonic_ring);
117 }
118 return false;
119 case S_ZELDA:
120 if (record->event.pressed) {
121 stop_all_notes();
122 PLAY_SONG(song_zelda_puzzle);
123 }
124 return false;
125 }
126 return true;
127}
diff --git a/keyboards/clueboard/60/led.c b/keyboards/clueboard/60/led.c
index fdf244ad5..350696736 100644
--- a/keyboards/clueboard/60/led.c
+++ b/keyboards/clueboard/60/led.c
@@ -23,7 +23,7 @@
23void backlight_init_ports(void) { 23void backlight_init_ports(void) {
24 printf("backlight_init_ports()\n"); 24 printf("backlight_init_ports()\n");
25 #ifdef BACKLIGHT_ENABLE 25 #ifdef BACKLIGHT_ENABLE
26 palSetPadMode(GPIOB, 8, PAL_MODE_OUTPUT_PUSHPULL); 26 palSetPadMode(GPIOB, 8, PAL_MODE_OUTPUT_PUSHPULL);
27 palSetPad(GPIOB, 8); 27 palSetPad(GPIOB, 8);
28 #endif 28 #endif
29} 29}
@@ -41,13 +41,8 @@ void backlight_set(uint8_t level) {
41 #endif 41 #endif
42} 42}
43 43
44void led_init_ports() {
45 printf("led_init_ports()\n");
46 palSetPadMode(GPIOB, 7, PAL_MODE_OUTPUT_PUSHPULL);
47}
48
49void led_set_kb(uint8_t usb_led) { 44void led_set_kb(uint8_t usb_led) {
50 printf("led_init_ports()\n"); 45 printf("led_set_kb(%d)\n", usb_led);
51 if (usb_led & (1<<USB_LED_CAPS_LOCK)) { 46 if (usb_led & (1<<USB_LED_CAPS_LOCK)) {
52 // Turn capslock on 47 // Turn capslock on
53 palSetPad(GPIOB, 7); 48 palSetPad(GPIOB, 7);
diff --git a/keyboards/clueboard/60/matrix.c b/keyboards/clueboard/60/matrix.c
index 4023bc03c..7c38a3bd4 100644
--- a/keyboards/clueboard/60/matrix.c
+++ b/keyboards/clueboard/60/matrix.c
@@ -71,10 +71,7 @@ void matrix_init(void) {
71 memset(matrix, 0, MATRIX_ROWS * sizeof(matrix_row_t)); 71 memset(matrix, 0, MATRIX_ROWS * sizeof(matrix_row_t));
72 memset(matrix_debouncing, 0, MATRIX_COLS * sizeof(matrix_row_t)); 72 memset(matrix_debouncing, 0, MATRIX_COLS * sizeof(matrix_row_t));
73 73
74 /* Setup capslock */ 74 palClearPad(GPIOB, 7); // Turn off capslock
75 // palSetPadMode(GPIOB, 7, PAL_MODE_OUTPUT_PUSHPULL);
76 // palClearPad(GPIOB, 7);
77
78 matrix_init_quantum(); 75 matrix_init_quantum();
79} 76}
80 77
@@ -138,6 +135,7 @@ uint8_t matrix_scan(void) {
138 debouncing_time = timer_read(); 135 debouncing_time = timer_read();
139 } 136 }
140 } 137 }
138
141 if (debouncing && timer_elapsed(debouncing_time) > DEBOUNCE) { 139 if (debouncing && timer_elapsed(debouncing_time) > DEBOUNCE) {
142 for (int row = 0; row < MATRIX_ROWS; row++) { 140 for (int row = 0; row < MATRIX_ROWS; row++) {
143 matrix[row] = 0; 141 matrix[row] = 0;
diff --git a/keyboards/clueboard/60/rules.mk b/keyboards/clueboard/60/rules.mk
index 01b7dad9b..93e6019a4 100644
--- a/keyboards/clueboard/60/rules.mk
+++ b/keyboards/clueboard/60/rules.mk
@@ -50,5 +50,5 @@ COMMAND_ENABLE = yes # Commands for debug and configuration
50#SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend 50#SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
51NKRO_ENABLE = yes # USB Nkey Rollover 51NKRO_ENABLE = yes # USB Nkey Rollover
52CUSTOM_MATRIX = yes # Custom matrix file 52CUSTOM_MATRIX = yes # Custom matrix file
53#AUDIO_ENABLE = yes 53AUDIO_ENABLE = yes
54# SERIAL_LINK_ENABLE = yes 54# SERIAL_LINK_ENABLE = yes
diff --git a/quantum/audio/audio_arm.c b/quantum/audio/audio_arm.c
index 5ad0c86ec..43c8d67c4 100644
--- a/quantum/audio/audio_arm.c
+++ b/quantum/audio/audio_arm.c
@@ -18,7 +18,6 @@
18#include "ch.h" 18#include "ch.h"
19#include "hal.h" 19#include "hal.h"
20 20
21#include <stdio.h>
22#include <string.h> 21#include <string.h>
23#include "print.h" 22#include "print.h"
24#include "keymap.h" 23#include "keymap.h"
diff --git a/quantum/audio/musical_notes.h b/quantum/audio/musical_notes.h
index 647b69564..065608ccc 100644
--- a/quantum/audio/musical_notes.h
+++ b/quantum/audio/musical_notes.h
@@ -53,127 +53,127 @@
53 53
54// Note Timbre 54// Note Timbre
55// Changes how the notes sound 55// Changes how the notes sound
56#define TIMBRE_12 0.125 56#define TIMBRE_12 0.125f
57#define TIMBRE_25 0.250 57#define TIMBRE_25 0.250f
58#define TIMBRE_50 0.500 58#define TIMBRE_50 0.500f
59#define TIMBRE_75 0.750 59#define TIMBRE_75 0.750f
60#define TIMBRE_DEFAULT TIMBRE_50 60#define TIMBRE_DEFAULT TIMBRE_50
61 61
62// Notes - # = Octave 62// Notes - # = Octave
63 63
64#define NOTE_REST 0.00 64#define NOTE_REST 0.00f
65 65
66/* These notes are currently bugged 66/* These notes are currently bugged
67#define NOTE_C0 16.35 67#define NOTE_C0 16.35f
68#define NOTE_CS0 17.32 68#define NOTE_CS0 17.32f
69#define NOTE_D0 18.35 69#define NOTE_D0 18.35f
70#define NOTE_DS0 19.45 70#define NOTE_DS0 19.45f
71#define NOTE_E0 20.60 71#define NOTE_E0 20.60f
72#define NOTE_F0 21.83 72#define NOTE_F0 21.83f
73#define NOTE_FS0 23.12 73#define NOTE_FS0 23.12f
74#define NOTE_G0 24.50 74#define NOTE_G0 24.50f
75#define NOTE_GS0 25.96 75#define NOTE_GS0 25.96f
76#define NOTE_A0 27.50 76#define NOTE_A0 27.50f
77#define NOTE_AS0 29.14 77#define NOTE_AS0 29.14f
78#define NOTE_B0 30.87 78#define NOTE_B0 30.87f
79#define NOTE_C1 32.70 79#define NOTE_C1 32.70f
80#define NOTE_CS1 34.65 80#define NOTE_CS1 34.65f
81#define NOTE_D1 36.71 81#define NOTE_D1 36.71f
82#define NOTE_DS1 38.89 82#define NOTE_DS1 38.89f
83#define NOTE_E1 41.20 83#define NOTE_E1 41.20f
84#define NOTE_F1 43.65 84#define NOTE_F1 43.65f
85#define NOTE_FS1 46.25 85#define NOTE_FS1 46.25f
86#define NOTE_G1 49.00 86#define NOTE_G1 49.00f
87#define NOTE_GS1 51.91 87#define NOTE_GS1 51.91f
88#define NOTE_A1 55.00 88#define NOTE_A1 55.00f
89#define NOTE_AS1 58.27 89#define NOTE_AS1 58.27f
90*/ 90*/
91 91
92#define NOTE_B1 61.74 92#define NOTE_B1 61.74f
93#define NOTE_C2 65.41 93#define NOTE_C2 65.41f
94#define NOTE_CS2 69.30 94#define NOTE_CS2 69.30f
95#define NOTE_D2 73.42 95#define NOTE_D2 73.42f
96#define NOTE_DS2 77.78 96#define NOTE_DS2 77.78f
97#define NOTE_E2 82.41 97#define NOTE_E2 82.41f
98#define NOTE_F2 87.31 98#define NOTE_F2 87.31f
99#define NOTE_FS2 92.50 99#define NOTE_FS2 92.50f
100#define NOTE_G2 98.00 100#define NOTE_G2 98.00f
101#define NOTE_GS2 103.83 101#define NOTE_GS2 103.83f
102#define NOTE_A2 110.00 102#define NOTE_A2 110.00f
103#define NOTE_AS2 116.54 103#define NOTE_AS2 116.54f
104#define NOTE_B2 123.47 104#define NOTE_B2 123.47f
105#define NOTE_C3 130.81 105#define NOTE_C3 130.81f
106#define NOTE_CS3 138.59 106#define NOTE_CS3 138.59f
107#define NOTE_D3 146.83 107#define NOTE_D3 146.83f
108#define NOTE_DS3 155.56 108#define NOTE_DS3 155.56f
109#define NOTE_E3 164.81 109#define NOTE_E3 164.81f
110#define NOTE_F3 174.61 110#define NOTE_F3 174.61f
111#define NOTE_FS3 185.00 111#define NOTE_FS3 185.00f
112#define NOTE_G3 196.00 112#define NOTE_G3 196.00f
113#define NOTE_GS3 207.65 113#define NOTE_GS3 207.65f
114#define NOTE_A3 220.00 114#define NOTE_A3 220.00f
115#define NOTE_AS3 233.08 115#define NOTE_AS3 233.08f
116#define NOTE_B3 246.94 116#define NOTE_B3 246.94f
117#define NOTE_C4 261.63 117#define NOTE_C4 261.63f
118#define NOTE_CS4 277.18 118#define NOTE_CS4 277.18f
119#define NOTE_D4 293.66 119#define NOTE_D4 293.66f
120#define NOTE_DS4 311.13 120#define NOTE_DS4 311.13f
121#define NOTE_E4 329.63 121#define NOTE_E4 329.63f
122#define NOTE_F4 349.23 122#define NOTE_F4 349.23f
123#define NOTE_FS4 369.99 123#define NOTE_FS4 369.99f
124#define NOTE_G4 392.00 124#define NOTE_G4 392.00f
125#define NOTE_GS4 415.30 125#define NOTE_GS4 415.30f
126#define NOTE_A4 440.00 126#define NOTE_A4 440.00f
127#define NOTE_AS4 466.16 127#define NOTE_AS4 466.16f
128#define NOTE_B4 493.88 128#define NOTE_B4 493.88f
129#define NOTE_C5 523.25 129#define NOTE_C5 523.25f
130#define NOTE_CS5 554.37 130#define NOTE_CS5 554.37f
131#define NOTE_D5 587.33 131#define NOTE_D5 587.33f
132#define NOTE_DS5 622.25 132#define NOTE_DS5 622.25f
133#define NOTE_E5 659.26 133#define NOTE_E5 659.26f
134#define NOTE_F5 698.46 134#define NOTE_F5 698.46f
135#define NOTE_FS5 739.99 135#define NOTE_FS5 739.99f
136#define NOTE_G5 783.99 136#define NOTE_G5 783.99f
137#define NOTE_GS5 830.61 137#define NOTE_GS5 830.61f
138#define NOTE_A5 880.00 138#define NOTE_A5 880.00f
139#define NOTE_AS5 932.33 139#define NOTE_AS5 932.33f
140#define NOTE_B5 987.77 140#define NOTE_B5 987.77f
141#define NOTE_C6 1046.50 141#define NOTE_C6 1046.50f
142#define NOTE_CS6 1108.73 142#define NOTE_CS6 1108.73f
143#define NOTE_D6 1174.66 143#define NOTE_D6 1174.66f
144#define NOTE_DS6 1244.51 144#define NOTE_DS6 1244.51f
145#define NOTE_E6 1318.51 145#define NOTE_E6 1318.51f
146#define NOTE_F6 1396.91 146#define NOTE_F6 1396.91f
147#define NOTE_FS6 1479.98 147#define NOTE_FS6 1479.98f
148#define NOTE_G6 1567.98 148#define NOTE_G6 1567.98f
149#define NOTE_GS6 1661.22 149#define NOTE_GS6 1661.22f
150#define NOTE_A6 1760.00 150#define NOTE_A6 1760.00f
151#define NOTE_AS6 1864.66 151#define NOTE_AS6 1864.66f
152#define NOTE_B6 1975.53 152#define NOTE_B6 1975.53f
153#define NOTE_C7 2093.00 153#define NOTE_C7 2093.00f
154#define NOTE_CS7 2217.46 154#define NOTE_CS7 2217.46f
155#define NOTE_D7 2349.32 155#define NOTE_D7 2349.32f
156#define NOTE_DS7 2489.02 156#define NOTE_DS7 2489.02f
157#define NOTE_E7 2637.02 157#define NOTE_E7 2637.02f
158#define NOTE_F7 2793.83 158#define NOTE_F7 2793.83f
159#define NOTE_FS7 2959.96 159#define NOTE_FS7 2959.96f
160#define NOTE_G7 3135.96 160#define NOTE_G7 3135.96f
161#define NOTE_GS7 3322.44 161#define NOTE_GS7 3322.44f
162#define NOTE_A7 3520.00 162#define NOTE_A7 3520.00f
163#define NOTE_AS7 3729.31 163#define NOTE_AS7 3729.31f
164#define NOTE_B7 3951.07 164#define NOTE_B7 3951.07f
165#define NOTE_C8 4186.01 165#define NOTE_C8 4186.01f
166#define NOTE_CS8 4434.92 166#define NOTE_CS8 4434.92f
167#define NOTE_D8 4698.64 167#define NOTE_D8 4698.64f
168#define NOTE_DS8 4978.03 168#define NOTE_DS8 4978.03f
169#define NOTE_E8 5274.04 169#define NOTE_E8 5274.04f
170#define NOTE_F8 5587.65 170#define NOTE_F8 5587.65f
171#define NOTE_FS8 5919.91 171#define NOTE_FS8 5919.91f
172#define NOTE_G8 6271.93 172#define NOTE_G8 6271.93f
173#define NOTE_GS8 6644.88 173#define NOTE_GS8 6644.88f
174#define NOTE_A8 7040.00 174#define NOTE_A8 7040.00f
175#define NOTE_AS8 7458.62 175#define NOTE_AS8 7458.62f
176#define NOTE_B8 7902.13 176#define NOTE_B8 7902.13f
177 177
178// Flat Aliases 178// Flat Aliases
179#define NOTE_DF0 NOTE_CS0 179#define NOTE_DF0 NOTE_CS0
diff --git a/quantum/audio/song_list.h b/quantum/audio/song_list.h
index 091f59e7a..4018f817c 100644
--- a/quantum/audio/song_list.h
+++ b/quantum/audio/song_list.h
@@ -53,6 +53,24 @@
53 E__NOTE(_CS4), E__NOTE(_B4), QD_NOTE(_AS4), \ 53 E__NOTE(_CS4), E__NOTE(_B4), QD_NOTE(_AS4), \
54 E__NOTE(_AS4), E__NOTE(_AS4), QD_NOTE(_B4), 54 E__NOTE(_AS4), E__NOTE(_AS4), QD_NOTE(_B4),
55 55
56#define CLUEBOARD_SOUND \
57 HD_NOTE(_C3), HD_NOTE(_D3), HD_NOTE(_E3), HD_NOTE(_F3), HD_NOTE(_G3), HD_NOTE(_A4), HD_NOTE(_B4), HD_NOTE(_C4)
58/*
59 HD_NOTE(_G3), HD_NOTE(_E3), HD_NOTE(_C3), \
60 Q__NOTE(_E3), Q__NOTE(_C3), Q__NOTE(_G3), \
61 Q__NOTE(_E3)
62*/
63/*
64 HD_NOTE(_C3), HD_NOTE(_G3), HD_NOTE(_E3), \
65 Q__NOTE(_G3), Q__NOTE(_E3), Q__NOTE(_G3), \
66 Q__NOTE(_F3)
67*/
68
69#define BASKET_CASE \
70 QD_NOTE(_G3), E__NOTE(_F3), E__NOTE(_E3), Q__NOTE(_F3), M__NOTE(_G3, 8+32), Q__NOTE(_REST), \
71 Q__NOTE(_B4), Q__NOTE(_C4), Q__NOTE(_B4), E__NOTE(_A4), Q__NOTE(_G3), M__NOTE(_G3, 8+32), Q__NOTE(_REST), \
72 Q__NOTE(_B4), Q__NOTE(_C4), Q__NOTE(_B4), E__NOTE(_A4), Q__NOTE(_G3), Q__NOTE(_G3), Q__NOTE(_G3), Q__NOTE(_G3), E__NOTE(_A4), E__NOTE(_C4), QD_NOTE(_B4), HD_NOTE(_B4)
73
56#define STARTUP_SOUND \ 74#define STARTUP_SOUND \
57 E__NOTE(_E6), \ 75 E__NOTE(_E6), \
58 E__NOTE(_A6), \ 76 E__NOTE(_A6), \