-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtables.h
385 lines (373 loc) · 32.9 KB
/
tables.h
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
#ifndef _TABLES_H
#define _TABLES_H
// Tables computed for CRAYON_555, 48000.00 samples/sec
const long SAMPLE_RATE = 48000;
const long CONTROL_RATE = 375;
const int CONTROL_RATE_RATIO = 128;
const int CONTROL_RATE_MASK = 127;
const int TABLE_SIZE = 1024;
const int TABLE_MASK = 1023;
const int ENV_BITS = 23;
const long MAX_ENV = 8388607;
const int MIDI_RATE = 1500;
const int MIDI_RATE_RATIO = 32;
const int MIDI_RATE_MASK = 31;
const int PHASOR_FRACTION_BITS = 22;
// for envRate in 0 (fastest) to 255 (slowest), add this much per sample frame
// to the 23-bit envelope level to reach target.
long envRateTable[256] =
{
87381, 84751, 82200, 79725, 77326, 74998, 72741, 70551,
68427, 66368, 64370, 62432, 60553, 58730, 56963, 55248,
53585, 51972, 50408, 48890, 47419, 45991, 44607, 43264,
41962, 40699, 39474, 38286, 37133, 36016, 34931, 33880,
32860, 31871, 30912, 29981, 29079, 28203, 27355, 26531,
25733, 24958, 24207, 23478, 22771, 22086, 21421, 20776,
20151, 19544, 18956, 18385, 17832, 17295, 16775, 16270,
15780, 15305, 14844, 14397, 13964, 13544, 13136, 12741,
12357, 11985, 11624, 11274, 10935, 10606, 10287, 9977,
9677, 9385, 9103, 8829, 8563, 8305, 8055, 7813,
7578, 7350, 7128, 6914, 6706, 6504, 6308, 6118,
5934, 5755, 5582, 5414, 5251, 5093, 4940, 4791,
4647, 4507, 4371, 4240, 4112, 3988, 3868, 3752,
3639, 3529, 3423, 3320, 3220, 3123, 3029, 2938,
2849, 2764, 2680, 2600, 2521, 2445, 2372, 2300,
2231, 2164, 2099, 2036, 1974, 1915, 1857, 1801,
1747, 1695, 1644, 1594, 1546, 1499, 1454, 1411,
1368, 1327, 1287, 1248, 1211, 1174, 1139, 1104,
1071, 1039, 1008, 977, 948, 919, 892, 865,
839, 813, 789, 765, 742, 720, 698, 677,
657, 637, 618, 599, 581, 564, 547, 530,
514, 499, 484, 469, 455, 441, 428, 415,
403, 390, 379, 367, 356, 345, 335, 325,
315, 306, 296, 287, 279, 270, 262, 254,
247, 239, 232, 225, 218, 212, 205, 199,
193, 187, 182, 176, 171, 166, 161, 156,
151, 147, 142, 138, 134, 130, 126, 122,
118, 115, 111, 108, 105, 101, 98, 95,
92, 90, 87, 84, 82, 79, 77, 75,
72, 70, 68, 66, 64, 62, 60, 58,
56, 55, 53, 52, 50, 48, 47, 46,
44, 43, 41, 40, 39, 38, 37, 36,
};
// 1024-point unipolar sine
const unsigned short sine[TABLE_SIZE] =
{
0, 0, 2, 5, 9, 15, 22, 30, 39, 49, 61, 74, 88, 104, 120, 138,
157, 178, 199, 222, 246, 271, 298, 325, 354, 384, 416, 448, 482, 517, 553, 590,
629, 669, 710, 752, 796, 840, 886, 933, 981, 1031, 1082, 1133, 1186, 1241, 1296, 1353,
1410, 1469, 1530, 1591, 1653, 1717, 1782, 1848, 1915, 1983, 2053, 2123, 2195, 2268, 2342, 2417,
2494, 2571, 2650, 2730, 2811, 2893, 2976, 3060, 3145, 3232, 3320, 3408, 3498, 3589, 3681, 3774,
3869, 3964, 4060, 4158, 4256, 4356, 4457, 4558, 4661, 4765, 4870, 4976, 5083, 5191, 5300, 5411,
5522, 5634, 5747, 5861, 5977, 6093, 6210, 6329, 6448, 6568, 6689, 6812, 6935, 7059, 7184, 7310,
7437, 7565, 7694, 7824, 7955, 8087, 8220, 8353, 8488, 8623, 8760, 8897, 9035, 9174, 9314, 9455,
9597, 9739, 9883, 10027, 10172, 10318, 10465, 10613, 10762, 10911, 11061, 11212, 11364, 11517, 11670, 11824,
11979, 12135, 12292, 12449, 12607, 12766, 12926, 13086, 13247, 13409, 13572, 13735, 13899, 14064, 14229, 14395,
14562, 14730, 14898, 15067, 15236, 15406, 15577, 15749, 15921, 16094, 16267, 16441, 16616, 16791, 16967, 17143,
17320, 17498, 17676, 17855, 18034, 18214, 18394, 18575, 18757, 18939, 19121, 19304, 19488, 19672, 19857, 20042,
20227, 20413, 20600, 20786, 20974, 21162, 21350, 21539, 21728, 21917, 22107, 22297, 22488, 22679, 22871, 23063,
23255, 23447, 23640, 23834, 24027, 24221, 24415, 24610, 24805, 25000, 25195, 25391, 25587, 25784, 25980, 26177,
26374, 26571, 26769, 26967, 27165, 27363, 27561, 27760, 27959, 28158, 28357, 28556, 28755, 28955, 29155, 29355,
29555, 29755, 29955, 30156, 30356, 30557, 30757, 30958, 31159, 31360, 31560, 31761, 31962, 32163, 32364, 32565,
32766, 32968, 33169, 33370, 33571, 33772, 33973, 34173, 34374, 34575, 34776, 34976, 35177, 35377, 35578, 35778,
35978, 36178, 36378, 36578, 36778, 36977, 37176, 37375, 37574, 37773, 37972, 38170, 38368, 38566, 38764, 38962,
39159, 39356, 39553, 39749, 39946, 40142, 40338, 40533, 40728, 40923, 41118, 41312, 41506, 41699, 41893, 42086,
42278, 42470, 42662, 42854, 43045, 43236, 43426, 43616, 43805, 43994, 44183, 44371, 44559, 44747, 44933, 45120,
45306, 45491, 45676, 45861, 46045, 46229, 46412, 46594, 46776, 46958, 47139, 47319, 47499, 47678, 47857, 48035,
48213, 48390, 48566, 48742, 48917, 49092, 49266, 49439, 49612, 49784, 49956, 50127, 50297, 50466, 50635, 50803,
50971, 51138, 51304, 51469, 51634, 51798, 51961, 52124, 52286, 52447, 52607, 52767, 52926, 53084, 53241, 53398,
53554, 53709, 53863, 54016, 54169, 54321, 54472, 54622, 54771, 54920, 55068, 55215, 55361, 55506, 55650, 55794,
55936, 56078, 56219, 56359, 56498, 56636, 56773, 56910, 57045, 57180, 57313, 57446, 57578, 57709, 57839, 57968,
58096, 58223, 58349, 58474, 58598, 58721, 58844, 58965, 59085, 59204, 59323, 59440, 59556, 59672, 59786, 59899,
60011, 60122, 60233, 60342, 60450, 60557, 60663, 60768, 60872, 60975, 61076, 61177, 61277, 61375, 61473, 61569,
61664, 61759, 61852, 61944, 62035, 62125, 62213, 62301, 62388, 62473, 62557, 62640, 62722, 62803, 62883, 62962,
63039, 63116, 63191, 63265, 63338, 63410, 63480, 63550, 63618, 63685, 63751, 63816, 63880, 63942, 64003, 64064,
64123, 64180, 64237, 64292, 64347, 64400, 64451, 64502, 64552, 64600, 64647, 64693, 64737, 64781, 64823, 64864,
64904, 64943, 64980, 65016, 65051, 65085, 65117, 65149, 65179, 65208, 65235, 65262, 65287, 65311, 65334, 65355,
65376, 65395, 65413, 65429, 65445, 65459, 65472, 65484, 65494, 65503, 65511, 65518, 65524, 65528, 65531, 65533,
65534, 65533, 65531, 65528, 65524, 65518, 65511, 65503, 65494, 65484, 65472, 65459, 65445, 65429, 65413, 65395,
65376, 65355, 65334, 65311, 65287, 65262, 65235, 65208, 65179, 65149, 65117, 65085, 65051, 65016, 64980, 64943,
64904, 64864, 64823, 64781, 64737, 64693, 64647, 64600, 64552, 64502, 64451, 64400, 64347, 64292, 64237, 64180,
64123, 64064, 64003, 63942, 63880, 63816, 63751, 63685, 63618, 63550, 63480, 63410, 63338, 63265, 63191, 63116,
63039, 62962, 62883, 62803, 62722, 62640, 62557, 62473, 62388, 62301, 62213, 62125, 62035, 61944, 61852, 61759,
61664, 61569, 61473, 61375, 61277, 61177, 61076, 60975, 60872, 60768, 60663, 60557, 60450, 60342, 60233, 60122,
60011, 59899, 59786, 59672, 59556, 59440, 59323, 59204, 59085, 58965, 58844, 58721, 58598, 58474, 58349, 58223,
58096, 57968, 57839, 57709, 57578, 57446, 57313, 57180, 57045, 56910, 56773, 56636, 56498, 56359, 56219, 56078,
55936, 55794, 55650, 55506, 55361, 55215, 55068, 54920, 54771, 54622, 54472, 54321, 54169, 54016, 53863, 53709,
53554, 53398, 53241, 53084, 52926, 52767, 52607, 52447, 52286, 52124, 51961, 51798, 51634, 51469, 51304, 51138,
50971, 50803, 50635, 50466, 50297, 50127, 49956, 49784, 49612, 49439, 49266, 49092, 48917, 48742, 48566, 48390,
48213, 48035, 47857, 47678, 47499, 47319, 47139, 46958, 46776, 46594, 46412, 46229, 46045, 45861, 45676, 45491,
45306, 45120, 44933, 44747, 44559, 44371, 44183, 43994, 43805, 43616, 43426, 43236, 43045, 42854, 42662, 42470,
42278, 42086, 41893, 41699, 41506, 41312, 41118, 40923, 40728, 40533, 40338, 40142, 39946, 39749, 39553, 39356,
39159, 38962, 38764, 38566, 38368, 38170, 37972, 37773, 37574, 37375, 37176, 36977, 36778, 36578, 36378, 36178,
35978, 35778, 35578, 35377, 35177, 34976, 34776, 34575, 34374, 34173, 33973, 33772, 33571, 33370, 33169, 32968,
32767, 32565, 32364, 32163, 31962, 31761, 31560, 31360, 31159, 30958, 30757, 30557, 30356, 30156, 29955, 29755,
29555, 29355, 29155, 28955, 28755, 28556, 28357, 28158, 27959, 27760, 27561, 27363, 27165, 26967, 26769, 26571,
26374, 26177, 25980, 25784, 25587, 25391, 25195, 25000, 24805, 24610, 24415, 24221, 24027, 23834, 23640, 23447,
23255, 23063, 22871, 22679, 22488, 22297, 22107, 21917, 21728, 21539, 21350, 21162, 20974, 20786, 20600, 20413,
20227, 20042, 19857, 19672, 19488, 19304, 19121, 18939, 18757, 18575, 18394, 18214, 18034, 17855, 17676, 17498,
17320, 17143, 16967, 16791, 16616, 16441, 16267, 16094, 15921, 15749, 15577, 15406, 15236, 15067, 14898, 14730,
14562, 14395, 14229, 14064, 13899, 13735, 13572, 13409, 13247, 13086, 12926, 12766, 12607, 12449, 12292, 12135,
11979, 11824, 11670, 11517, 11364, 11212, 11061, 10911, 10762, 10613, 10465, 10318, 10172, 10027, 9883, 9739,
9597, 9455, 9314, 9174, 9035, 8897, 8760, 8623, 8488, 8353, 8220, 8087, 7955, 7824, 7694, 7565,
7437, 7310, 7184, 7059, 6935, 6812, 6689, 6568, 6448, 6329, 6210, 6093, 5977, 5861, 5747, 5634,
5522, 5411, 5300, 5191, 5083, 4976, 4870, 4765, 4661, 4558, 4457, 4356, 4256, 4158, 4060, 3964,
3869, 3774, 3681, 3589, 3498, 3408, 3320, 3232, 3145, 3060, 2976, 2893, 2811, 2730, 2650, 2571,
2494, 2417, 2342, 2268, 2195, 2123, 2053, 1983, 1915, 1848, 1782, 1717, 1653, 1591, 1530, 1469,
1410, 1353, 1296, 1241, 1186, 1133, 1082, 1031, 981, 933, 886, 840, 796, 752, 710, 669,
629, 590, 553, 517, 482, 448, 416, 384, 354, 325, 298, 271, 246, 222, 199, 178,
157, 138, 120, 104, 88, 74, 61, 49, 39, 30, 22, 15, 9, 5, 2, 0,
};
// 1024-point unipolar saw with cosine flyback
const unsigned short saw[TABLE_SIZE] =
{
0, 39, 157, 354, 629, 981, 1410, 1915, 2494, 3145, 3869, 4661, 5522, 6448, 7437, 8488,
9597, 10762, 11979, 13247, 14562, 15921, 17320, 18757, 20227, 21728, 23255, 24805, 26374, 27959, 29555, 31159,
32766, 34374, 35978, 37574, 39159, 40728, 42278, 43805, 45306, 46776, 48213, 49612, 50971, 52286, 53554, 54771,
55936, 57045, 58096, 59085, 60011, 60872, 61664, 62388, 63039, 63618, 64123, 64552, 64904, 65179, 65376, 65494,
65534, 65465, 65397, 65329, 65260, 65192, 65124, 65056, 64987, 64919, 64851, 64783, 64714, 64646, 64578, 64510,
64441, 64373, 64305, 64236, 64168, 64100, 64032, 63963, 63895, 63827, 63759, 63690, 63622, 63554, 63486, 63417,
63349, 63281, 63213, 63144, 63076, 63008, 62939, 62871, 62803, 62735, 62666, 62598, 62530, 62462, 62393, 62325,
62257, 62189, 62120, 62052, 61984, 61915, 61847, 61779, 61711, 61642, 61574, 61506, 61438, 61369, 61301, 61233,
61165, 61096, 61028, 60960, 60892, 60823, 60755, 60687, 60618, 60550, 60482, 60414, 60345, 60277, 60209, 60141,
60072, 60004, 59936, 59868, 59799, 59731, 59663, 59594, 59526, 59458, 59390, 59321, 59253, 59185, 59117, 59048,
58980, 58912, 58844, 58775, 58707, 58639, 58571, 58502, 58434, 58366, 58297, 58229, 58161, 58093, 58024, 57956,
57888, 57820, 57751, 57683, 57615, 57547, 57478, 57410, 57342, 57273, 57205, 57137, 57069, 57000, 56932, 56864,
56796, 56727, 56659, 56591, 56523, 56454, 56386, 56318, 56250, 56181, 56113, 56045, 55976, 55908, 55840, 55772,
55703, 55635, 55567, 55499, 55430, 55362, 55294, 55226, 55157, 55089, 55021, 54952, 54884, 54816, 54748, 54679,
54611, 54543, 54475, 54406, 54338, 54270, 54202, 54133, 54065, 53997, 53929, 53860, 53792, 53724, 53655, 53587,
53519, 53451, 53382, 53314, 53246, 53178, 53109, 53041, 52973, 52905, 52836, 52768, 52700, 52631, 52563, 52495,
52427, 52358, 52290, 52222, 52154, 52085, 52017, 51949, 51881, 51812, 51744, 51676, 51608, 51539, 51471, 51403,
51334, 51266, 51198, 51130, 51061, 50993, 50925, 50857, 50788, 50720, 50652, 50584, 50515, 50447, 50379, 50310,
50242, 50174, 50106, 50037, 49969, 49901, 49833, 49764, 49696, 49628, 49560, 49491, 49423, 49355, 49287, 49218,
49150, 49082, 49013, 48945, 48877, 48809, 48740, 48672, 48604, 48536, 48467, 48399, 48331, 48263, 48194, 48126,
48058, 47990, 47921, 47853, 47785, 47716, 47648, 47580, 47512, 47443, 47375, 47307, 47239, 47170, 47102, 47034,
46966, 46897, 46829, 46761, 46692, 46624, 46556, 46488, 46419, 46351, 46283, 46215, 46146, 46078, 46010, 45942,
45873, 45805, 45737, 45669, 45600, 45532, 45464, 45395, 45327, 45259, 45191, 45122, 45054, 44986, 44918, 44849,
44781, 44713, 44645, 44576, 44508, 44440, 44371, 44303, 44235, 44167, 44098, 44030, 43962, 43894, 43825, 43757,
43689, 43621, 43552, 43484, 43416, 43348, 43279, 43211, 43143, 43074, 43006, 42938, 42870, 42801, 42733, 42665,
42597, 42528, 42460, 42392, 42324, 42255, 42187, 42119, 42050, 41982, 41914, 41846, 41777, 41709, 41641, 41573,
41504, 41436, 41368, 41300, 41231, 41163, 41095, 41027, 40958, 40890, 40822, 40753, 40685, 40617, 40549, 40480,
40412, 40344, 40276, 40207, 40139, 40071, 40003, 39934, 39866, 39798, 39729, 39661, 39593, 39525, 39456, 39388,
39320, 39252, 39183, 39115, 39047, 38979, 38910, 38842, 38774, 38706, 38637, 38569, 38501, 38432, 38364, 38296,
38228, 38159, 38091, 38023, 37955, 37886, 37818, 37750, 37682, 37613, 37545, 37477, 37408, 37340, 37272, 37204,
37135, 37067, 36999, 36931, 36862, 36794, 36726, 36658, 36589, 36521, 36453, 36385, 36316, 36248, 36180, 36111,
36043, 35975, 35907, 35838, 35770, 35702, 35634, 35565, 35497, 35429, 35361, 35292, 35224, 35156, 35087, 35019,
34951, 34883, 34814, 34746, 34678, 34610, 34541, 34473, 34405, 34337, 34268, 34200, 34132, 34064, 33995, 33927,
33859, 33790, 33722, 33654, 33586, 33517, 33449, 33381, 33313, 33244, 33176, 33108, 33040, 32971, 32903, 32835,
32767, 32698, 32630, 32562, 32493, 32425, 32357, 32289, 32220, 32152, 32084, 32016, 31947, 31879, 31811, 31743,
31674, 31606, 31538, 31469, 31401, 31333, 31265, 31196, 31128, 31060, 30992, 30923, 30855, 30787, 30719, 30650,
30582, 30514, 30446, 30377, 30309, 30241, 30172, 30104, 30036, 29968, 29899, 29831, 29763, 29695, 29626, 29558,
29490, 29422, 29353, 29285, 29217, 29148, 29080, 29012, 28944, 28875, 28807, 28739, 28671, 28602, 28534, 28466,
28398, 28329, 28261, 28193, 28125, 28056, 27988, 27920, 27851, 27783, 27715, 27647, 27578, 27510, 27442, 27374,
27305, 27237, 27169, 27101, 27032, 26964, 26896, 26827, 26759, 26691, 26623, 26554, 26486, 26418, 26350, 26281,
26213, 26145, 26077, 26008, 25940, 25872, 25804, 25735, 25667, 25599, 25530, 25462, 25394, 25326, 25257, 25189,
25121, 25053, 24984, 24916, 24848, 24780, 24711, 24643, 24575, 24506, 24438, 24370, 24302, 24233, 24165, 24097,
24029, 23960, 23892, 23824, 23756, 23687, 23619, 23551, 23483, 23414, 23346, 23278, 23209, 23141, 23073, 23005,
22936, 22868, 22800, 22732, 22663, 22595, 22527, 22459, 22390, 22322, 22254, 22185, 22117, 22049, 21981, 21912,
21844, 21776, 21708, 21639, 21571, 21503, 21435, 21366, 21298, 21230, 21162, 21093, 21025, 20957, 20888, 20820,
20752, 20684, 20615, 20547, 20479, 20411, 20342, 20274, 20206, 20138, 20069, 20001, 19933, 19864, 19796, 19728,
19660, 19591, 19523, 19455, 19387, 19318, 19250, 19182, 19114, 19045, 18977, 18909, 18841, 18772, 18704, 18636,
18567, 18499, 18431, 18363, 18294, 18226, 18158, 18090, 18021, 17953, 17885, 17817, 17748, 17680, 17612, 17543,
17475, 17407, 17339, 17270, 17202, 17134, 17066, 16997, 16929, 16861, 16793, 16724, 16656, 16588, 16520, 16451,
16383, 16315, 16246, 16178, 16110, 16042, 15973, 15905, 15837, 15769, 15700, 15632, 15564, 15496, 15427, 15359,
15291, 15223, 15154, 15086, 15018, 14949, 14881, 14813, 14745, 14676, 14608, 14540, 14472, 14403, 14335, 14267,
14199, 14130, 14062, 13994, 13925, 13857, 13789, 13721, 13652, 13584, 13516, 13448, 13379, 13311, 13243, 13175,
13106, 13038, 12970, 12902, 12833, 12765, 12697, 12628, 12560, 12492, 12424, 12355, 12287, 12219, 12151, 12082,
12014, 11946, 11878, 11809, 11741, 11673, 11604, 11536, 11468, 11400, 11331, 11263, 11195, 11127, 11058, 10990,
10922, 10854, 10785, 10717, 10649, 10581, 10512, 10444, 10376, 10307, 10239, 10171, 10103, 10034, 9966, 9898,
9830, 9761, 9693, 9625, 9557, 9488, 9420, 9352, 9283, 9215, 9147, 9079, 9010, 8942, 8874, 8806,
8737, 8669, 8601, 8533, 8464, 8396, 8328, 8260, 8191, 8123, 8055, 7986, 7918, 7850, 7782, 7713,
7645, 7577, 7509, 7440, 7372, 7304, 7236, 7167, 7099, 7031, 6962, 6894, 6826, 6758, 6689, 6621,
6553, 6485, 6416, 6348, 6280, 6212, 6143, 6075, 6007, 5939, 5870, 5802, 5734, 5665, 5597, 5529,
5461, 5392, 5324, 5256, 5188, 5119, 5051, 4983, 4915, 4846, 4778, 4710, 4641, 4573, 4505, 4437,
4368, 4300, 4232, 4164, 4095, 4027, 3959, 3891, 3822, 3754, 3686, 3618, 3549, 3481, 3413, 3344,
3276, 3208, 3140, 3071, 3003, 2935, 2867, 2798, 2730, 2662, 2594, 2525, 2457, 2389, 2320, 2252,
2184, 2116, 2047, 1979, 1911, 1843, 1774, 1706, 1638, 1570, 1501, 1433, 1365, 1297, 1228, 1160,
1092, 1023, 955, 887, 819, 750, 682, 614, 546, 477, 409, 341, 273, 204, 136, 68,
};
// 1024-point unipolar triangle approximated to 13th harmonic
const unsigned short tri[TABLE_SIZE] =
{
0, 4, 15, 33, 58, 90, 129, 175, 228, 288, 354, 426, 504, 589, 679, 775,
877, 983, 1094, 1210, 1331, 1456, 1584, 1716, 1852, 1990, 2132, 2276, 2422, 2571, 2721, 2872,
3025, 3179, 3333, 3489, 3644, 3800, 3955, 4111, 4265, 4420, 4573, 4725, 4877, 5027, 5176, 5324,
5470, 5615, 5759, 5900, 6041, 6179, 6316, 6452, 6586, 6718, 6849, 6978, 7106, 7233, 7359, 7483,
7607, 7729, 7851, 7972, 8092, 8211, 8331, 8450, 8568, 8687, 8805, 8924, 9043, 9162, 9281, 9401,
9522, 9643, 9765, 9887, 10010, 10134, 10259, 10385, 10512, 10640, 10769, 10898, 11029, 11161, 11293, 11427,
11561, 11696, 11833, 11969, 12107, 12245, 12384, 12523, 12663, 12803, 12944, 13085, 13226, 13367, 13508, 13650,
13791, 13932, 14072, 14213, 14353, 14493, 14632, 14771, 14909, 15046, 15183, 15320, 15455, 15590, 15724, 15858,
15991, 16123, 16254, 16384, 16514, 16644, 16772, 16900, 17028, 17154, 17281, 17407, 17532, 17657, 17782, 17907,
18031, 18156, 18280, 18404, 18528, 18653, 18777, 18902, 19027, 19152, 19278, 19404, 19530, 19657, 19785, 19912,
20041, 20170, 20300, 20430, 20561, 20692, 20824, 20957, 21090, 21224, 21358, 21493, 21629, 21765, 21901, 22038,
22175, 22312, 22450, 22588, 22726, 22864, 23002, 23141, 23279, 23418, 23556, 23694, 23832, 23969, 24107, 24244,
24381, 24517, 24653, 24788, 24923, 25057, 25191, 25325, 25458, 25590, 25722, 25853, 25984, 26114, 26243, 26373,
26501, 26629, 26757, 26885, 27012, 27139, 27265, 27391, 27517, 27643, 27769, 27895, 28020, 28146, 28272, 28398,
28524, 28650, 28777, 28903, 29030, 29158, 29286, 29414, 29543, 29672, 29801, 29932, 30062, 30193, 30325, 30457,
30590, 30723, 30857, 30991, 31125, 31260, 31396, 31532, 31668, 31805, 31941, 32079, 32216, 32353, 32491, 32629,
32767, 32904, 33042, 33180, 33317, 33454, 33592, 33728, 33865, 34001, 34137, 34273, 34408, 34542, 34676, 34810,
34943, 35076, 35208, 35340, 35471, 35601, 35732, 35861, 35990, 36119, 36247, 36375, 36503, 36630, 36756, 36883,
37009, 37135, 37261, 37387, 37513, 37638, 37764, 37890, 38016, 38142, 38268, 38394, 38521, 38648, 38776, 38904,
39032, 39160, 39290, 39419, 39549, 39680, 39811, 39943, 40075, 40208, 40342, 40476, 40610, 40745, 40880, 41016,
41152, 41289, 41426, 41564, 41701, 41839, 41977, 42115, 42254, 42392, 42531, 42669, 42807, 42945, 43083, 43221,
43358, 43495, 43632, 43768, 43904, 44040, 44175, 44309, 44443, 44576, 44709, 44841, 44972, 45103, 45233, 45363,
45492, 45621, 45748, 45876, 46003, 46129, 46255, 46381, 46506, 46631, 46756, 46880, 47005, 47129, 47253, 47377,
47502, 47626, 47751, 47876, 48001, 48126, 48252, 48379, 48505, 48633, 48761, 48889, 49019, 49149, 49279, 49410,
49542, 49675, 49809, 49943, 50078, 50213, 50350, 50487, 50624, 50762, 50901, 51040, 51180, 51320, 51461, 51601,
51742, 51883, 52025, 52166, 52307, 52448, 52589, 52730, 52870, 53010, 53149, 53288, 53426, 53564, 53700, 53837,
53972, 54106, 54240, 54372, 54504, 54635, 54764, 54893, 55021, 55148, 55274, 55399, 55523, 55646, 55768, 55890,
56011, 56132, 56252, 56371, 56490, 56609, 56728, 56846, 56965, 57083, 57202, 57322, 57441, 57561, 57682, 57804,
57926, 58050, 58174, 58300, 58427, 58555, 58684, 58815, 58947, 59081, 59217, 59354, 59492, 59633, 59774, 59918,
60063, 60209, 60357, 60506, 60656, 60808, 60960, 61113, 61268, 61422, 61578, 61733, 61889, 62044, 62200, 62354,
62508, 62661, 62812, 62962, 63111, 63257, 63401, 63543, 63681, 63817, 63949, 64077, 64202, 64323, 64439, 64550,
64656, 64758, 64854, 64944, 65029, 65107, 65179, 65245, 65305, 65358, 65404, 65443, 65475, 65500, 65518, 65529,
65533, 65529, 65518, 65500, 65475, 65443, 65404, 65358, 65305, 65245, 65179, 65107, 65029, 64944, 64854, 64758,
64656, 64550, 64439, 64323, 64202, 64077, 63949, 63817, 63681, 63543, 63401, 63257, 63111, 62962, 62812, 62661,
62508, 62354, 62200, 62044, 61889, 61733, 61578, 61422, 61268, 61113, 60960, 60808, 60656, 60506, 60357, 60209,
60063, 59918, 59774, 59633, 59492, 59354, 59217, 59081, 58947, 58815, 58684, 58555, 58427, 58300, 58174, 58050,
57926, 57804, 57682, 57561, 57441, 57322, 57202, 57083, 56965, 56846, 56728, 56609, 56490, 56371, 56252, 56132,
56011, 55890, 55768, 55646, 55523, 55399, 55274, 55148, 55021, 54893, 54764, 54635, 54504, 54372, 54240, 54106,
53972, 53837, 53700, 53564, 53426, 53288, 53149, 53010, 52870, 52730, 52589, 52448, 52307, 52166, 52025, 51883,
51742, 51601, 51461, 51320, 51180, 51040, 50901, 50762, 50624, 50487, 50350, 50213, 50078, 49943, 49809, 49675,
49542, 49410, 49279, 49149, 49019, 48889, 48761, 48633, 48505, 48379, 48252, 48126, 48001, 47876, 47751, 47626,
47502, 47377, 47253, 47129, 47005, 46880, 46756, 46631, 46506, 46381, 46255, 46129, 46003, 45876, 45748, 45621,
45492, 45363, 45233, 45103, 44972, 44841, 44709, 44576, 44443, 44309, 44175, 44040, 43904, 43768, 43632, 43495,
43358, 43221, 43083, 42945, 42807, 42669, 42531, 42392, 42254, 42115, 41977, 41839, 41701, 41564, 41426, 41289,
41152, 41016, 40880, 40745, 40610, 40476, 40342, 40208, 40075, 39943, 39811, 39680, 39549, 39419, 39290, 39160,
39032, 38904, 38776, 38648, 38521, 38394, 38268, 38142, 38016, 37890, 37764, 37638, 37513, 37387, 37261, 37135,
37009, 36883, 36756, 36630, 36503, 36375, 36247, 36119, 35990, 35861, 35732, 35601, 35471, 35340, 35208, 35076,
34943, 34810, 34676, 34542, 34408, 34273, 34137, 34001, 33865, 33728, 33592, 33454, 33317, 33180, 33042, 32904,
32767, 32629, 32491, 32353, 32216, 32079, 31941, 31805, 31668, 31532, 31396, 31260, 31125, 30991, 30857, 30723,
30590, 30457, 30325, 30193, 30062, 29932, 29801, 29672, 29543, 29414, 29286, 29158, 29030, 28903, 28777, 28650,
28524, 28398, 28272, 28146, 28020, 27895, 27769, 27643, 27517, 27391, 27265, 27139, 27012, 26885, 26757, 26629,
26501, 26373, 26243, 26114, 25984, 25853, 25722, 25590, 25458, 25325, 25191, 25057, 24923, 24788, 24653, 24517,
24381, 24244, 24107, 23969, 23832, 23694, 23556, 23418, 23279, 23141, 23002, 22864, 22726, 22588, 22450, 22312,
22175, 22038, 21901, 21765, 21629, 21493, 21358, 21224, 21090, 20957, 20824, 20692, 20561, 20430, 20300, 20170,
20041, 19912, 19785, 19657, 19530, 19404, 19278, 19152, 19027, 18902, 18777, 18653, 18528, 18404, 18280, 18156,
18031, 17907, 17782, 17657, 17532, 17407, 17281, 17154, 17028, 16900, 16772, 16644, 16514, 16384, 16254, 16123,
15991, 15858, 15724, 15590, 15455, 15320, 15183, 15046, 14909, 14771, 14632, 14493, 14353, 14213, 14072, 13932,
13791, 13650, 13508, 13367, 13226, 13085, 12944, 12803, 12663, 12523, 12384, 12245, 12107, 11969, 11833, 11696,
11561, 11427, 11293, 11161, 11029, 10898, 10769, 10640, 10512, 10385, 10259, 10134, 10010, 9887, 9765, 9643,
9522, 9401, 9281, 9162, 9043, 8924, 8805, 8687, 8568, 8450, 8331, 8211, 8092, 7972, 7851, 7729,
7607, 7483, 7359, 7233, 7106, 6978, 6849, 6718, 6586, 6452, 6316, 6179, 6041, 5900, 5759, 5615,
5470, 5324, 5176, 5027, 4877, 4725, 4573, 4420, 4265, 4111, 3955, 3800, 3644, 3489, 3333, 3179,
3025, 2872, 2721, 2571, 2422, 2276, 2132, 1990, 1852, 1716, 1584, 1456, 1331, 1210, 1094, 983,
877, 775, 679, 589, 504, 426, 354, 288, 228, 175, 129, 90, 58, 33, 15, 4,
};
// 1024-point unipolar square wave with cosine edges
const unsigned short sqr[TABLE_SIZE] =
{
0, 9, 39, 88, 157, 246, 354, 482, 629, 796, 981, 1186, 1410, 1653, 1915, 2195,
2494, 2811, 3145, 3498, 3869, 4256, 4661, 5083, 5522, 5977, 6448, 6935, 7437, 7955, 8488, 9035,
9597, 10172, 10762, 11364, 11979, 12607, 13247, 13899, 14562, 15236, 15921, 16616, 17320, 18034, 18757, 19488,
20227, 20974, 21728, 22488, 23255, 24027, 24805, 25587, 26374, 27165, 27959, 28755, 29555, 30356, 31159, 31962,
32766, 33571, 34374, 35177, 35978, 36778, 37574, 38368, 39159, 39946, 40728, 41506, 42278, 43045, 43805, 44559,
45306, 46045, 46776, 47499, 48213, 48917, 49612, 50297, 50971, 51634, 52286, 52926, 53554, 54169, 54771, 55361,
55936, 56498, 57045, 57578, 58096, 58598, 59085, 59556, 60011, 60450, 60872, 61277, 61664, 62035, 62388, 62722,
63039, 63338, 63618, 63880, 64123, 64347, 64552, 64737, 64904, 65051, 65179, 65287, 65376, 65445, 65494, 65524,
65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534,
65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534,
65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534,
65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534,
65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534,
65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534,
65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534,
65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534,
65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534,
65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534,
65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534,
65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534,
65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534,
65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534,
65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534,
65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534,
65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534,
65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534,
65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534,
65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534,
65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534,
65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534,
65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534,
65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534, 65534,
65534, 65524, 65494, 65445, 65376, 65287, 65179, 65051, 64904, 64737, 64552, 64347, 64123, 63880, 63618, 63338,
63039, 62722, 62388, 62035, 61664, 61277, 60872, 60450, 60011, 59556, 59085, 58598, 58096, 57578, 57045, 56498,
55936, 55361, 54771, 54169, 53554, 52926, 52286, 51634, 50971, 50297, 49612, 48917, 48213, 47499, 46776, 46045,
45306, 44559, 43805, 43045, 42278, 41506, 40728, 39946, 39159, 38368, 37574, 36778, 35978, 35177, 34374, 33571,
32767, 31962, 31159, 30356, 29555, 28755, 27959, 27165, 26374, 25587, 24805, 24027, 23255, 22488, 21728, 20974,
20227, 19488, 18757, 18034, 17320, 16616, 15921, 15236, 14562, 13899, 13247, 12607, 11979, 11364, 10762, 10172,
9597, 9035, 8488, 7955, 7437, 6935, 6448, 5977, 5522, 5083, 4661, 4256, 3869, 3498, 3145, 2811,
2494, 2195, 1915, 1653, 1410, 1186, 981, 796, 629, 482, 354, 246, 157, 88, 39, 9,
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, 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, 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, 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,
};
// delta phase per midi note
// values for uppermost octaves are repeats of lower octaves to avoid aliasing
const unsigned long deltas[128] =
{
731558, 775059, 821146, 869974, 921705, 976513, 1034579, 1096099, 1161276, 1230329, 1303488, 1380998,
1463116, 1550118, 1642292, 1739948, 1843411, 1953026, 2069159, 2192197, 2322552, 2460658, 2606977, 2761996,
2926232, 3100235, 3284585, 3479896, 3686822, 3906052, 4138318, 4384395, 4645104, 4921317, 5213953, 5523991,
5852465, 6200470, 6569170, 6959793, 7373644, 7812103, 8276635, 8768789, 9290209, 9842633, 10427907, 11047982,
11704930, 12400941, 13138339, 13919586, 14747287, 15624207, 16553270, 17537579, 18580418, 19685267, 20855814, 22095965,
23409859, 24801882, 26276679, 27839171, 29494575, 31248413, 33106541, 35075158, 37160835, 39370534, 41711627, 44191930,
46819719, 49603764, 52553357, 55678342, 58989149, 62496826, 66213081, 70150316, 74321671, 78741067, 83423255, 88383859,
93639437, 99207528, 105106715, 111356685, 117978298, 124993653, 132426162, 140300631, 148643341, 157482134, 166846509, 176767719,
187278874, 198415056, 210213429, 222713370, 235956596, 249987305, 264852324, 280601263, 297286682, 314964268, 333693018, 353535438,
374557749, 396830112, 420426858, 445426740, 471913192, 499974611, 529704648, 561202526, 594573365, 629928537, 667386037, 707070876,
749115498, 793660223, 840853716, 890853480, 943826385, 999949222, 1059409297, 561202526,
};
// volume scale by note velocity
const unsigned short peak[128] =
{
16472, 16562, 16652, 16742, 16833, 16925, 17016, 17109, 17202, 17295, 17389, 17483, 17578, 17674, 17770, 17866,
17963, 18061, 18159, 18258, 18357, 18456, 18557, 18657, 18759, 18861, 18963, 19066, 19169, 19274, 19378, 19483,
19589, 19696, 19802, 19910, 20018, 20127, 20236, 20346, 20456, 20568, 20679, 20791, 20904, 21018, 21132, 21247,
21362, 21478, 21595, 21712, 21830, 21948, 22068, 22187, 22308, 22429, 22551, 22673, 22796, 22920, 23045, 23170,
23296, 23422, 23549, 23677, 23806, 23935, 24065, 24196, 24327, 24459, 24592, 24725, 24860, 24995, 25130, 25267,
25404, 25542, 25681, 25820, 25960, 26101, 26243, 26385, 26529, 26673, 26818, 26963, 27110, 27257, 27405, 27554,
27703, 27854, 28005, 28157, 28310, 28464, 28618, 28774, 28930, 29087, 29245, 29404, 29563, 29724, 29885, 30047,
30211, 30375, 30540, 30705, 30872, 31040, 31208, 31378, 31548, 31719, 31892, 32065, 32239, 32414, 32590, 32767,
};
// LFO k-rate phase deltas
unsigned long lfoTable[256] =
{
1166114, 1187281, 1208832, 1230775, 1253115, 1275862, 1299021, 1322600, 1346608, 1371051, 1395938, 1421277, 1447075, 1473342, 1500086, 1527315,
1555038, 1583265, 1612004, 1641265, 1671056, 1701389, 1732272, 1763716, 1795730, 1828326, 1861513, 1895303, 1929706, 1964733, 2000397, 2036707,
2073677, 2111318, 2149642, 2188661, 2228389, 2268839, 2310022, 2351953, 2394645, 2438112, 2482368, 2527427, 2573304, 2620014, 2667572, 2715993,
2765293, 2815487, 2866593, 2918627, 2971605, 3025545, 3080464, 3136379, 3193310, 3251274, 3310290, 3370378, 3431556, 3493845, 3557264, 3621834,
3687577, 3754513, 3822664, 3892052, 3962699, 4034629, 4107864, 4182429, 4258347, 4335644, 4414343, 4494471, 4576054, 4659117, 4743688, 4829794,
4917463, 5006723, 5097604, 5190134, 5284344, 5380264, 5477925, 5577359, 5678598, 5781674, 5886621, 5993474, 6102265, 6213032, 6325809, 6440634,
6557542, 6676573, 6797764, 6921155, 7046786, 7174697, 7304931, 7437528, 7572532, 7709986, 7849936, 7992425, 8137502, 8285211, 8435602, 8588723,
8744623, 8903353, 9064964, 9229509, 9397040, 9567613, 9741281, 9918103, 10098133, 10281432, 10468057, 10658071, 10851533, 11048507, 11249056, 11453246,
11661142, 11872812, 12088324, 12307748, 12531155, 12758617, 12990208, 13226002, 13466077, 13710509, 13959379, 14212766, 14470752, 14733421, 15000858, 15273149,
15550383, 15832649, 16120039, 16412646, 16710563, 17013889, 17322720, 17637158, 17957302, 18283258, 18615131, 18953028, 19297058, 19647332, 20003965, 20367072,
20736769, 21113177, 21496418, 21886615, 22283894, 22688386, 23100219, 23519528, 23946447, 24381117, 24823676, 25274268, 25733040, 26200139, 26675717, 27159927,
27652926, 28154874, 28665934, 29186270, 29716051, 30255448, 30804637, 31363794, 31933101, 32512742, 33102904, 33703779, 34315560, 34938447, 35572640, 36218344,
36875770, 37545128, 38226637, 38920516, 39626991, 40346289, 41078643, 41824292, 42583474, 43356438, 44143432, 44944711, 45760535, 46591168, 47436877, 48297938,
49174629, 50067233, 50976040, 51901343, 52843441, 53802641, 54779251, 55773589, 56785976, 57816739, 58866212, 59934736, 61022654, 62130320, 63258093, 64406336,
65575422, 66765729, 67977642, 69211553, 70467862, 71746975, 73049306, 74375277, 75725316, 77099861, 78499356, 79924254, 81375017, 82852114, 84356022, 85887229,
87446231, 89033530, 90649642, 92295089, 93970404, 95676129, 97412815, 99181025, 100981332, 102814317, 104680574, 106580706, 108515330, 110485070, 112490564, 114532461,
};
#endif // _TABLES_H