Merge branch 'master' of github.com:jackhumbert/qmk_firmware
This commit is contained in:
commit
0edc7a9d87
3 changed files with 390 additions and 0 deletions
357
quantum/audio/frequency_lut.h
Normal file
357
quantum/audio/frequency_lut.h
Normal file
|
@ -0,0 +1,357 @@
|
|||
#include <avr/io.h>
|
||||
#include <avr/interrupt.h>
|
||||
#include <avr/pgmspace.h>
|
||||
|
||||
#define FREQUENCY_LUT_LENGTH 349
|
||||
|
||||
const uint16_t FREQUENCY_LUT[FREQUENCY_LUT_LENGTH] = {
|
||||
0x8E0B,
|
||||
0x8C02,
|
||||
0x8A00,
|
||||
0x8805,
|
||||
0x8612,
|
||||
0x8426,
|
||||
0x8241,
|
||||
0x8063,
|
||||
0x7E8C,
|
||||
0x7CBB,
|
||||
0x7AF2,
|
||||
0x792E,
|
||||
0x7772,
|
||||
0x75BB,
|
||||
0x740B,
|
||||
0x7261,
|
||||
0x70BD,
|
||||
0x6F20,
|
||||
0x6D88,
|
||||
0x6BF6,
|
||||
0x6A69,
|
||||
0x68E3,
|
||||
0x6762,
|
||||
0x65E6,
|
||||
0x6470,
|
||||
0x6300,
|
||||
0x6194,
|
||||
0x602E,
|
||||
0x5ECD,
|
||||
0x5D71,
|
||||
0x5C1A,
|
||||
0x5AC8,
|
||||
0x597B,
|
||||
0x5833,
|
||||
0x56EF,
|
||||
0x55B0,
|
||||
0x5475,
|
||||
0x533F,
|
||||
0x520E,
|
||||
0x50E1,
|
||||
0x4FB8,
|
||||
0x4E93,
|
||||
0x4D73,
|
||||
0x4C57,
|
||||
0x4B3E,
|
||||
0x4A2A,
|
||||
0x491A,
|
||||
0x480E,
|
||||
0x4705,
|
||||
0x4601,
|
||||
0x4500,
|
||||
0x4402,
|
||||
0x4309,
|
||||
0x4213,
|
||||
0x4120,
|
||||
0x4031,
|
||||
0x3F46,
|
||||
0x3E5D,
|
||||
0x3D79,
|
||||
0x3C97,
|
||||
0x3BB9,
|
||||
0x3ADD,
|
||||
0x3A05,
|
||||
0x3930,
|
||||
0x385E,
|
||||
0x3790,
|
||||
0x36C4,
|
||||
0x35FB,
|
||||
0x3534,
|
||||
0x3471,
|
||||
0x33B1,
|
||||
0x32F3,
|
||||
0x3238,
|
||||
0x3180,
|
||||
0x30CA,
|
||||
0x3017,
|
||||
0x2F66,
|
||||
0x2EB8,
|
||||
0x2E0D,
|
||||
0x2D64,
|
||||
0x2CBD,
|
||||
0x2C19,
|
||||
0x2B77,
|
||||
0x2AD8,
|
||||
0x2A3A,
|
||||
0x299F,
|
||||
0x2907,
|
||||
0x2870,
|
||||
0x27DC,
|
||||
0x2749,
|
||||
0x26B9,
|
||||
0x262B,
|
||||
0x259F,
|
||||
0x2515,
|
||||
0x248D,
|
||||
0x2407,
|
||||
0x2382,
|
||||
0x2300,
|
||||
0x2280,
|
||||
0x2201,
|
||||
0x2184,
|
||||
0x2109,
|
||||
0x2090,
|
||||
0x2018,
|
||||
0x1FA3,
|
||||
0x1F2E,
|
||||
0x1EBC,
|
||||
0x1E4B,
|
||||
0x1DDC,
|
||||
0x1D6E,
|
||||
0x1D02,
|
||||
0x1C98,
|
||||
0x1C2F,
|
||||
0x1BC8,
|
||||
0x1B62,
|
||||
0x1AFD,
|
||||
0x1A9A,
|
||||
0x1A38,
|
||||
0x19D8,
|
||||
0x1979,
|
||||
0x191C,
|
||||
0x18C0,
|
||||
0x1865,
|
||||
0x180B,
|
||||
0x17B3,
|
||||
0x175C,
|
||||
0x1706,
|
||||
0x16B2,
|
||||
0x165E,
|
||||
0x160C,
|
||||
0x15BB,
|
||||
0x156C,
|
||||
0x151D,
|
||||
0x14CF,
|
||||
0x1483,
|
||||
0x1438,
|
||||
0x13EE,
|
||||
0x13A4,
|
||||
0x135C,
|
||||
0x1315,
|
||||
0x12CF,
|
||||
0x128A,
|
||||
0x1246,
|
||||
0x1203,
|
||||
0x11C1,
|
||||
0x1180,
|
||||
0x1140,
|
||||
0x1100,
|
||||
0x10C2,
|
||||
0x1084,
|
||||
0x1048,
|
||||
0x100C,
|
||||
0xFD1,
|
||||
0xF97,
|
||||
0xF5E,
|
||||
0xF25,
|
||||
0xEEE,
|
||||
0xEB7,
|
||||
0xE81,
|
||||
0xE4C,
|
||||
0xE17,
|
||||
0xDE4,
|
||||
0xDB1,
|
||||
0xD7E,
|
||||
0xD4D,
|
||||
0xD1C,
|
||||
0xCEC,
|
||||
0xCBC,
|
||||
0xC8E,
|
||||
0xC60,
|
||||
0xC32,
|
||||
0xC05,
|
||||
0xBD9,
|
||||
0xBAE,
|
||||
0xB83,
|
||||
0xB59,
|
||||
0xB2F,
|
||||
0xB06,
|
||||
0xADD,
|
||||
0xAB6,
|
||||
0xA8E,
|
||||
0xA67,
|
||||
0xA41,
|
||||
0xA1C,
|
||||
0x9F7,
|
||||
0x9D2,
|
||||
0x9AE,
|
||||
0x98A,
|
||||
0x967,
|
||||
0x945,
|
||||
0x923,
|
||||
0x901,
|
||||
0x8E0,
|
||||
0x8C0,
|
||||
0x8A0,
|
||||
0x880,
|
||||
0x861,
|
||||
0x842,
|
||||
0x824,
|
||||
0x806,
|
||||
0x7E8,
|
||||
0x7CB,
|
||||
0x7AF,
|
||||
0x792,
|
||||
0x777,
|
||||
0x75B,
|
||||
0x740,
|
||||
0x726,
|
||||
0x70B,
|
||||
0x6F2,
|
||||
0x6D8,
|
||||
0x6BF,
|
||||
0x6A6,
|
||||
0x68E,
|
||||
0x676,
|
||||
0x65E,
|
||||
0x647,
|
||||
0x630,
|
||||
0x619,
|
||||
0x602,
|
||||
0x5EC,
|
||||
0x5D7,
|
||||
0x5C1,
|
||||
0x5AC,
|
||||
0x597,
|
||||
0x583,
|
||||
0x56E,
|
||||
0x55B,
|
||||
0x547,
|
||||
0x533,
|
||||
0x520,
|
||||
0x50E,
|
||||
0x4FB,
|
||||
0x4E9,
|
||||
0x4D7,
|
||||
0x4C5,
|
||||
0x4B3,
|
||||
0x4A2,
|
||||
0x491,
|
||||
0x480,
|
||||
0x470,
|
||||
0x460,
|
||||
0x450,
|
||||
0x440,
|
||||
0x430,
|
||||
0x421,
|
||||
0x412,
|
||||
0x403,
|
||||
0x3F4,
|
||||
0x3E5,
|
||||
0x3D7,
|
||||
0x3C9,
|
||||
0x3BB,
|
||||
0x3AD,
|
||||
0x3A0,
|
||||
0x393,
|
||||
0x385,
|
||||
0x379,
|
||||
0x36C,
|
||||
0x35F,
|
||||
0x353,
|
||||
0x347,
|
||||
0x33B,
|
||||
0x32F,
|
||||
0x323,
|
||||
0x318,
|
||||
0x30C,
|
||||
0x301,
|
||||
0x2F6,
|
||||
0x2EB,
|
||||
0x2E0,
|
||||
0x2D6,
|
||||
0x2CB,
|
||||
0x2C1,
|
||||
0x2B7,
|
||||
0x2AD,
|
||||
0x2A3,
|
||||
0x299,
|
||||
0x290,
|
||||
0x287,
|
||||
0x27D,
|
||||
0x274,
|
||||
0x26B,
|
||||
0x262,
|
||||
0x259,
|
||||
0x251,
|
||||
0x248,
|
||||
0x240,
|
||||
0x238,
|
||||
0x230,
|
||||
0x228,
|
||||
0x220,
|
||||
0x218,
|
||||
0x210,
|
||||
0x209,
|
||||
0x201,
|
||||
0x1FA,
|
||||
0x1F2,
|
||||
0x1EB,
|
||||
0x1E4,
|
||||
0x1DD,
|
||||
0x1D6,
|
||||
0x1D0,
|
||||
0x1C9,
|
||||
0x1C2,
|
||||
0x1BC,
|
||||
0x1B6,
|
||||
0x1AF,
|
||||
0x1A9,
|
||||
0x1A3,
|
||||
0x19D,
|
||||
0x197,
|
||||
0x191,
|
||||
0x18C,
|
||||
0x186,
|
||||
0x180,
|
||||
0x17B,
|
||||
0x175,
|
||||
0x170,
|
||||
0x16B,
|
||||
0x165,
|
||||
0x160,
|
||||
0x15B,
|
||||
0x156,
|
||||
0x151,
|
||||
0x14C,
|
||||
0x148,
|
||||
0x143,
|
||||
0x13E,
|
||||
0x13A,
|
||||
0x135,
|
||||
0x131,
|
||||
0x12C,
|
||||
0x128,
|
||||
0x124,
|
||||
0x120,
|
||||
0x11C,
|
||||
0x118,
|
||||
0x114,
|
||||
0x110,
|
||||
0x10C,
|
||||
0x108,
|
||||
0x104,
|
||||
0x100,
|
||||
0xFD,
|
||||
0xF9,
|
||||
0xF5,
|
||||
0xF2,
|
||||
0xEE
|
||||
};
|
|
@ -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)
|
||||
|
|
|
@ -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,
|
||||
|
|
Loading…
Reference in a new issue