-
Notifications
You must be signed in to change notification settings - Fork 0
/
constants.cpp
182 lines (164 loc) · 33.7 KB
/
constants.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
#include <Arduino.h>
#include "Teensy_FM_Synthesizer.h"
const char * adsrParamDisp [] = {"ATK", "DEC", "SUS", "REL"};
const char * levelScalingFunctionDisp [] = {"OFF", "LIN", "EXP"};
const char * knobsControlDisp[] = {"STBY", "ADSR", "PARM", "MENU", "SAVE", "EDIT"};
const uint8_t feedBackOsc [NUM_ALGORITHMS] =
{5,1,5,3,5,4,5,4,1,2,4,1,5,4,4,5,1,3,5,2,2,5,5,5,5,5,2,4,5,4,5,5};
// Values for each key to calculate the keyboard level scaling values (for linear and exponetial functions).
const uint16_t levelScalingFunction[2][NUM_SCALING_KEYS] = { {0, 42, 83, 125, 166, 207, 249, 290, 331, 373, 414, 455, 497, 538, 580, 621, 662, 704, 745, 786, 828, 869, 910, 952, 993, 1035, 1076, 1117, 1159, 1200, 1241, 1283, 1324, 1365, 1407, 1448, 1490, 1531, 1572, 1614, 1655, 1696, 1738, 1779, 1820, 1862, 1903, 1945, 1986, 2027, 2069, 2110, 2151, 2193, 2234, 2275, 2317, 2358, 2400, 2441, 2482, 2524, 2565, 2606, 2648, 2689, 2730, 2772, 2813, 2855, 2896, 2937, 2979, 3020, 3061, 3103, 3144, 3185, 3227, 3268, 3310, 3351, 3392, 3434, 3475, 3516, 3558, 3599, 3640, 3682, 3723, 3765, 3806, 3847, 3889, 3930, 3971, 4013, 4054, 4095},
{1, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4, 5, 5, 5, 6, 6, 7, 7, 8, 9, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 21, 23, 25, 27, 29, 32, 35, 38, 41, 44, 48, 52, 57, 62, 67, 73, 79, 86, 94, 102, 111, 121, 131, 143, 155, 169, 183, 199, 217, 236, 257, 279, 303, 330, 359, 390, 424, 461, 502, 546, 594, 646, 702, 764, 831, 903, 982, 1068, 1162, 1264, 1375, 1495, 1626, 1769, 1924, 2092, 2275, 2475, 2692, 2928, 3184, 3463, 3767, 4093} };
// Velocity curves.
const uint8_t velocityCurve[MAX_PARAMETERS_LEVEL + 1][128] = { {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127},
{2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 9, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 15, 16, 17, 17, 18, 19, 19, 20, 21, 22, 23, 24, 24, 25, 26, 28, 29, 30, 31, 32, 33, 35, 36, 38, 39, 41, 42, 44, 46, 47, 49, 51, 53, 55, 57, 60, 62, 65, 67, 70, 72, 75, 78, 81, 85, 88, 91, 95, 99, 102, 106, 111, 115, 119, 124, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127},
{4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 9, 9, 10, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 15, 16, 17, 17, 18, 19, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 34, 35, 36, 38, 39, 41, 42, 44, 46, 48, 49, 51, 53, 56, 58, 60, 62, 65, 67, 70, 73, 76, 79, 82, 85, 88, 92, 95, 99, 103, 107, 111, 115, 120, 125, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127},
{6, 6, 6, 6, 6, 7, 7, 7, 8, 8, 8, 9, 9, 9, 10, 10, 11, 11, 11, 12, 12, 13, 13, 14, 15, 15, 16, 16, 17, 18, 18, 19, 20, 21, 22, 22, 23, 24, 25, 26, 27, 28, 29, 31, 32, 33, 34, 36, 37, 39, 40, 42, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 64, 66, 69, 72, 74, 77, 80, 84, 87, 90, 94, 97, 101, 105, 109, 114, 118, 123, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127},
{8, 8, 8, 8, 9, 9, 10, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 15, 16, 17, 17, 18, 19, 20, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 34, 35, 36, 38, 39, 41, 43, 44, 46, 48, 50, 52, 54, 56, 58, 60, 63, 65, 68, 70, 73, 76, 79, 82, 85, 89, 92, 96, 99, 103, 107, 112, 116, 121, 125, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127},
{10, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 15, 16, 17, 17, 18, 19, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 34, 35, 36, 38, 39, 41, 42, 44, 46, 48, 49, 51, 53, 55, 58, 60, 62, 65, 67, 70, 73, 75, 78, 82, 85, 88, 91, 95, 99, 103, 107, 111, 115, 120, 124, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127},
{12, 12, 12, 13, 13, 14, 15, 15, 16, 16, 17, 18, 18, 19, 20, 21, 22, 22, 23, 24, 25, 26, 27, 28, 30, 31, 32, 33, 35, 36, 37, 39, 40, 42, 44, 45, 47, 49, 51, 53, 55, 57, 59, 62, 64, 67, 69, 72, 75, 78, 81, 84, 87, 91, 94, 98, 102, 106, 110, 114, 119, 123, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127},
{127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127} };
// Rate scaling for each level/key.
const uint16_t rateScaling[MAX_PARAMETERS_LEVEL + 1][NUM_SCALING_KEYS] = { {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 2, 5, 8, 10, 13, 16, 18, 21, 24, 26, 29, 32, 34, 37, 40, 42, 45, 48, 50, 53, 56, 58, 61, 64, 66, 69, 72, 74, 77, 80, 82, 85, 88, 90, 93, 96, 98, 101, 104, 106, 109, 112, 114, 117, 120, 122, 125, 128, 130, 133, 136, 138, 141, 144, 146, 149, 152, 154, 157, 160, 162, 165, 168, 170, 173, 176, 178, 181, 184, 186, 189, 192, 194, 197, 200, 202, 205, 208, 210, 213, 216, 218, 221, 224, 226, 229, 232, 234, 237, 240, 242, 245, 248, 248, 248, 248, 248, 248, 248},
{0, 5, 10, 16, 21, 26, 32, 37, 42, 48, 53, 58, 64, 69, 74, 80, 85, 90, 96, 101, 106, 112, 117, 122, 128, 133, 138, 144, 149, 154, 160, 165, 170, 176, 181, 186, 192, 197, 202, 208, 213, 218, 224, 229, 234, 240, 245, 250, 256, 261, 266, 272, 277, 282, 288, 293, 298, 304, 309, 314, 320, 325, 330, 336, 341, 346, 352, 357, 362, 368, 373, 378, 384, 389, 394, 400, 405, 410, 416, 421, 426, 432, 437, 442, 448, 453, 458, 464, 469, 474, 480, 485, 490, 496, 496, 496, 496, 496, 496, 496},
{0, 8, 16, 24, 32, 40, 48, 56, 64, 72, 80, 88, 96, 104, 112, 120, 128, 136, 144, 152, 160, 168, 176, 184, 192, 200, 208, 216, 224, 232, 240, 248, 256, 264, 272, 280, 288, 296, 304, 312, 320, 328, 336, 344, 352, 360, 368, 376, 384, 392, 400, 408, 416, 424, 432, 440, 448, 456, 464, 472, 480, 488, 496, 504, 512, 520, 528, 536, 544, 552, 560, 568, 576, 584, 592, 600, 608, 616, 624, 632, 640, 648, 656, 664, 672, 680, 688, 696, 704, 712, 720, 728, 736, 744, 744, 744, 744, 744, 744, 744},
{0, 10, 21, 32, 42, 53, 64, 74, 85, 96, 106, 117, 128, 138, 149, 160, 170, 181, 192, 202, 213, 224, 234, 245, 256, 266, 277, 288, 298, 309, 320, 330, 341, 352, 362, 373, 384, 394, 405, 416, 426, 437, 448, 458, 469, 480, 490, 501, 512, 522, 533, 544, 554, 565, 576, 586, 597, 608, 618, 629, 640, 650, 661, 672, 682, 693, 704, 714, 725, 736, 746, 757, 768, 778, 789, 800, 810, 821, 832, 842, 853, 864, 874, 885, 896, 906, 917, 928, 938, 949, 960, 970, 981, 992, 992, 992, 992, 992, 992, 992},
{0, 13, 26, 40, 53, 66, 80, 93, 106, 120, 133, 146, 160, 173, 186, 200, 213, 226, 240, 253, 266, 280, 293, 306, 320, 333, 346, 360, 373, 386, 400, 413, 426, 440, 453, 466, 480, 493, 506, 520, 533, 546, 560, 573, 586, 600, 613, 626, 640, 653, 666, 680, 693, 706, 720, 733, 746, 760, 773, 786, 800, 813, 826, 840, 853, 866, 880, 893, 906, 920, 933, 946, 960, 973, 986, 1000, 1013, 1026, 1040, 1053, 1066, 1080, 1093, 1106, 1120, 1133, 1146, 1160, 1173, 1186, 1200, 1213, 1226, 1240, 1240, 1240, 1240, 1240, 1240, 1240},
{0, 16, 32, 48, 64, 80, 96, 112, 128, 144, 160, 176, 192, 208, 224, 240, 256, 272, 288, 304, 320, 336, 352, 368, 384, 400, 416, 432, 448, 464, 480, 496, 512, 528, 544, 560, 576, 592, 608, 624, 640, 656, 672, 688, 704, 720, 736, 752, 768, 784, 800, 816, 832, 848, 864, 880, 896, 912, 928, 944, 960, 976, 992, 1008, 1024, 1040, 1056, 1072, 1088, 1104, 1120, 1136, 1152, 1168, 1184, 1200, 1216, 1232, 1248, 1264, 1280, 1296, 1312, 1328, 1344, 1360, 1376, 1392, 1408, 1424, 1440, 1456, 1472, 1489, 1489, 1489, 1489, 1489, 1489, 1489},
{0, 18, 37, 56, 74, 93, 112, 130, 149, 168, 186, 205, 224, 242, 261, 280, 298, 317, 336, 354, 373, 392, 410, 429, 448, 466, 485, 504, 522, 541, 560, 579, 597, 616, 635, 653, 672, 691, 709, 728, 747, 765, 784, 803, 821, 840, 859, 877, 896, 915, 933, 952, 971, 989, 1008, 1027, 1045, 1064, 1083, 1101, 1120, 1139, 1158, 1176, 1195, 1214, 1232, 1251, 1270, 1288, 1307, 1326, 1344, 1363, 1382, 1400, 1419, 1438, 1456, 1475, 1494, 1512, 1531, 1550, 1568, 1587, 1606, 1624, 1643, 1662, 1680, 1699, 1718, 1737, 1737, 1737, 1737, 1737, 1737, 1737} };
// Sample steps for each note. Used to access the sine table.
const uint32_t sineTableStep[NUM_KEYS] = {1201, 1273, 1349, 1429, 1514, 1604, 1699, 1800, 1907, 2021, 2141, 2268,
2403, 2546, 2697, 2858, 3028, 3208, 3398, 3600, 3815, 4041, 4282, 4536,
4806, 5092, 5395, 5715, 6055, 6415, 6797, 7201, 7629, 8083, 8563, 9072,
9612, 10184, 10789, 11431, 12110, 12830, 13593, 14402, 15258, 16165, 17127, 18145,
19224, 20367, 21578, 22861, 24221, 25661, 27187, 28803, 30516, 32331, 34253, 36290,
38448, 40734, 43156, 45722, 48441, 51322, 54373, 57607, 61032, 64661, 68506, 72580,
76896, 81468, 86312, 91445, 96882, 102643, 108747, 115213, 122064, 129323, 137012, 145160,
153791, 162936, 172625, 182890};
const char * sourcesDisp [] = {"SIN", "TRI", "SAW", "SQR", "US1", "US2"};
const int16_t * sources [] = {sineTable, triTable, sawTable, sqrTable, NULL, NULL};
// 10 bit sine wave table.
const int16_t sineTable[SINE_TABLE_SIZE] = {0, 3, 6, 9, 12, 15, 18, 21, 25, 28, 31, 34, 37, 40, 43, 47, 50, 53, 56, 59, 62, 65, 68, 71, 75, 78, 81, 84, 87, 90, 93, 96,
99, 102, 105, 109, 112, 115, 118, 121, 124, 127, 130, 133, 136, 139, 142, 145, 148, 151, 154, 157, 160, 163, 166, 169, 172, 175, 178, 181, 184, 187, 189, 192,
195, 198, 201, 204, 207, 210, 213, 215, 218, 221, 224, 227, 229, 232, 235, 238, 241, 243, 246, 249, 252, 254, 257, 260, 262, 265, 268, 270, 273, 276, 278, 281,
284, 286, 289, 291, 294, 297, 299, 302, 304, 307, 309, 312, 314, 317, 319, 322, 324, 326, 329, 331, 334, 336, 338, 341, 343, 345, 348, 350, 352, 354, 357, 359,
361, 363, 366, 368, 370, 372, 374, 376, 378, 381, 383, 385, 387, 389, 391, 393, 395, 397, 399, 401, 403, 405, 407, 408, 410, 412, 414, 416, 418, 419, 421, 423,
425, 427, 428, 430, 432, 433, 435, 437, 438, 440, 441, 443, 445, 446, 448, 449, 451, 452, 454, 455, 456, 458, 459, 461, 462, 463, 465, 466, 467, 468, 470, 471,
472, 473, 474, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 492, 493, 494, 495, 496, 496, 497, 498, 499, 499, 500, 501,
501, 502, 502, 503, 503, 504, 505, 505, 505, 506, 506, 507, 507, 508, 508, 508, 509, 509, 509, 509, 510, 510, 510, 510, 510, 511, 511, 511, 511, 511, 511, 511,
511, 511, 511, 511, 511, 511, 511, 511, 510, 510, 510, 510, 510, 509, 509, 509, 509, 508, 508, 508, 507, 507, 506, 506, 505, 505, 505, 504, 503, 503, 502, 502,
501, 501, 500, 499, 499, 498, 497, 496, 496, 495, 494, 493, 492, 492, 491, 490, 489, 488, 487, 486, 485, 484, 483, 482, 481, 480, 479, 478, 477, 476, 474, 473,
472, 471, 470, 468, 467, 466, 465, 463, 462, 461, 459, 458, 456, 455, 454, 452, 451, 449, 448, 446, 445, 443, 441, 440, 438, 437, 435, 433, 432, 430, 428, 427,
425, 423, 421, 419, 418, 416, 414, 412, 410, 408, 407, 405, 403, 401, 399, 397, 395, 393, 391, 389, 387, 385, 383, 381, 378, 376, 374, 372, 370, 368, 366, 363,
361, 359, 357, 354, 352, 350, 348, 345, 343, 341, 338, 336, 334, 331, 329, 326, 324, 322, 319, 317, 314, 312, 309, 307, 304, 302, 299, 297, 294, 291, 289, 286,
284, 281, 278, 276, 273, 270, 268, 265, 262, 260, 257, 254, 252, 249, 246, 243, 241, 238, 235, 232, 229, 227, 224, 221, 218, 215, 213, 210, 207, 204, 201, 198,
195, 192, 189, 187, 184, 181, 178, 175, 172, 169, 166, 163, 160, 157, 154, 151, 148, 145, 142, 139, 136, 133, 130, 127, 124, 121, 118, 115, 112, 109, 105, 102,
99, 96, 93, 90, 87, 84, 81, 78, 75, 71, 68, 65, 62, 59, 56, 53, 50, 47, 43, 40, 37, 34, 31, 28, 25, 21, 18, 15, 12, 9, 6, 3,
0, -4, -7, -10, -13, -16, -19, -22, -26, -29, -32, -35, -38, -41, -44, -48, -51, -54, -57, -60, -63, -66, -69, -72, -76, -79, -82, -85, -88, -91, -94, -97,
-100, -103, -106, -110, -113, -116, -119, -122, -125, -128, -131, -134, -137, -140, -143, -146, -149, -152, -155, -158, -161, -164, -167, -170, -173, -176, -179, -182, -185, -188, -190, -193,
-196, -199, -202, -205, -208, -211, -214, -216, -219, -222, -225, -228, -230, -233, -236, -239, -242, -244, -247, -250, -253, -255, -258, -261, -263, -266, -269, -271, -274, -277, -279, -282,
-285, -287, -290, -292, -295, -298, -300, -303, -305, -308, -310, -313, -315, -318, -320, -323, -325, -327, -330, -332, -335, -337, -339, -342, -344, -346, -349, -351, -353, -355, -358, -360,
-362, -364, -367, -369, -371, -373, -375, -377, -379, -382, -384, -386, -388, -390, -392, -394, -396, -398, -400, -402, -404, -406, -408, -409, -411, -413, -415, -417, -419, -420, -422, -424,
-426, -428, -429, -431, -433, -434, -436, -438, -439, -441, -442, -444, -446, -447, -449, -450, -452, -453, -455, -456, -457, -459, -460, -462, -463, -464, -466, -467, -468, -469, -471, -472,
-473, -474, -475, -477, -478, -479, -480, -481, -482, -483, -484, -485, -486, -487, -488, -489, -490, -491, -492, -493, -493, -494, -495, -496, -497, -497, -498, -499, -500, -500, -501, -502,
-502, -503, -503, -504, -504, -505, -506, -506, -506, -507, -507, -508, -508, -509, -509, -509, -510, -510, -510, -510, -511, -511, -511, -511, -511, -512, -512, -512, -512, -512, -512, -512,
-512, -512, -512, -512, -512, -512, -512, -512, -511, -511, -511, -511, -511, -510, -510, -510, -510, -509, -509, -509, -508, -508, -507, -507, -506, -506, -506, -505, -504, -504, -503, -503,
-502, -502, -501, -500, -500, -499, -498, -497, -497, -496, -495, -494, -493, -493, -492, -491, -490, -489, -488, -487, -486, -485, -484, -483, -482, -481, -480, -479, -478, -477, -475, -474,
-473, -472, -471, -469, -468, -467, -466, -464, -463, -462, -460, -459, -457, -456, -455, -453, -452, -450, -449, -447, -446, -444, -442, -441, -439, -438, -436, -434, -433, -431, -429, -428,
-426, -424, -422, -420, -419, -417, -415, -413, -411, -409, -408, -406, -404, -402, -400, -398, -396, -394, -392, -390, -388, -386, -384, -382, -379, -377, -375, -373, -371, -369, -367, -364,
-362, -360, -358, -355, -353, -351, -349, -346, -344, -342, -339, -337, -335, -332, -330, -327, -325, -323, -320, -318, -315, -313, -310, -308, -305, -303, -300, -298, -295, -292, -290, -287,
-285, -282, -279, -277, -274, -271, -269, -266, -263, -261, -258, -255, -253, -250, -247, -244, -242, -239, -236, -233, -230, -228, -225, -222, -219, -216, -214, -211, -208, -205, -202, -199,
-196, -193, -190, -188, -185, -182, -179, -176, -173, -170, -167, -164, -161, -158, -155, -152, -149, -146, -143, -140, -137, -134, -131, -128, -125, -122, -119, -116, -113, -110, -106, -103,
-100, -97, -94, -91, -88, -85, -82, -79, -76, -72, -69, -66, -63, -60, -57, -54, -51, -48, -44, -41, -38, -35, -32, -29, -26, -22, -19, -16, -13, -10, -7, -4};
const int16_t sawTable [SINE_TABLE_SIZE] = { -511,-510,-509,-508,-507,-506,-505,-504,-503,-502,-501,-500,-499,-498,-497,-496,-495,-494,-493,-492,-491,-490,-489,-488,-487,-486,-485,-484,-483,-482,-481,-480,
-479,-478,-477,-476,-475,-474,-473,-472,-471,-470,-469,-468,-467,-466,-465,-464,-463,-462,-461,-460,-459,-458,-457,-456,-455,-454,-453,-452,-451,-450,-449,-448,-447,-446,-445,-444,-443,-442,-441,-440,
-439,-438,-437,-436,-435,-434,-433,-432,-431,-430,-429,-428,-427,-426,-425,-424,-423,-422,-421,-420,-419,-418,-417,-416,-415,-414,-413,-412,-411,-410,-409,-408,-407,-406,-405,-404,-403,-402,-401,-400,
-399,-398,-397,-396,-395,-394,-393,-392,-391,-390,-389,-388,-387,-386,-385,-384,-383,-382,-381,-380,-379,-378,-377,-376,-375,-374,-373,-372,-371,-370,-369,-368,-367,-366,-365,-364,-363,-362,-361,-360,
-359,-358,-357,-356,-355,-354,-353,-352,-351,-350,-349,-348,-347,-346,-345,-344,-343,-342,-341,-340,-339,-338,-337,-336,-335,-334,-333,-332,-331,-330,-329,-328,-327,-326,-325,-324,-323,-322,-321,-320,
-319,-318,-317,-316,-315,-314,-313,-312,-311,-310,-309,-308,-307,-306,-305,-304,-303,-302,-301,-300,-299,-298,-297,-296,-295,-294,-293,-292,-291,-290,-289,-288,-287,-286,-285,-284,-283,-282,-281,-280,
-279,-278,-277,-276,-275,-274,-273,-272,-271,-270,-269,-268,-267,-266,-265,-264,-263,-262,-261,-260,-259,-258,-257,-256,-255,-254,-253,-252,-251,-250,-249,-248,-247,-246,-245,-244,-243,-242,-241,-240,
-239,-238,-237,-236,-235,-234,-233,-232,-231,-230,-229,-228,-227,-226,-225,-224,-223,-222,-221,-220,-219,-218,-217,-216,-215,-214,-213,-212,-211,-210,-209,-208,-207,-206,-205,-204,-203,-202,-201,-200,
-199,-198,-197,-196,-195,-194,-193,-192,-191,-190,-189,-188,-187,-186,-185,-184,-183,-182,-181,-180,-179,-178,-177,-176,-175,-174,-173,-172,-171,-170,-169,-168,-167,-166,-165,-164,-163,-162,-161,-160,
-159,-158,-157,-156,-155,-154,-153,-152,-151,-150,-149,-148,-147,-146,-145,-144,-143,-142,-141,-140,-139,-138,-137,-136,-135,-134,-133,-132,-131,-130,-129,-128,-127,-126,-125,-124,-123,-122,-121,-120,
-119,-118,-117,-116,-115,-114,-113,-112,-111,-110,-109,-108,-107,-106,-105,-104,-103,-102,-101,-100,-99,-98,-97,-96,-95,-94,-93,-92,-91,-90,-89,-88,-87,-86,-85,-84,-83,-82,-81,-80,
-79,-78,-77,-76,-75,-74,-73,-72,-71,-70,-69,-68,-67,-66,-65,-64,-63,-62,-61,-60,-59,-58,-57,-56,-55,-54,-53,-52,-51,-50,-49,-48,-47,-46,-45,-44,-43,-42,-41,-40,
-39,-38,-37,-36,-35,-34,-33,-32,-31,-30,-29,-28,-27,-26,-25,-24,-23,-22,-21,-20,-19,-18,-17,-16,-15,-14,-13,-12,-11,-10,-9,-8,-7,-6,-5,-4,-3,-2,-1,0,
0,
1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,
41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,
81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,
121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,
161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,
201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,
241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,
281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,
321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,
361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,
401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,
441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,
481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510};
const int16_t triTable [SINE_TABLE_SIZE] = {-511, -509,-507,-505,-503,-501,-499,-497,-495,-493,-491,-489,-487,-485,-483,-481,-479,-477,-475,-473,-471,-469,-467,-465,-463,-461,-459,-457,-455,-453,-451,-449,-447,-445,-443,-441,-439,-437,-435,-433,-431,
-429,-427,-425,-423,-421,-419,-417,-415,-413,-411,-409,-407,-405,-403,-401,-399,-397,-395,-393,-391,-389,-387,-385,-383,-381,-379,-377,-375,-373,-371,-369,-367,-365,-363,-361,-359,-357,-355,-353,-351,
-349,-347,-345,-343,-341,-339,-337,-335,-333,-331,-329,-327,-325,-323,-321,-319,-317,-315,-313,-311,-309,-307,-305,-303,-301,-299,-297,-295,-293,-291,-289,-287,-285,-283,-281,-279,-277,-275,-273,-271,
-269,-267,-265,-263,-261,-259,-257,-255,-253,-251,-249,-247,-245,-243,-241,-239,-237,-235,-233,-231,-229,-227,-225,-223,-221,-219,-217,-215,-213,-211,-209,-207,-205,-203,-201,-199,-197,-195,-193,-191,
-189,-187,-185,-183,-181,-179,-177,-175,-173,-171,-169,-167,-165,-163,-161,-159,-157,-155,-153,-151,-149,-147,-145,-143,-141,-139,-137,-135,-133,-131,-129,-127,-125,-123,-121,-119,-117,-115,-113,-111,
-109,-107,-105,-103,-101,-99,-97,-95,-93,-91,-89,-87,-85,-83,-81,-79,-77,-75,-73,-71,-69,-67,-65,-63,-61,-59,-57,-55,-53,-51,-49,-47,-45,-43,-41,-39,-37,-35,-33,-31,
-29,-27,-25,-23,-21,-19,-17,-15,-13,-11,-9,-7,-5,-3,-1,0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,
50,52,54,56,58,60,62,64,66,68,70,72,74,76,78,80,82,84,86,88,90,92,94,96,98,100,102,104,106,108,110,112,114,116,118,120,122,124,126,128,
130,132,134,136,138,140,142,144,146,148,150,152,154,156,158,160,162,164,166,168,170,172,174,176,178,180,182,184,186,188,190,192,194,196,198,200,202,204,206,208,
210,212,214,216,218,220,222,224,226,228,230,232,234,236,238,240,242,244,246,248,250,252,254,256,258,260,262,264,266,268,270,272,274,276,278,280,282,284,286,288,
290,292,294,296,298,300,302,304,306,308,310,312,314,316,318,320,322,324,326,328,330,332,334,336,338,340,342,344,346,348,350,352,354,356,358,360,362,364,366,368,
370,372,374,376,378,380,382,384,386,388,390,392,394,396,398,400,402,404,406,408,410,412,414,416,418,420,422,424,426,428,430,432,434,436,438,440,442,444,446,448,
450,452,454,456,458,460,462,464,466,468,470,472,474,476,478,480,482,484,486,488,490,492,494,496,498,500,502,504,506,508,510,510,508,506,504,502,500,498,496,494,
492,490,488,486,484,482,480,478,476,474,472,470,468,466,464,462,460,458,456,454,452,450,448,446,444,442,440,438,436,434,432,430,428,426,424,422,420,418,416,414,
412,410,408,406,404,402,400,398,396,394,392,390,388,386,384,382,380,378,376,374,372,370,368,366,364,362,360,358,356,354,352,350,348,346,344,342,340,338,336,334,
332,330,328,326,324,322,320,318,316,314,312,310,308,306,304,302,300,298,296,294,292,290,288,286,284,282,280,278,276,274,272,270,268,266,264,262,260,258,256,254,
252,250,248,246,244,242,240,238,236,234,232,230,228,226,224,222,220,218,216,214,212,210,208,206,204,202,200,198,196,194,192,190,188,186,184,182,180,178,176,174,
172,170,168,166,164,162,160,158,156,154,152,150,148,146,144,142,140,138,136,134,132,130,128,126,124,122,120,118,116,114,112,110,108,106,104,102,100,98,96,94,
92,90,88,86,84,82,80,78,76,74,72,70,68,66,64,62,60,58,56,54,52,50,48,46,44,42,40,38,36,34,32,30,28,26,24,22,20,18,16,14,
12,10,8,6,4,2,0,-1,-3,-5,-7,-9,-11,-13,-15,-17,-19,-21,-23,-25,-27,-29,-31,-33,-35,-37,-39,-41,-43,-45,-47,-49,-51,-53,-55,-57,-59,-61,-63,-65,
-67,-69,-71,-73,-75,-77,-79,-81,-83,-85,-87,-89,-91,-93,-95,-97,-99,-101,-103,-105,-107,-109,-111,-113,-115,-117,-119,-121,-123,-125,-127,-129,-131,-133,-135,-137,-139,-141,-143,-145,
-147,-149,-151,-153,-155,-157,-159,-161,-163,-165,-167,-169,-171,-173,-175,-177,-179,-181,-183,-185,-187,-189,-191,-193,-195,-197,-199,-201,-203,-205,-207,-209,-211,-213,-215,-217,-219,-221,-223,-225,
-227,-229,-231,-233,-235,-237,-239,-241,-243,-245,-247,-249,-251,-253,-255,-257,-259,-261,-263,-265,-267,-269,-271,-273,-275,-277,-279,-281,-283,-285,-287,-289,-291,-293,-295,-297,-299,-301,-303,-305,
-307,-309,-311,-313,-315,-317,-319,-321,-323,-325,-327,-329,-331,-333,-335,-337,-339,-341,-343,-345,-347,-349,-351,-353,-355,-357,-359,-361,-363,-365,-367,-369,-371,-373,-375,-377,-379,-381,-383,-385,
-387,-389,-391,-393,-395,-397,-399,-401,-403,-405,-407,-409,-411,-413,-415,-417,-419,-421,-423,-425,-427,-429,-431,-433,-435,-437,-439,-441,-443,-445,-447,-449,-451,-453,-455,-457,-459,-461,-463,-465,
-467,-469,-471,-473,-475,-477,-479,-481,-483,-485,-487,-489,-491,-493,-495,-497,-499,-501,-503,-505,-507,-509};
const int16_t sqrTable [SINE_TABLE_SIZE] = {
511,
511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,
511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,
511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,
511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,
511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,
511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,
511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,
511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,
511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,
511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,
511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,
511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,
511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,-511,-511,-511,-511,-511,-511,-511,-511,-511,
-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,
-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,
-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,
-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,
-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,
-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,
-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,
-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,
-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,
-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,
-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,
-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,
-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511,-511
};
// Preset voices parameters for the operators.
const int16_t default_presetVoice[PRESET_VOICES][NUM_OPERATORS][NUM_VOICE_PARAMS] = { { {0, 129, 0, 4095, 0, 0, 0, 0, 60, 0, 1, 1, 0, 0, 0, 50, 512, 20, 4095, 2000, 0, 0},
{0, 129, 0, 1000, 0,0, 0, 100, 69, 100, 1, -1, 1, 1, 0, 70, 512, 20, 4095, 2500, 0, 0},
{0, 128, 0, 4095, 0, 0, 0, 0, 60, 0, 1, 1, 0, 0, 0, 50, 512, 20, 4095, 2000, 0, 0},
{0, 129, 0, 1000, 0, 0, 0, 100, 69, 100, 1, -1, 1, 1, 0, 70, 512, 20, 4095, 2500, 0, 0},
{0, 128, 0, 4095, 0, 0, 0, 0, 60, 0, 1, 1, 0, 0, 0, 50, 512, 20, 4095, 2000, 0, 0},
{0, 2441,0, 100, 200, 0, 0, 200, 69, 300, 1, -1, 1, 1, 0, 25, 128, 20, 4095, 800, 0, 0} } };
// Preset voices algorithms.
const uint8_t default_presetAlgorithm[PRESET_VOICES] = {4};
const char * default_patchNames[PRESET_VOICES] = {"Default"};