summary refs log tree commit diff
path: root/quantum
diff options
context:
space:
mode:
authorJack Humbert <jack.humb@gmail.com>2016-04-18 21:03:21 -0400
committerJack Humbert <jack.humb@gmail.com>2016-04-18 21:03:21 -0400
commitf2c1e9ddd40573f4b44ffc2ec7df1fb76346f627 (patch)
treeda477a9e67e16339267ee0946c3b253c612c7bbf /quantum
parentd94960be5b32b6a4019b822550ae09cf802bfcd7 (diff)
parent499e3096e9021b88a6a705ad7034ccbacb97b975 (diff)
Merge pull request #262 from IBNobody/master
Fixed keyboard snoring while asleep
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