summary refs log tree commit diff
path: root/quantum
diff options
context:
space:
mode:
authorJack Humbert <jack.humb@gmail.com>2016-04-26 01:16:47 -0400
committerJack Humbert <jack.humb@gmail.com>2016-04-26 01:16:47 -0400
commit140b97a1cd226432a8ec647004943698e3d87f0b (patch)
treefaeb69d21803b8d83b31dd4b8d01b2231054919a /quantum
parent6274a216f87bad7d6fe9c9a1a4328dbf444fc364 (diff)
adds delayed vibrato
Diffstat (limited to 'quantum')
-rw-r--r--quantum/audio/voices.c31
-rw-r--r--quantum/audio/voices.h2
2 files changed, 33 insertions, 0 deletions
diff --git a/quantum/audio/voices.c b/quantum/audio/voices.c
index de9f8ae544..0921bd5931 100644
--- a/quantum/audio/voices.c
+++ b/quantum/audio/voices.c
@@ -1,5 +1,6 @@
 #include "voices.h"
 #include "stdlib.h"
+#include "vibrato_lut.h"
 
 // these are imported from audio.c
 extern uint16_t envelope_index;
@@ -99,6 +100,36 @@ float voice_envelope(float frequency) {
             if ((envelope_index % 8) == 0)
                 note_timbre = 0;
             break;
+        case delayed_vibrato:
+            polyphony_rate = 0;
+            note_timbre = TIMBRE_50;
+            #define VOICE_VIBRATO_DELAY 150
+            #define VOICE_VIBRATO_SPEED 50
+            switch (compensated_index) {
+                case 0 ... VOICE_VIBRATO_DELAY:
+                    break;
+                default:
+                    frequency = frequency * VIBRATO_LUT[(int)fmod((((float)compensated_index - (VOICE_VIBRATO_DELAY + 1))/1000*VOICE_VIBRATO_SPEED), VIBRATO_LUT_LENGTH)];
+                    break;
+            }
+            break;
+        // case delayed_vibrato_octave:
+        //     polyphony_rate = 0;
+        //     if ((envelope_index % 2) == 1) {
+        //         note_timbre = 0.55;
+        //     } else {
+        //         note_timbre = 0.45;
+        //     }
+        //     #define VOICE_VIBRATO_DELAY 150
+        //     #define VOICE_VIBRATO_SPEED 50
+        //     switch (compensated_index) {
+        //         case 0 ... VOICE_VIBRATO_DELAY:
+        //             break;
+        //         default:
+        //             frequency = frequency * VIBRATO_LUT[(int)fmod((((float)compensated_index - (VOICE_VIBRATO_DELAY + 1))/1000*VOICE_VIBRATO_SPEED), VIBRATO_LUT_LENGTH)];
+        //             break;
+        //     }
+        //     break;
         // case duty_fifth_down:
         //     note_timbre = 0.5;
         //     if ((envelope_index % 3) == 0)
diff --git a/quantum/audio/voices.h b/quantum/audio/voices.h
index 4b894f28d4..74c873f42f 100644
--- a/quantum/audio/voices.h
+++ b/quantum/audio/voices.h
@@ -16,6 +16,8 @@ typedef enum {
     octave_crunch,
     duty_osc,
     duty_octave_down,
+    delayed_vibrato,
+    // delayed_vibrato_octave,
     // duty_fifth_down,
     // duty_fourth_down,
     // duty_third_down,