~ruther/qmk_firmware

943b5b770955be937a89016680052be56d874c4a — IBNobody 9 years ago 45f10b4
Adding folding to #if, etc
4 files changed, 174 insertions(+), 170 deletions(-)

M keyboard/atomic/keymaps/pvc/keymap.c
M quantum/audio.c
M quantum/musical_notes.h
A quantum/song_list.h
M keyboard/atomic/keymaps/pvc/keymap.c => keyboard/atomic/keymaps/pvc/keymap.c +133 -158
@@ 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

M quantum/audio.c => quantum/audio.c +2 -1
@@ 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;

M quantum/musical_notes.h => quantum/musical_notes.h +27 -11
@@ 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

A quantum/song_list.h => quantum/song_list.h +12 -0
@@ 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