~ruther/qmk_firmware

140b97a1cd226432a8ec647004943698e3d87f0b — Jack Humbert 9 years ago 6274a21
adds delayed vibrato
2 files changed, 33 insertions(+), 0 deletions(-)

M quantum/audio/voices.c
M quantum/audio/voices.h
M quantum/audio/voices.c => quantum/audio/voices.c +31 -0
@@ 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)

M quantum/audio/voices.h => quantum/audio/voices.h +2 -0
@@ 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,