summaryrefslogtreecommitdiff
path: root/quantum
diff options
context:
space:
mode:
Diffstat (limited to 'quantum')
-rw-r--r--quantum/audio.c15
-rw-r--r--quantum/audio.h2
-rw-r--r--quantum/keymap_common.c14
-rw-r--r--quantum/musical_notes.h5
-rw-r--r--quantum/song_list.h104
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(&note_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