diff options
Diffstat (limited to 'quantum')
| -rw-r--r-- | quantum/audio.c | 15 | ||||
| -rw-r--r-- | quantum/audio.h | 2 | ||||
| -rw-r--r-- | quantum/keymap_common.c | 14 | ||||
| -rw-r--r-- | quantum/musical_notes.h | 5 | ||||
| -rw-r--r-- | quantum/song_list.h | 104 | 
5 files changed, 117 insertions, 23 deletions
| diff --git a/quantum/audio.c b/quantum/audio.c index e0413051a0..627e3d80a1 100644 --- a/quantum/audio.c +++ b/quantum/audio.c @@ -351,6 +351,7 @@ void play_notes(float (*np)[][2], uint8_t n_count, bool n_repeat, float n_rest)  if (audio_config.enable) { +	// Cancel note if a note is playing      if (note)          stop_all_notes();      notes = true; @@ -406,6 +407,7 @@ void play_note(double freq, int vol) {  if (audio_config.enable && voices < 8) { +    // Cancel notes if notes are playing      if (notes)          stop_all_notes();      note = true; @@ -471,3 +473,16 @@ void increase_tempo(uint8_t tempo_change)  		}  } +//------------------------------------------------------------------------------ +// Override these functions in your keymap file to play different tunes on +// startup and bootloader jump +__attribute__ ((weak)) +void play_startup_tone() +{ +} + +__attribute__ ((weak)) +void play_goodbye_tone() +{ +} +//------------------------------------------------------------------------------ diff --git a/quantum/audio.h b/quantum/audio.h index 05d314c940..44cafccd68 100644 --- a/quantum/audio.h +++ b/quantum/audio.h @@ -44,5 +44,7 @@ void decrease_tempo(uint8_t tempo_change);  #define NOTE_ARRAY_SIZE(x) ((int)(sizeof(x) / (sizeof(x[0]))))  #define PLAY_NOTE_ARRAY(note_array, note_repeat, note_rest_style) play_notes(¬e_array, NOTE_ARRAY_SIZE((note_array)), (note_repeat), (note_rest_style)); +void play_goodbye_tone(void); +void play_startup_tone(void);  #endif
\ No newline at end of file diff --git a/quantum/keymap_common.c b/quantum/keymap_common.c index 2001438b90..4ee290ad03 100644 --- a/quantum/keymap_common.c +++ b/quantum/keymap_common.c @@ -34,12 +34,6 @@ extern keymap_config_t keymap_config;  #include <inttypes.h>  #ifdef AUDIO_ENABLE      #include "audio.h" - -    #ifndef TONE_GOODBYE -    	#define TONE_GOODBYE OLKB_GOODBYE -    #endif /*! TONE_GOODBYE */ - -    float tone_goodbye[][2] = SONG(TONE_GOODBYE);  #endif /* AUDIO_ENABLE */  static action_t keycode_to_action(uint16_t keycode); @@ -47,7 +41,7 @@ static action_t keycode_to_action(uint16_t keycode);  /* converts key to action */  action_t action_for_key(uint8_t layer, keypos_t key)  { -	// 16bit keycodes - important +    // 16bit keycodes - important      uint16_t keycode = keymap_key_to_keycode(layer, key);      switch (keycode) { @@ -190,7 +184,7 @@ static action_t keycode_to_action(uint16_t keycode)          case RESET: ; // RESET is 0x5000, which is why this is here              clear_keyboard();              #ifdef AUDIO_ENABLE -                PLAY_NOTE_ARRAY(tone_goodbye, false, 0); +                play_goodbye_tone();              #endif              _delay_ms(250);              #ifdef ATREUS_ASTAR @@ -303,7 +297,7 @@ static action_t keycode_to_action(uint16_t keycode)  /* translates key to keycode */  uint16_t keymap_key_to_keycode(uint8_t layer, keypos_t key)  { -	// Read entire word (16bits) +    // Read entire word (16bits)      return pgm_read_word(&keymaps[(layer)][(key.row)][(key.col)]);  } @@ -315,7 +309,7 @@ action_t keymap_fn_to_action(uint16_t keycode)  action_t keymap_func_to_action(uint16_t keycode)  { -	// For FUNC without 8bit limit +    // For FUNC without 8bit limit      return (action_t){ .code = pgm_read_word(&fn_actions[(int)keycode]) };  } diff --git a/quantum/musical_notes.h b/quantum/musical_notes.h index ccdc34f270..b08d16a6fa 100644 --- a/quantum/musical_notes.h +++ b/quantum/musical_notes.h @@ -51,7 +51,10 @@  // Notes - # = Octave +  #define NOTE_REST         0.00 + +/* These notes are currently bugged  #define NOTE_C0          16.35  #define NOTE_CS0         17.32  #define NOTE_D0          18.35 @@ -75,6 +78,8 @@  #define NOTE_GS1         51.91  #define NOTE_A1          55.00  #define NOTE_AS1         58.27 +*/ +  #define NOTE_B1          61.74  #define NOTE_C2          65.41  #define NOTE_CS2         69.30 diff --git a/quantum/song_list.h b/quantum/song_list.h index b626c3fa6b..e992bd18a2 100644 --- a/quantum/song_list.h +++ b/quantum/song_list.h @@ -4,20 +4,98 @@  #define SONG_LIST_H  #define ODE_TO_JOY                                          \ -	Q__NOTE(_E4), Q__NOTE(_E4), Q__NOTE(_F4), Q__NOTE(_G4), \ -	Q__NOTE(_G4), Q__NOTE(_F4), Q__NOTE(_E4), Q__NOTE(_D4), \ -	Q__NOTE(_C4), Q__NOTE(_C4), Q__NOTE(_D4), Q__NOTE(_E4), \ -	QD_NOTE(_E4), E__NOTE(_D4), H__NOTE(_D4), +    Q__NOTE(_E4), Q__NOTE(_E4), Q__NOTE(_F4), Q__NOTE(_G4), \ +    Q__NOTE(_G4), Q__NOTE(_F4), Q__NOTE(_E4), Q__NOTE(_D4), \ +    Q__NOTE(_C4), Q__NOTE(_C4), Q__NOTE(_D4), Q__NOTE(_E4), \ +    QD_NOTE(_E4), E__NOTE(_D4), H__NOTE(_D4),  #define ROCK_A_BYE_BABY                            \ -	QD_NOTE(_B4), E__NOTE(_D4), Q__NOTE(_B5),      \ -	H__NOTE(_A5), Q__NOTE(_G5),                    \ -	QD_NOTE(_B4), E__NOTE(_D5), Q__NOTE(_G5),      \ -	H__NOTE(_FS5), - -#define OLKB_GOODBYE \ -	E__NOTE(_E7),    \ -	E__NOTE(_A6),    \ -	ED_NOTE(_E6), +    QD_NOTE(_B4), E__NOTE(_D4), Q__NOTE(_B5),      \ +    H__NOTE(_A5), Q__NOTE(_G5),                    \ +    QD_NOTE(_B4), E__NOTE(_D5), Q__NOTE(_G5),      \ +    H__NOTE(_FS5), + +#define CLOSE_ENCOUNTERS_5_NOTE  \ +	Q__NOTE(_D5),                \ +	Q__NOTE(_E5),                \ +	Q__NOTE(_C5),                \ +	Q__NOTE(_C4),                \ +	Q__NOTE(_G4), + +#define DOE_A_DEER              \ +	QD_NOTE(_C4), E__NOTE(_D4), \ +	QD_NOTE(_E4), E__NOTE(_C4), \ +	Q__NOTE(_E4), Q__NOTE(_C4), \ +	Q__NOTE(_E4), + +#define GOODBYE_SOUND \ +    E__NOTE(_E7),     \ +    E__NOTE(_A6),     \ +    ED_NOTE(_E6), + +#define STARTUP_SOUND  \ +    ED_NOTE(_E7 ),     \ +    E__NOTE(_CS7),     \ +    E__NOTE(_E6 ),     \ +    E__NOTE(_A6 ),     \ +    M__NOTE(_CS7, 20), + +#define QWERTY_SOUND \ +    E__NOTE(_GS6 ),  \ +    E__NOTE(_A6  ),  \ +    S__NOTE(_REST),  \ +    Q__NOTE(_E7  ), + +#define COLEMAK_SOUND \ +    E__NOTE(_GS6 ),   \ +    E__NOTE(_A6  ),   \ +    S__NOTE(_REST),   \ +    ED_NOTE(_E7  ),   \ +    S__NOTE(_REST),   \ +    ED_NOTE(_GS7 ), + +#define DVORAK_SOUND \ +    E__NOTE(_GS6 ),  \ +    E__NOTE(_A6  ),  \ +    S__NOTE(_REST),  \ +    E__NOTE(_E7  ),  \ +    S__NOTE(_REST),  \ +    E__NOTE(_FS7 ),  \ +    S__NOTE(_REST),  \ +    E__NOTE(_E7  ), + +#define MUSIC_SCALE_SOUND \ +    E__NOTE(_A5 ),        \ +    E__NOTE(_B5 ),        \ +    E__NOTE(_CS6),        \ +    E__NOTE(_D6 ),        \ +    E__NOTE(_E6 ),        \ +    E__NOTE(_FS6),        \ +    E__NOTE(_GS6),        \ +    E__NOTE(_A6 ), + +#define CAPS_LOCK_ON_SOUND \ +    E__NOTE(_A3),          \ +    E__NOTE(_B3), + +#define CAPS_LOCK_OFF_SOUND \ +    E__NOTE(_B3),           \ +    E__NOTE(_A3), + +#define SCROLL_LOCK_ON_SOUND \ +    E__NOTE(_D4),            \ +    E__NOTE(_E4), + +#define SCROLL_LOCK_OFF_SOUND \ +    E__NOTE(_E4),             \ +    E__NOTE(_D4), + +#define NUM_LOCK_ON_SOUND \ +    E__NOTE(_D5),         \ +    E__NOTE(_E5), + +#define NUM_LOCK_OFF_SOUND \ +    E__NOTE(_E5),          \ +    E__NOTE(_D5),  #endif | 
