diff options
| -rw-r--r-- | common_features.mk | 6 | ||||
| -rw-r--r-- | keyboards/clueboard/60/keymaps/default/keymap.c | 94 | ||||
| -rw-r--r-- | keyboards/clueboard/60/led.c | 9 | ||||
| -rw-r--r-- | keyboards/clueboard/60/matrix.c | 6 | ||||
| -rw-r--r-- | keyboards/clueboard/60/rules.mk | 2 | ||||
| -rw-r--r-- | quantum/audio/audio_arm.c | 1 | ||||
| -rw-r--r-- | quantum/audio/musical_notes.h | 226 | ||||
| -rw-r--r-- | quantum/audio/song_list.h | 18 | 
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)      OPT_DEFS += -DAUDIO_ENABLE      MUSIC_ENABLE := 1      SRC += $(QUANTUM_DIR)/process_keycode/process_audio.c -    SRC += $(QUANTUM_DIR)/audio/audio.c +    ifeq ($(PLATFORM),AVR) +        SRC += $(QUANTUM_DIR)/audio/audio.c +    else +        SRC += $(QUANTUM_DIR)/audio/audio_arm.c +    endif      SRC += $(QUANTUM_DIR)/audio/voices.c      SRC += $(QUANTUM_DIR)/audio/luts.c  endif 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 @@  #define _______ KC_TRNS  enum keyboard_layers { -  _BL, -  _FL, -  _CL +    _BL, +    _FL, +    _CL  }; +enum custom_keycodes { +    S_BSKTC = SAFE_RANGE, +    S_ODEJY, +    S_RCKBY, +    S_DOEDR, +    S_SCALE, +    S_ONEUP, +    S_COIN, +    S_SONIC, +    S_ZELDA +}; + +#ifdef AUDIO_ENABLE +  float song_basketcase[][2] = SONG(BASKET_CASE); +  float song_ode_to_joy[][2]  = SONG(ODE_TO_JOY); +  float song_rock_a_bye_baby[][2]  = SONG(ROCK_A_BYE_BABY); +  float song_doe_a_deer[][2]  = SONG(DOE_A_DEER); +  float song_scale[][2]  = SONG(MUSIC_SCALE_SOUND); +  float song_coin[][2]  = SONG(COIN_SOUND); +  float song_one_up[][2]  = SONG(ONE_UP_SOUND); +  float song_sonic_ring[][2]  = SONG(SONIC_RING); +  float song_zelda_puzzle[][2]  = SONG(ZELDA_PUZZLE); +#endif +  const uint16_t keymaps[][MATRIX_ROWS][MATRIX_COLS] = {      /* Layer 0: Default Layer       * ,-----------------------------------------------------------. @@ -33,11 +57,71 @@ const uint16_t keymaps[][MATRIX_ROWS][MATRIX_COLS] = {        _______,   _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,     \        _______,     _______,MO(_CL),_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,  _______, \        _______,  _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,  _______,   _______, \ -      _______,  _______,  _______,                        _______,                     _______,  _______,  MO(_FL),   _______), +      _______,_______,_______,                        _______,                     _______,  _______,  MO(_FL),   _______),      [_CL] = KEYMAP( -      BL_STEP,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,\ +      BL_STEP,S_BSKTC,S_ODEJY,S_RCKBY,S_DOEDR,S_SCALE,S_ONEUP,S_COIN, S_SONIC,S_ZELDA,_______,_______,_______,_______,_______,\        _______,   _______,_______,_______,RESET,  _______,_______,_______,_______,_______,_______,_______,_______,_______,     \        _______,     _______,MO(_CL),_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,  _______, \        _______,  _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,     _______, \        _______,  _______,  _______,                        _______,                     _______,  _______,  MO(_FL),   _______)  }; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { +    switch (keycode) { +        case S_BSKTC: +            if (record->event.pressed) { +                stop_all_notes(); +                PLAY_SONG(song_basketcase); +            } +            return false; +        case S_ODEJY: +            if (record->event.pressed) { +                stop_all_notes(); +                PLAY_SONG(song_ode_to_joy); +            } +            return false; +        case S_RCKBY: +            if (record->event.pressed) { +                stop_all_notes(); +                PLAY_SONG(song_rock_a_bye_baby); +            } +            return false; +        case S_DOEDR: +            if (record->event.pressed) { +                stop_all_notes(); +                PLAY_SONG(song_doe_a_deer); +            } +            return false; +        case S_SCALE: +            if (record->event.pressed) { +                stop_all_notes(); +                PLAY_SONG(song_scale); +            } +            return false; +        case S_ONEUP: +            if (record->event.pressed) { +                stop_all_notes(); +                PLAY_SONG(song_one_up); +            } +            return false; +        case S_COIN: +            if (record->event.pressed) { +                stop_all_notes(); +                PLAY_SONG(song_coin); +            } +            return false; +        case S_SONIC: +            if (record->event.pressed) { +                stop_all_notes(); +                PLAY_SONG(song_sonic_ring); +            } +            return false; +        case S_ZELDA: +            if (record->event.pressed) { +                stop_all_notes(); +                PLAY_SONG(song_zelda_puzzle); +            } +            return false; +    } +    return true; +} 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 @@  void backlight_init_ports(void) {      printf("backlight_init_ports()\n");      #ifdef BACKLIGHT_ENABLE -    palSetPadMode(GPIOB, 8,  PAL_MODE_OUTPUT_PUSHPULL); +    palSetPadMode(GPIOB, 8, PAL_MODE_OUTPUT_PUSHPULL);      palSetPad(GPIOB, 8);      #endif  } @@ -41,13 +41,8 @@ void backlight_set(uint8_t level) {      #endif  } -void led_init_ports() { -    printf("led_init_ports()\n"); -    palSetPadMode(GPIOB, 7,  PAL_MODE_OUTPUT_PUSHPULL); -} -  void led_set_kb(uint8_t usb_led) { -    printf("led_init_ports()\n"); +    printf("led_set_kb(%d)\n", usb_led);      if (usb_led & (1<<USB_LED_CAPS_LOCK)) {          // Turn capslock on          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) {      memset(matrix, 0, MATRIX_ROWS * sizeof(matrix_row_t));      memset(matrix_debouncing, 0, MATRIX_COLS * sizeof(matrix_row_t)); -    /* Setup capslock */ -    // palSetPadMode(GPIOB, 7,  PAL_MODE_OUTPUT_PUSHPULL); -    // palClearPad(GPIOB, 7); - +    palClearPad(GPIOB, 7);  // Turn off capslock      matrix_init_quantum();  } @@ -138,6 +135,7 @@ uint8_t matrix_scan(void) {              debouncing_time = timer_read();          }      } +      if (debouncing && timer_elapsed(debouncing_time) > DEBOUNCE) {          for (int row = 0; row < MATRIX_ROWS; row++) {              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  #SLEEP_LED_ENABLE = yes  # Breathing sleep LED during USB suspend  NKRO_ENABLE = yes	    # USB Nkey Rollover  CUSTOM_MATRIX = yes # Custom matrix file -#AUDIO_ENABLE = yes +AUDIO_ENABLE = yes  # 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 @@  #include "ch.h"  #include "hal.h" -#include <stdio.h>  #include <string.h>  #include "print.h"  #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 @@  // Note Timbre  // Changes how the notes sound -#define TIMBRE_12       0.125 -#define TIMBRE_25       0.250 -#define TIMBRE_50       0.500 -#define TIMBRE_75       0.750 +#define TIMBRE_12       0.125f +#define TIMBRE_25       0.250f +#define TIMBRE_50       0.500f +#define TIMBRE_75       0.750f  #define TIMBRE_DEFAULT  TIMBRE_50  // Notes - # = Octave -#define NOTE_REST         0.00 +#define NOTE_REST         0.00f  /* These notes are currently bugged -#define NOTE_C0          16.35 -#define NOTE_CS0         17.32 -#define NOTE_D0          18.35 -#define NOTE_DS0         19.45 -#define NOTE_E0          20.60 -#define NOTE_F0          21.83 -#define NOTE_FS0         23.12 -#define NOTE_G0          24.50 -#define NOTE_GS0         25.96 -#define NOTE_A0          27.50 -#define NOTE_AS0         29.14 -#define NOTE_B0          30.87 -#define NOTE_C1          32.70 -#define NOTE_CS1         34.65 -#define NOTE_D1          36.71 -#define NOTE_DS1         38.89 -#define NOTE_E1          41.20 -#define NOTE_F1          43.65 -#define NOTE_FS1         46.25 -#define NOTE_G1          49.00 -#define NOTE_GS1         51.91 -#define NOTE_A1          55.00 -#define NOTE_AS1         58.27 +#define NOTE_C0          16.35f +#define NOTE_CS0         17.32f +#define NOTE_D0          18.35f +#define NOTE_DS0         19.45f +#define NOTE_E0          20.60f +#define NOTE_F0          21.83f +#define NOTE_FS0         23.12f +#define NOTE_G0          24.50f +#define NOTE_GS0         25.96f +#define NOTE_A0          27.50f +#define NOTE_AS0         29.14f +#define NOTE_B0          30.87f +#define NOTE_C1          32.70f +#define NOTE_CS1         34.65f +#define NOTE_D1          36.71f +#define NOTE_DS1         38.89f +#define NOTE_E1          41.20f +#define NOTE_F1          43.65f +#define NOTE_FS1         46.25f +#define NOTE_G1          49.00f +#define NOTE_GS1         51.91f +#define NOTE_A1          55.00f +#define NOTE_AS1         58.27f  */ -#define NOTE_B1          61.74 -#define NOTE_C2          65.41 -#define NOTE_CS2         69.30 -#define NOTE_D2          73.42 -#define NOTE_DS2         77.78 -#define NOTE_E2          82.41 -#define NOTE_F2          87.31 -#define NOTE_FS2         92.50 -#define NOTE_G2          98.00 -#define NOTE_GS2        103.83 -#define NOTE_A2         110.00 -#define NOTE_AS2        116.54 -#define NOTE_B2         123.47 -#define NOTE_C3         130.81 -#define NOTE_CS3        138.59 -#define NOTE_D3         146.83 -#define NOTE_DS3        155.56 -#define NOTE_E3         164.81 -#define NOTE_F3         174.61 -#define NOTE_FS3        185.00 -#define NOTE_G3         196.00 -#define NOTE_GS3        207.65 -#define NOTE_A3         220.00 -#define NOTE_AS3        233.08 -#define NOTE_B3         246.94 -#define NOTE_C4         261.63 -#define NOTE_CS4        277.18 -#define NOTE_D4         293.66 -#define NOTE_DS4        311.13 -#define NOTE_E4         329.63 -#define NOTE_F4         349.23 -#define NOTE_FS4        369.99 -#define NOTE_G4         392.00 -#define NOTE_GS4        415.30 -#define NOTE_A4         440.00 -#define NOTE_AS4        466.16 -#define NOTE_B4         493.88 -#define NOTE_C5         523.25 -#define NOTE_CS5        554.37 -#define NOTE_D5         587.33 -#define NOTE_DS5        622.25 -#define NOTE_E5         659.26 -#define NOTE_F5         698.46 -#define NOTE_FS5        739.99 -#define NOTE_G5         783.99 -#define NOTE_GS5        830.61 -#define NOTE_A5         880.00 -#define NOTE_AS5        932.33 -#define NOTE_B5         987.77 -#define NOTE_C6        1046.50 -#define NOTE_CS6       1108.73 -#define NOTE_D6        1174.66 -#define NOTE_DS6       1244.51 -#define NOTE_E6        1318.51 -#define NOTE_F6        1396.91 -#define NOTE_FS6       1479.98 -#define NOTE_G6        1567.98 -#define NOTE_GS6       1661.22 -#define NOTE_A6        1760.00 -#define NOTE_AS6       1864.66 -#define NOTE_B6        1975.53 -#define NOTE_C7        2093.00 -#define NOTE_CS7       2217.46 -#define NOTE_D7        2349.32 -#define NOTE_DS7       2489.02 -#define NOTE_E7        2637.02 -#define NOTE_F7        2793.83 -#define NOTE_FS7       2959.96 -#define NOTE_G7        3135.96 -#define NOTE_GS7       3322.44 -#define NOTE_A7        3520.00 -#define NOTE_AS7       3729.31 -#define NOTE_B7        3951.07 -#define NOTE_C8        4186.01 -#define NOTE_CS8       4434.92 -#define NOTE_D8        4698.64 -#define NOTE_DS8       4978.03 -#define NOTE_E8        5274.04 -#define NOTE_F8        5587.65 -#define NOTE_FS8       5919.91 -#define NOTE_G8        6271.93 -#define NOTE_GS8       6644.88 -#define NOTE_A8        7040.00 -#define NOTE_AS8       7458.62 -#define NOTE_B8        7902.13 +#define NOTE_B1          61.74f +#define NOTE_C2          65.41f +#define NOTE_CS2         69.30f +#define NOTE_D2          73.42f +#define NOTE_DS2         77.78f +#define NOTE_E2          82.41f +#define NOTE_F2          87.31f +#define NOTE_FS2         92.50f +#define NOTE_G2          98.00f +#define NOTE_GS2        103.83f +#define NOTE_A2         110.00f +#define NOTE_AS2        116.54f +#define NOTE_B2         123.47f +#define NOTE_C3         130.81f +#define NOTE_CS3        138.59f +#define NOTE_D3         146.83f +#define NOTE_DS3        155.56f +#define NOTE_E3         164.81f +#define NOTE_F3         174.61f +#define NOTE_FS3        185.00f +#define NOTE_G3         196.00f +#define NOTE_GS3        207.65f +#define NOTE_A3         220.00f +#define NOTE_AS3        233.08f +#define NOTE_B3         246.94f +#define NOTE_C4         261.63f +#define NOTE_CS4        277.18f +#define NOTE_D4         293.66f +#define NOTE_DS4        311.13f +#define NOTE_E4         329.63f +#define NOTE_F4         349.23f +#define NOTE_FS4        369.99f +#define NOTE_G4         392.00f +#define NOTE_GS4        415.30f +#define NOTE_A4         440.00f +#define NOTE_AS4        466.16f +#define NOTE_B4         493.88f +#define NOTE_C5         523.25f +#define NOTE_CS5        554.37f +#define NOTE_D5         587.33f +#define NOTE_DS5        622.25f +#define NOTE_E5         659.26f +#define NOTE_F5         698.46f +#define NOTE_FS5        739.99f +#define NOTE_G5         783.99f +#define NOTE_GS5        830.61f +#define NOTE_A5         880.00f +#define NOTE_AS5        932.33f +#define NOTE_B5         987.77f +#define NOTE_C6        1046.50f +#define NOTE_CS6       1108.73f +#define NOTE_D6        1174.66f +#define NOTE_DS6       1244.51f +#define NOTE_E6        1318.51f +#define NOTE_F6        1396.91f +#define NOTE_FS6       1479.98f +#define NOTE_G6        1567.98f +#define NOTE_GS6       1661.22f +#define NOTE_A6        1760.00f +#define NOTE_AS6       1864.66f +#define NOTE_B6        1975.53f +#define NOTE_C7        2093.00f +#define NOTE_CS7       2217.46f +#define NOTE_D7        2349.32f +#define NOTE_DS7       2489.02f +#define NOTE_E7        2637.02f +#define NOTE_F7        2793.83f +#define NOTE_FS7       2959.96f +#define NOTE_G7        3135.96f +#define NOTE_GS7       3322.44f +#define NOTE_A7        3520.00f +#define NOTE_AS7       3729.31f +#define NOTE_B7        3951.07f +#define NOTE_C8        4186.01f +#define NOTE_CS8       4434.92f +#define NOTE_D8        4698.64f +#define NOTE_DS8       4978.03f +#define NOTE_E8        5274.04f +#define NOTE_F8        5587.65f +#define NOTE_FS8       5919.91f +#define NOTE_G8        6271.93f +#define NOTE_GS8       6644.88f +#define NOTE_A8        7040.00f +#define NOTE_AS8       7458.62f +#define NOTE_B8        7902.13f  // Flat Aliases  #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 @@      E__NOTE(_CS4), E__NOTE(_B4),  QD_NOTE(_AS4), \      E__NOTE(_AS4), E__NOTE(_AS4), QD_NOTE(_B4), +#define CLUEBOARD_SOUND \ +    HD_NOTE(_C3), HD_NOTE(_D3), HD_NOTE(_E3), HD_NOTE(_F3), HD_NOTE(_G3), HD_NOTE(_A4), HD_NOTE(_B4), HD_NOTE(_C4) +/* +    HD_NOTE(_G3), HD_NOTE(_E3), HD_NOTE(_C3), \ +    Q__NOTE(_E3), Q__NOTE(_C3), Q__NOTE(_G3), \ +    Q__NOTE(_E3) +*/ +/* +    HD_NOTE(_C3), HD_NOTE(_G3), HD_NOTE(_E3), \ +    Q__NOTE(_G3), Q__NOTE(_E3), Q__NOTE(_G3), \ +    Q__NOTE(_F3) +*/ + +#define BASKET_CASE \ +    QD_NOTE(_G3), E__NOTE(_F3), E__NOTE(_E3), Q__NOTE(_F3), M__NOTE(_G3, 8+32), Q__NOTE(_REST), \ +    Q__NOTE(_B4), Q__NOTE(_C4), Q__NOTE(_B4), E__NOTE(_A4), Q__NOTE(_G3), M__NOTE(_G3, 8+32), Q__NOTE(_REST), \ +    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) +  #define STARTUP_SOUND  \      E__NOTE(_E6),     \      E__NOTE(_A6),     \  | 
