mirror of https://github.com/qmk/qmk_firmware
399 lines
4.1 KiB
C
399 lines
4.1 KiB
C
/* Copyright 2016 IBNobody
|
|
*
|
|
* This program is free software: you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation, either version 2 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
#include <avr/io.h>
|
|
#include <avr/interrupt.h>
|
|
#include <avr/pgmspace.h>
|
|
#include "luts.h"
|
|
|
|
const float vibrato_lut[VIBRATO_LUT_LENGTH] =
|
|
{
|
|
1.0022336811487,
|
|
1.0042529943610,
|
|
1.0058584256028,
|
|
1.0068905285205,
|
|
1.0072464122237,
|
|
1.0068905285205,
|
|
1.0058584256028,
|
|
1.0042529943610,
|
|
1.0022336811487,
|
|
1.0000000000000,
|
|
0.9977712970630,
|
|
0.9957650169978,
|
|
0.9941756956510,
|
|
0.9931566259436,
|
|
0.9928057204913,
|
|
0.9931566259436,
|
|
0.9941756956510,
|
|
0.9957650169978,
|
|
0.9977712970630,
|
|
1.0000000000000,
|
|
};
|
|
|
|
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,
|
|
};
|
|
|