aboutsummaryrefslogtreecommitdiff
path: root/quantum/audio
diff options
context:
space:
mode:
authorJack Humbert <jack.humb@gmail.com>2016-12-20 19:38:22 -0500
committerJack Humbert <jack.humb@gmail.com>2016-12-20 19:38:22 -0500
commit438a5d685bb7b726ff59109ce4229eca6303cd8e (patch)
tree3e3feecf370efe3dfd373bafa3db7ea347fa3449 /quantum/audio
parent53ea854462c0b3b2c3c58a36b714ac02f773c74f (diff)
downloadqmk_firmware-438a5d685bb7b726ff59109ce4229eca6303cd8e.tar.gz
qmk_firmware-438a5d685bb7b726ff59109ce4229eca6303cd8e.zip
limit voices by default, add some drums
Diffstat (limited to 'quantum/audio')
-rw-r--r--quantum/audio/voices.c105
-rw-r--r--quantum/audio/voices.h2
2 files changed, 82 insertions, 25 deletions
diff --git a/quantum/audio/voices.c b/quantum/audio/voices.c
index 06ff275ba..4e3028977 100644
--- a/quantum/audio/voices.c
+++ b/quantum/audio/voices.c
@@ -33,6 +33,8 @@ float voice_envelope(float frequency) {
33 polyphony_rate = 0; 33 polyphony_rate = 0;
34 break; 34 break;
35 35
36 #ifdef AUDIO_VOICES
37
36 case something: 38 case something:
37 glissando = false; 39 glissando = false;
38 polyphony_rate = 0; 40 polyphony_rate = 0;
@@ -58,36 +60,87 @@ float voice_envelope(float frequency) {
58 case drums: 60 case drums:
59 glissando = false; 61 glissando = false;
60 polyphony_rate = 0; 62 polyphony_rate = 0;
61 note_timbre = 0; 63 // switch (compensated_index) {
64 // case 0 ... 10:
65 // note_timbre = 0.5;
66 // break;
67 // case 11 ... 20:
68 // note_timbre = 0.5 * (21 - compensated_index) / 10;
69 // break;
70 // default:
71 // note_timbre = 0;
72 // break;
73 // }
74 // frequency = (rand() % (int)(frequency * 1.2 - frequency)) + (frequency * 0.8);
75
76 if (frequency < 80.0) {
77
78 } else if (frequency < 160.0) {
79
80 // Bass drum: 60 - 100 Hz
81 frequency = (rand() % (int)(40)) + 60;
82 switch (envelope_index) {
83 case 0 ... 10:
84 note_timbre = 0.5;
85 break;
86 case 11 ... 20:
87 note_timbre = 0.5 * (21 - envelope_index) / 10;
88 break;
89 default:
90 note_timbre = 0;
91 break;
92 }
93
94 } else if (frequency < 320.0) {
95
96
97 // Snare drum: 1 - 2 KHz
98 frequency = (rand() % (int)(1000)) + 1000;
99 switch (envelope_index) {
100 case 0 ... 5:
101 note_timbre = 0.5;
102 break;
103 case 6 ... 20:
104 note_timbre = 0.5 * (21 - envelope_index) / 15;
105 break;
106 default:
107 note_timbre = 0;
108 break;
109 }
110
111 } else if (frequency < 640.0) {
112
113 // Closed Hi-hat: 3 - 5 KHz
114 frequency = (rand() % (int)(2000)) + 3000;
62 switch (envelope_index) { 115 switch (envelope_index) {
63 case 0 ... 20: 116 case 0 ... 15:
64 note_timbre = 0.5; 117 note_timbre = 0.5;
118 break;
119 case 16 ... 20:
120 note_timbre = 0.5 * (21 - envelope_index) / 5;
121 break;
65 default: 122 default:
66 frequency = (rand() % (int)(frequency * 1.2 - frequency)) + (frequency * 0.8); 123 note_timbre = 0;
67 break; 124 break;
68 } 125 }
69 // if (frequency < 80.0) { 126
70 // switch (envelope_index % 4) { 127 } else if (frequency < 1280.0) {
71 // case 0: 128
72 // frequency = 348.0; 129 // Open Hi-hat: 3 - 5 KHz
73 // case 1: 130 frequency = (rand() % (int)(2000)) + 3000;
74 // frequency = 53.0; 131 switch (envelope_index) {
75 // case 2: 132 case 0 ... 35:
76 // frequency = 128.0; 133 note_timbre = 0.5;
77 // case 3: 134 break;
78 // frequency = 934.0; 135 case 36 ... 50:
79 // default: 136 note_timbre = 0.5 * (51 - envelope_index) / 15;
80 // break; 137 break;
81 // } 138 default:
82 // } else if (frequency < 160.0) { 139 note_timbre = 0;
83 140 break;
84 // } else if (frequency < 320.0) { 141 }
85 142
86 // } else if (frequency < 640.0) { 143 }
87
88 // } else if (frequency < 1280.0) {
89
90 // }
91 break; 144 break;
92 case butts_fader: 145 case butts_fader:
93 glissando = true; 146 glissando = true;
@@ -217,6 +270,8 @@ float voice_envelope(float frequency) {
217 // note_timbre = 0.25; 270 // note_timbre = 0.25;
218 // break; 271 // break;
219 272
273 #endif
274
220 default: 275 default:
221 break; 276 break;
222 } 277 }
diff --git a/quantum/audio/voices.h b/quantum/audio/voices.h
index 72f139e9c..52f7e006d 100644
--- a/quantum/audio/voices.h
+++ b/quantum/audio/voices.h
@@ -11,6 +11,7 @@ float voice_envelope(float frequency);
11 11
12typedef enum { 12typedef enum {
13 default_voice, 13 default_voice,
14 #ifdef AUDIO_VOICES
14 something, 15 something,
15 drums, 16 drums,
16 butts_fader, 17 butts_fader,
@@ -23,6 +24,7 @@ typedef enum {
23 // duty_fourth_down, 24 // duty_fourth_down,
24 // duty_third_down, 25 // duty_third_down,
25 // duty_fifth_third_down, 26 // duty_fifth_third_down,
27 #endif
26 number_of_voices // important that this is last 28 number_of_voices // important that this is last
27} voice_type; 29} voice_type;
28 30