aboutsummaryrefslogtreecommitdiff
path: root/quantum/audio/musical_notes.h
diff options
context:
space:
mode:
Diffstat (limited to 'quantum/audio/musical_notes.h')
-rw-r--r--quantum/audio/musical_notes.h77
1 files changed, 39 insertions, 38 deletions
diff --git a/quantum/audio/musical_notes.h b/quantum/audio/musical_notes.h
index 0ba572c34..ddd7d374f 100644
--- a/quantum/audio/musical_notes.h
+++ b/quantum/audio/musical_notes.h
@@ -1,4 +1,5 @@
1/* Copyright 2016 Jack Humbert 1/* Copyright 2016 Jack Humbert
2 * Copyright 2020 JohSchneider
2 * 3 *
3 * This program is free software: you can redistribute it and/or modify 4 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by 5 * it under the terms of the GNU General Public License as published by
@@ -13,12 +14,11 @@
13 * You should have received a copy of the GNU General Public License 14 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>. 15 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */ 16 */
16
17#pragma once 17#pragma once
18 18
19// Tempo Placeholder
20#ifndef TEMPO_DEFAULT 19#ifndef TEMPO_DEFAULT
21# define TEMPO_DEFAULT 100 20# define TEMPO_DEFAULT 120
21// in beats-per-minute
22#endif 22#endif
23 23
24#define SONG(notes...) \ 24#define SONG(notes...) \
@@ -27,12 +27,14 @@
27// Note Types 27// Note Types
28#define MUSICAL_NOTE(note, duration) \ 28#define MUSICAL_NOTE(note, duration) \
29 { (NOTE##note), duration } 29 { (NOTE##note), duration }
30
30#define BREVE_NOTE(note) MUSICAL_NOTE(note, 128) 31#define BREVE_NOTE(note) MUSICAL_NOTE(note, 128)
31#define WHOLE_NOTE(note) MUSICAL_NOTE(note, 64) 32#define WHOLE_NOTE(note) MUSICAL_NOTE(note, 64)
32#define HALF_NOTE(note) MUSICAL_NOTE(note, 32) 33#define HALF_NOTE(note) MUSICAL_NOTE(note, 32)
33#define QUARTER_NOTE(note) MUSICAL_NOTE(note, 16) 34#define QUARTER_NOTE(note) MUSICAL_NOTE(note, 16)
34#define EIGHTH_NOTE(note) MUSICAL_NOTE(note, 8) 35#define EIGHTH_NOTE(note) MUSICAL_NOTE(note, 8)
35#define SIXTEENTH_NOTE(note) MUSICAL_NOTE(note, 4) 36#define SIXTEENTH_NOTE(note) MUSICAL_NOTE(note, 4)
37#define THIRTYSECOND_NOTE(note) MUSICAL_NOTE(note, 2)
36 38
37#define BREVE_DOT_NOTE(note) MUSICAL_NOTE(note, 128 + 64) 39#define BREVE_DOT_NOTE(note) MUSICAL_NOTE(note, 128 + 64)
38#define WHOLE_DOT_NOTE(note) MUSICAL_NOTE(note, 64 + 32) 40#define WHOLE_DOT_NOTE(note) MUSICAL_NOTE(note, 64 + 32)
@@ -40,6 +42,9 @@
40#define QUARTER_DOT_NOTE(note) MUSICAL_NOTE(note, 16 + 8) 42#define QUARTER_DOT_NOTE(note) MUSICAL_NOTE(note, 16 + 8)
41#define EIGHTH_DOT_NOTE(note) MUSICAL_NOTE(note, 8 + 4) 43#define EIGHTH_DOT_NOTE(note) MUSICAL_NOTE(note, 8 + 4)
42#define SIXTEENTH_DOT_NOTE(note) MUSICAL_NOTE(note, 4 + 2) 44#define SIXTEENTH_DOT_NOTE(note) MUSICAL_NOTE(note, 4 + 2)
45#define THIRTYSECOND_DOT_NOTE(note) MUSICAL_NOTE(note, 2 + 1)
46// duration of 64 units == one beat == one whole note
47// with a tempo of 60bpm this comes to a length of one second
43 48
44// Note Type Shortcuts 49// Note Type Shortcuts
45#define M__NOTE(note, duration) MUSICAL_NOTE(note, duration) 50#define M__NOTE(note, duration) MUSICAL_NOTE(note, duration)
@@ -49,56 +54,52 @@
49#define Q__NOTE(n) QUARTER_NOTE(n) 54#define Q__NOTE(n) QUARTER_NOTE(n)
50#define E__NOTE(n) EIGHTH_NOTE(n) 55#define E__NOTE(n) EIGHTH_NOTE(n)
51#define S__NOTE(n) SIXTEENTH_NOTE(n) 56#define S__NOTE(n) SIXTEENTH_NOTE(n)
57#define T__NOTE(n) THIRTYSECOND_NOTE(n)
52#define BD_NOTE(n) BREVE_DOT_NOTE(n) 58#define BD_NOTE(n) BREVE_DOT_NOTE(n)
53#define WD_NOTE(n) WHOLE_DOT_NOTE(n) 59#define WD_NOTE(n) WHOLE_DOT_NOTE(n)
54#define HD_NOTE(n) HALF_DOT_NOTE(n) 60#define HD_NOTE(n) HALF_DOT_NOTE(n)
55#define QD_NOTE(n) QUARTER_DOT_NOTE(n) 61#define QD_NOTE(n) QUARTER_DOT_NOTE(n)
56#define ED_NOTE(n) EIGHTH_DOT_NOTE(n) 62#define ED_NOTE(n) EIGHTH_DOT_NOTE(n)
57#define SD_NOTE(n) SIXTEENTH_DOT_NOTE(n) 63#define SD_NOTE(n) SIXTEENTH_DOT_NOTE(n)
64#define TD_NOTE(n) THIRTYSECOND_DOT_NOTE(n)
58 65
59// Note Timbre 66// Note Timbre
60// Changes how the notes sound 67// Changes how the notes sound
61#define TIMBRE_12 0.125f 68#define TIMBRE_12 12
62#define TIMBRE_25 0.250f 69#define TIMBRE_25 25
63#define TIMBRE_50 0.500f 70#define TIMBRE_50 50
64#define TIMBRE_75 0.750f 71#define TIMBRE_75 75
65#ifndef TIMBRE_DEFAULT 72#ifndef TIMBRE_DEFAULT
66# define TIMBRE_DEFAULT TIMBRE_50 73# define TIMBRE_DEFAULT TIMBRE_50
67#endif 74#endif
68// Notes - # = Octave
69 75
70#ifdef __arm__ 76// Notes - # = Octave
71# define NOTE_REST 1.00f
72#else
73# define NOTE_REST 0.00f
74#endif
75 77
76/* These notes are currently bugged 78#define NOTE_REST 0.00f
77#define NOTE_C0 16.35f
78#define NOTE_CS0 17.32f
79#define NOTE_D0 18.35f
80#define NOTE_DS0 19.45f
81#define NOTE_E0 20.60f
82#define NOTE_F0 21.83f
83#define NOTE_FS0 23.12f
84#define NOTE_G0 24.50f
85#define NOTE_GS0 25.96f
86#define NOTE_A0 27.50f
87#define NOTE_AS0 29.14f
88#define NOTE_B0 30.87f
89#define NOTE_C1 32.70f
90#define NOTE_CS1 34.65f
91#define NOTE_D1 36.71f
92#define NOTE_DS1 38.89f
93#define NOTE_E1 41.20f
94#define NOTE_F1 43.65f
95#define NOTE_FS1 46.25f
96#define NOTE_G1 49.00f
97#define NOTE_GS1 51.91f
98#define NOTE_A1 55.00f
99#define NOTE_AS1 58.27f
100*/
101 79
80#define NOTE_C0 16.35f
81#define NOTE_CS0 17.32f
82#define NOTE_D0 18.35f
83#define NOTE_DS0 19.45f
84#define NOTE_E0 20.60f
85#define NOTE_F0 21.83f
86#define NOTE_FS0 23.12f
87#define NOTE_G0 24.50f
88#define NOTE_GS0 25.96f
89#define NOTE_A0 27.50f
90#define NOTE_AS0 29.14f
91#define NOTE_B0 30.87f
92#define NOTE_C1 32.70f
93#define NOTE_CS1 34.65f
94#define NOTE_D1 36.71f
95#define NOTE_DS1 38.89f
96#define NOTE_E1 41.20f
97#define NOTE_F1 43.65f
98#define NOTE_FS1 46.25f
99#define NOTE_G1 49.00f
100#define NOTE_GS1 51.91f
101#define NOTE_A1 55.00f
102#define NOTE_AS1 58.27f
102#define NOTE_B1 61.74f 103#define NOTE_B1 61.74f
103#define NOTE_C2 65.41f 104#define NOTE_C2 65.41f
104#define NOTE_CS2 69.30f 105#define NOTE_CS2 69.30f