]> git.donarmstrong.com Git - qmk_firmware.git/commitdiff
Adding folding to #if, etc
authorIBNobody <ibnobody@gmail.com>
Sun, 17 Apr 2016 05:24:58 +0000 (00:24 -0500)
committerIBNobody <ibnobody@gmail.com>
Sun, 17 Apr 2016 05:24:58 +0000 (00:24 -0500)
keyboard/atomic/keymaps/pvc/keymap.c
quantum/audio.c
quantum/musical_notes.h
quantum/song_list.h [new file with mode: 0644]

index c2081f525e2718a698b3edc9b7444e7c92fd845e..9a2c57cb18c9151a682a0fed02667cda96dc5ec6 100644 (file)
@@ -3,7 +3,7 @@
 
 #ifdef AUDIO_ENABLE
 #include "audio.h"
-#include "musical_notes.h"
+#include "song_list.h"
 #endif
 
 
@@ -75,140 +75,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  },
 };
 
-
-#ifdef AUDIO_ENABLE
-
-
-
-
-float tone_lw[][2] = {
-/*
-Q_NOTE(_C1   ) ,
-Q_NOTE(_CS1  ) ,
-Q_NOTE(_D1   ) ,
-Q_NOTE(_DS1  ) ,
-Q_NOTE(_E1   ) ,
-Q_NOTE(_F1   ) ,
-Q_NOTE(_FS1  ) ,
-Q_NOTE(_G1   ) ,
-Q_NOTE(_GS1  ) ,
-Q_NOTE(_A1   ) ,
-Q_NOTE(_AS1  ) ,
-Q_NOTE(_B1   ) ,
-*/
-
-Q_NOTE(_C4   ) ,
-Q_NOTE(_CS4  ) ,
-Q_NOTE(_D4   ) ,
-Q_NOTE(_DS4  ) ,
-Q_NOTE(_E4   ) ,
-Q_NOTE(_F4   ) ,
-Q_NOTE(_FS4  ) ,
-Q_NOTE(_G4   ) ,
-Q_NOTE(_GS4  ) ,
-Q_NOTE(_A4   ) ,
-Q_NOTE(_AS4  ) ,
-Q_NOTE(_B1   ) ,
-
-
-Q_NOTE(_C2   ) ,
-Q_NOTE(_CS2  ) ,
-Q_NOTE(_D2   ) ,
-Q_NOTE(_DS2  ) ,
-Q_NOTE(_E2   ) ,
-Q_NOTE(_F2   ) ,
-Q_NOTE(_FS2  ) ,
-Q_NOTE(_G2   ) ,
-Q_NOTE(_GS2  ) ,
-Q_NOTE(_A2   ) ,
-Q_NOTE(_AS2  ) ,
-Q_NOTE(_B2   ) ,
-Q_NOTE(_C3   ) ,
-Q_NOTE(_CS3  ) ,
-Q_NOTE(_D3   ) ,
-Q_NOTE(_DS3  ) ,
-Q_NOTE(_E3   ) ,
-Q_NOTE(_F3   ) ,
-Q_NOTE(_FS3  ) ,
-Q_NOTE(_G3   ) ,
-Q_NOTE(_GS3  ) ,
-Q_NOTE(_A3   ) ,
-Q_NOTE(_AS3  ) ,
-Q_NOTE(_B3   ) ,
-Q_NOTE(_C4   ) ,
-Q_NOTE(_CS4  ) ,
-Q_NOTE(_D4   ) ,
-Q_NOTE(_DS4  ) ,
-Q_NOTE(_E4   ) ,
-Q_NOTE(_F4   ) ,
-Q_NOTE(_FS4  ) ,
-Q_NOTE(_G4   ) ,
-Q_NOTE(_GS4  ) ,
-Q_NOTE(_A4   ) ,
-Q_NOTE(_AS4  ) ,
-Q_NOTE(_B4   ) ,
-Q_NOTE(_C5   ) ,
-Q_NOTE(_CS5  ) ,
-Q_NOTE(_D5   ) ,
-Q_NOTE(_DS5  ) ,
-Q_NOTE(_E5   ) ,
-Q_NOTE(_F5   ) ,
-Q_NOTE(_FS5  ) ,
-Q_NOTE(_G5   ) ,
-Q_NOTE(_GS5  ) ,
-Q_NOTE(_A5   ) ,
-Q_NOTE(_AS5  ) ,
-Q_NOTE(_B5   ) ,
-Q_NOTE(_C6   ) ,
-Q_NOTE(_CS6  ) ,
-Q_NOTE(_D6   ) ,
-Q_NOTE(_DS6  ) ,
-Q_NOTE(_E6   ) ,
-Q_NOTE(_F6   ) ,
-Q_NOTE(_FS6  ) ,
-Q_NOTE(_G6   ) ,
-Q_NOTE(_GS6  ) ,
-Q_NOTE(_A6   ) ,
-Q_NOTE(_AS6  ) ,
-Q_NOTE(_B6   ) ,
-Q_NOTE(_C7   ) ,
-Q_NOTE(_CS7  ) ,
-Q_NOTE(_D7   ) ,
-Q_NOTE(_DS7  ) ,
-Q_NOTE(_E7   ) ,
-Q_NOTE(_F7   ) ,
-Q_NOTE(_FS7  ) ,
-Q_NOTE(_G7   ) ,
-Q_NOTE(_GS7  ) ,
-Q_NOTE(_A7   ) ,
-Q_NOTE(_AS7  ) ,
-Q_NOTE(_B7   ) ,
-Q_NOTE(_C8   ) ,
-Q_NOTE(_CS8  ) ,
-Q_NOTE(_D8   ) ,
-Q_NOTE(_DS8  ) ,
-Q_NOTE(_E8   ) ,
-Q_NOTE(_F8   ) ,
-Q_NOTE(_FS8  ) ,
-Q_NOTE(_G8   ) ,
-Q_NOTE(_GS8  ) ,
-Q_NOTE(_A8   ) ,
-Q_NOTE(_AS8  ) ,
-Q_NOTE(_B8   ) ,
-
-};
-
-float tone_rs[][2] = {
-Q_NOTE(_A4   ) ,
-Q_NOTE(_A4   ) ,
-Q_NOTE(_A4   ) ,
-Q_NOTE(_A4   ) ,
-Q_NOTE(_AS8  ) ,
-Q_NOTE(_B8   ) ,
-};
-
-#endif
-
 void update_quad_layer(uint8_t layer1, uint8_t layer2, uint8_t layer3, uint8_t layer4, bool order)
 {
        if (order)
@@ -241,7 +107,6 @@ void update_quad_layer(uint8_t layer1, uint8_t layer2, uint8_t layer3, uint8_t l
 const uint16_t PROGMEM fn_actions[] = {
 };
 
-//#define MUSIC_ARRAY_SIZE(x) (((int)(sizeof(x) / (sizeof(x[0][0])))) / 2)
 
 const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
 {
@@ -280,30 +145,140 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
     return MACRO_NONE;
 };
 
+
+
 #ifdef AUDIO_ENABLE
-float start_up[][2] = {
-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   ) ,
-H_NOTE(_E4   ) ,
-Q_NOTE(_D4   ) ,
-H_NOTE(_D4   ) ,
+
+float start_up[][2] = SONG(ODE_TO_JOY);
+
+float tone_lw[][2] = {
+       /*
+       Q__NOTE(_C1   ) ,
+       Q__NOTE(_CS1  ) ,
+       Q__NOTE(_D1   ) ,
+       Q__NOTE(_DS1  ) ,
+       Q__NOTE(_E1   ) ,
+       Q__NOTE(_F1   ) ,
+       Q__NOTE(_FS1  ) ,
+       Q__NOTE(_G1   ) ,
+       Q__NOTE(_GS1  ) ,
+       Q__NOTE(_A1   ) ,
+       Q__NOTE(_AS1  ) ,
+       Q__NOTE(_B1   ) ,
+       */
+
+       Q__NOTE(_C4   ) ,
+       Q__NOTE(_CS4  ) ,
+       Q__NOTE(_D4   ) ,
+       Q__NOTE(_DS4  ) ,
+       Q__NOTE(_E4   ) ,
+       Q__NOTE(_F4   ) ,
+       Q__NOTE(_FS4  ) ,
+       Q__NOTE(_G4   ) ,
+       Q__NOTE(_GS4  ) ,
+       Q__NOTE(_A4   ) ,
+       Q__NOTE(_AS4  ) ,
+       Q__NOTE(_B1   ) ,
+
+       Q__NOTE(_C2   ) ,
+       Q__NOTE(_CS2  ) ,
+       Q__NOTE(_D2   ) ,
+       Q__NOTE(_DS2  ) ,
+       Q__NOTE(_E2   ) ,
+       Q__NOTE(_F2   ) ,
+       Q__NOTE(_FS2  ) ,
+       Q__NOTE(_G2   ) ,
+       Q__NOTE(_GS2  ) ,
+       Q__NOTE(_A2   ) ,
+       Q__NOTE(_AS2  ) ,
+       Q__NOTE(_B2   ) ,
+       Q__NOTE(_C3   ) ,
+       Q__NOTE(_CS3  ) ,
+       Q__NOTE(_D3   ) ,
+       Q__NOTE(_DS3  ) ,
+       Q__NOTE(_E3   ) ,
+       Q__NOTE(_F3   ) ,
+       Q__NOTE(_FS3  ) ,
+       Q__NOTE(_G3   ) ,
+       Q__NOTE(_GS3  ) ,
+       Q__NOTE(_A3   ) ,
+       Q__NOTE(_AS3  ) ,
+       Q__NOTE(_B3   ) ,
+       Q__NOTE(_C4   ) ,
+       Q__NOTE(_CS4  ) ,
+       Q__NOTE(_D4   ) ,
+       Q__NOTE(_DS4  ) ,
+       Q__NOTE(_E4   ) ,
+       Q__NOTE(_F4   ) ,
+       Q__NOTE(_FS4  ) ,
+       Q__NOTE(_G4   ) ,
+       Q__NOTE(_GS4  ) ,
+       Q__NOTE(_A4   ) ,
+       Q__NOTE(_AS4  ) ,
+       Q__NOTE(_B4   ) ,
+       Q__NOTE(_C5   ) ,
+       Q__NOTE(_CS5  ) ,
+       Q__NOTE(_D5   ) ,
+       Q__NOTE(_DS5  ) ,
+       Q__NOTE(_E5   ) ,
+       Q__NOTE(_F5   ) ,
+       Q__NOTE(_FS5  ) ,
+       Q__NOTE(_G5   ) ,
+       Q__NOTE(_GS5  ) ,
+       Q__NOTE(_A5   ) ,
+       Q__NOTE(_AS5  ) ,
+       Q__NOTE(_B5   ) ,
+       Q__NOTE(_C6   ) ,
+       Q__NOTE(_CS6  ) ,
+       Q__NOTE(_D6   ) ,
+       Q__NOTE(_DS6  ) ,
+       Q__NOTE(_E6   ) ,
+       Q__NOTE(_F6   ) ,
+       Q__NOTE(_FS6  ) ,
+       Q__NOTE(_G6   ) ,
+       Q__NOTE(_GS6  ) ,
+       Q__NOTE(_A6   ) ,
+       Q__NOTE(_AS6  ) ,
+       Q__NOTE(_B6   ) ,
+       Q__NOTE(_C7   ) ,
+       Q__NOTE(_CS7  ) ,
+       Q__NOTE(_D7   ) ,
+       Q__NOTE(_DS7  ) ,
+       Q__NOTE(_E7   ) ,
+       Q__NOTE(_F7   ) ,
+       Q__NOTE(_FS7  ) ,
+       Q__NOTE(_G7   ) ,
+       Q__NOTE(_GS7  ) ,
+       Q__NOTE(_A7   ) ,
+       Q__NOTE(_AS7  ) ,
+       Q__NOTE(_B7   ) ,
+       Q__NOTE(_C8   ) ,
+       Q__NOTE(_CS8  ) ,
+       Q__NOTE(_D8   ) ,
+       Q__NOTE(_DS8  ) ,
+       Q__NOTE(_E8   ) ,
+       Q__NOTE(_F8   ) ,
+       Q__NOTE(_FS8  ) ,
+       Q__NOTE(_G8   ) ,
+       Q__NOTE(_GS8  ) ,
+       Q__NOTE(_A8   ) ,
+       Q__NOTE(_AS8  ) ,
+       Q__NOTE(_B8   ) ,
+};
+
+float tone_rs[][2] = {
+       Q__NOTE(_A4   ) ,
+       Q__NOTE(_A4   ) ,
+       Q__NOTE(_A4   ) ,
+       Q__NOTE(_A4   ) ,
+       Q__NOTE(_AS8  ) ,
+       Q__NOTE(_B8   ) ,
 };
-#endif
 
 void matrix_init_user(void) {
-  #ifdef AUDIO_ENABLE
-    init_notes();
-    PLAY_NOTE_ARRAY(start_up, false, STACCATO);
-    println("Matrix Init");
-  #endif
+       init_notes();
+       PLAY_NOTE_ARRAY(start_up, false, STACCATO);
+       println("Matrix Init");
 }
+
+#endif
index 90f3c5a13f8107aecdfb9623fe5d1f47cd17029b..119bd922985b69a16a603603869d0fe186bee9d5 100644 (file)
@@ -288,7 +288,8 @@ ISR(TIMER3_COMPA_vect) {
         #else
             if (note_frequency > 0) {
                 ICR3 = (int)(((double)F_CPU) / (note_frequency * CPU_PRESCALER)); // Set max to the period
-                OCR3A = (int)(((double)F_CPU) / (note_frequency * CPU_PRESCALER)) >> 1; // Set compare to half the period
+                //OCR3A = (int)(((double)F_CPU) / (note_frequency * CPU_PRESCALER)) >> 1; // Set compare to half the period
+                OCR3A = (int)(((double)F_CPU) / (note_frequency * CPU_PRESCALER)) >> 2; // Set compare to half the period
             } else {
                 ICR3 = 0;
                 OCR3A = 0;
index 837f6a069d8edb51f67cb85463b9d04e509e362c..d2256a7736231b3487d7a1ac90ab0226771b0e61 100644 (file)
@@ -4,20 +4,36 @@
 // Tempo Placeholder
 #define TEMPO 120
 
+#define SONG(notes...) { notes }
+
 
 // Note Types
-#define WHOLE_NOTE(note)     {(NOTE##note), 64}
-#define HALF_NOTE(note)      {(NOTE##note), 32}
-#define QUARTER_NOTE(note)   {(NOTE##note), 16}
-#define EIGHTH_NOTE(note)    {(NOTE##note), 8}
-#define SIXTEENTH_NOTE(note) {(NOTE##note), 4}
+#define MUSICAL_NOTE(note, duration)   {(NOTE##note), duration}
+#define WHOLE_NOTE(note)               MUSICAL_NOTE(note, 64)
+#define HALF_NOTE(note)                MUSICAL_NOTE(note, 32)
+#define QUARTER_NOTE(note)             MUSICAL_NOTE(note, 16)
+#define EIGHTH_NOTE(note)              MUSICAL_NOTE(note,  8)
+#define SIXTEENTH_NOTE(note)           MUSICAL_NOTE(note,  4)
+
+#define WHOLE_DOT_NOTE(note)           MUSICAL_NOTE(note, 64+32)
+#define HALF_DOT_NOTE(note)            MUSICAL_NOTE(note, 32+16)
+#define QUARTER_DOT_NOTE(note)         MUSICAL_NOTE(note, 16+8)
+#define EIGHTH_DOT_NOTE(note)          MUSICAL_NOTE(note,  8+4)
+#define SIXTEENTH_DOT_NOTE(note)       MUSICAL_NOTE(note,  4+2)
+
 
-// Note Types Short
-#define W_NOTE(n) WHOLE_NOTE(n)
-#define H_NOTE(n) HALF_NOTE(n)
-#define Q_NOTE(n) QUARTER_NOTE(n)
-#define E_NOTE(n) EIGTH_NOTE(n)
-#define S_NOTE(n) SIXTEENTH_NOTE(n)
+// Note Type Shortcuts
+#define M__NOTE(note, duration)        MUSICAL_NOTE(note, duration)
+#define W__NOTE(n)                     WHOLE_NOTE(n)
+#define H__NOTE(n)                     HALF_NOTE(n)
+#define Q__NOTE(n)                     QUARTER_NOTE(n)
+#define E__NOTE(n)                     EIGHTH_NOTE(n)
+#define S__NOTE(n)                     SIXTEENTH_NOTE(n)
+#define WD_NOTE(n)                     WHOLE_DOT_NOTE(n)
+#define HD_NOTE(n)                     HALF_DOT_NOTE(n)
+#define QD_NOTE(n)                     QUARTER_DOT_NOTE(n)
+#define ED_NOTE(n)                     EIGTH_DOT_NOTE(n)
+#define SD_NOTE(n)                     SIXTEENTH_DOT_NOTE(n)
 
 // Note Styles
 // Staccato makes sure there is a rest between each note. Think: TA TA TA
diff --git a/quantum/song_list.h b/quantum/song_list.h
new file mode 100644 (file)
index 0000000..ef25eac
--- /dev/null
@@ -0,0 +1,12 @@
+#include "musical_notes.h"
+
+#ifndef SONG_LIST_H
+#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),
+
+#endif
\ No newline at end of file