/*---------------------------------------------------------------------------- | |
* | |
* File: | |
* eas_fmtables.c | |
* | |
* Contents and purpose: | |
* Contains lookup tables for the FM synthesizer | |
* | |
* | |
* Copyright Sonic Network Inc. 2005 | |
* Licensed under the Apache License, Version 2.0 (the "License"); | |
* you may not use this file except in compliance with the License. | |
* You may obtain a copy of the License at | |
* | |
* http://www.apache.org/licenses/LICENSE-2.0 | |
* | |
* Unless required by applicable law or agreed to in writing, software | |
* distributed under the License is distributed on an "AS IS" BASIS, | |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
* See the License for the specific language governing permissions and | |
* limitations under the License. | |
* | |
*---------------------------------------------------------------------------- | |
* Revision Control: | |
* $Revision: 82 $ | |
* $Date: 2006-07-10 11:45:19 -0700 (Mon, 10 Jul 2006) $ | |
* | |
*---------------------------------------------------------------------------- | |
*/ | |
#include "eas_types.h" | |
/* this table is needed by the DSP and the main processor */ | |
const EAS_U8 fmScaleTable[16] = | |
{ | |
0,8,16,24,32,40,48,56,64,72,80,96,128,160,192,255 | |
}; | |
/* these tables are needed on the main processor */ | |
#ifndef _DSP_CODE | |
const EAS_I16 fmControlTable[128] = | |
{ | |
-32768,-14313,-12265,-11067,-10217,-9558,-9019,-8563, | |
-8169,-7821,-7510,-7228,-6971,-6734,-6515,-6312, | |
-6121,-5942,-5773,-5613,-5462,-5317,-5180,-5049, | |
-4923,-4802,-4686,-4575,-4467,-4364,-4264,-4167, | |
-4073,-3982,-3894,-3808,-3725,-3644,-3565,-3488, | |
-3414,-3341,-3269,-3200,-3132,-3066,-3001,-2937, | |
-2875,-2814,-2754,-2696,-2638,-2582,-2527,-2473, | |
-2419,-2367,-2316,-2265,-2216,-2167,-2119,-2071, | |
-2025,-1979,-1934,-1889,-1846,-1803,-1760,-1718, | |
-1677,-1636,-1596,-1556,-1517,-1478,-1440,-1403, | |
-1366,-1329,-1293,-1257,-1221,-1186,-1152,-1118, | |
-1084,-1051,-1018,-985,-953,-921,-889,-858, | |
-827,-796,-766,-736,-706,-677,-648,-619, | |
-590,-562,-534,-506,-479,-452,-425,-398, | |
-371,-345,-319,-293,-268,-242,-217,-192, | |
-168,-143,-119,-95,-71,-47,-23,0 | |
}; | |
const EAS_U16 fmRateTable[128] = | |
{ | |
32767,32764,32758,32747,32731,32712,32688,32659, | |
32627,32590,32548,32503,32453,32398,32340,32277, | |
32211,32140,32065,31985,31902,31815,31724,31628, | |
31529,31426,31319,31208,31094,30976,30854,30728, | |
30599,30466,30330,30191,30048,29902,29752,29599, | |
29443,29285,29123,28958,28790,28619,28445,28269, | |
28090,27909,27725,27538,27349,27158,26964,26769, | |
26571,26371,26169,25965,25760,25552,25343,25132, | |
24920,24706,24490,24274,24056,23836,23616,23394, | |
23172,22948,22724,22499,22273,22046,21819,21591, | |
21363,21135,20906,20676,20447,20217,19987,19758, | |
19528,19298,19069,18840,18610,18382,18153,17926, | |
17698,17471,17245,17020,16795,16571,16347,16125, | |
15903,15683,15463,15245,15027,14811,14596,14382, | |
14169,13957,13747,13538,13331,13125,12920,12717, | |
12516,12316,12117,11921,11725,11532,11340,0 | |
}; | |
const EAS_U16 fmAttackTable[15] = | |
{ | |
27,54,109,327,655,1310,2730,4095, | |
4681,5461,6553,8191,10922,16383,32767 | |
}; | |
const EAS_U8 fmDecayTable[16] = | |
{ | |
4,7,10,15,20,25,30,35,40,50,60,70,80,90,100,127 | |
}; | |
const EAS_U8 fmReleaseTable[16] = | |
{ | |
10,15,20,25,30,35,40,45,50,60,70,80,90,100,113,127 | |
}; | |
#endif | |
/* this table is needed only on the DSP */ | |
#if defined(_DSP_CODE) || !defined(_SPLIT_ARCHITECTURE) | |
//--------------------------------------------------------------------- | |
// sineTable | |
// | |
// Contains sine lookup table | |
//--------------------------------------------------------------------- | |
const EAS_I16 sineTable[2048] = | |
{ | |
0,101,201,302,402,503,603,704, | |
804,905,1005,1106,1206,1307,1407,1507, | |
1608,1708,1809,1909,2009,2110,2210,2310, | |
2410,2511,2611,2711,2811,2911,3012,3112, | |
3212,3312,3412,3512,3612,3712,3811,3911, | |
4011,4111,4210,4310,4410,4509,4609,4708, | |
4808,4907,5007,5106,5205,5305,5404,5503, | |
5602,5701,5800,5899,5998,6096,6195,6294, | |
6393,6491,6590,6688,6786,6885,6983,7081, | |
7179,7277,7375,7473,7571,7669,7767,7864, | |
7962,8059,8157,8254,8351,8448,8545,8642, | |
8739,8836,8933,9030,9126,9223,9319,9416, | |
9512,9608,9704,9800,9896,9992,10087,10183, | |
10278,10374,10469,10564,10659,10754,10849,10944, | |
11039,11133,11228,11322,11417,11511,11605,11699, | |
11793,11886,11980,12074,12167,12260,12353,12446, | |
12539,12632,12725,12817,12910,13002,13094,13187, | |
13279,13370,13462,13554,13645,13736,13828,13919, | |
14010,14101,14191,14282,14372,14462,14553,14643, | |
14732,14822,14912,15001,15090,15180,15269,15358, | |
15446,15535,15623,15712,15800,15888,15976,16063, | |
16151,16238,16325,16413,16499,16586,16673,16759, | |
16846,16932,17018,17104,17189,17275,17360,17445, | |
17530,17615,17700,17784,17869,17953,18037,18121, | |
18204,18288,18371,18454,18537,18620,18703,18785, | |
18868,18950,19032,19113,19195,19276,19357,19438, | |
19519,19600,19680,19761,19841,19921,20000,20080, | |
20159,20238,20317,20396,20475,20553,20631,20709, | |
20787,20865,20942,21019,21096,21173,21250,21326, | |
21403,21479,21554,21630,21705,21781,21856,21930, | |
22005,22079,22154,22227,22301,22375,22448,22521, | |
22594,22667,22739,22812,22884,22956,23027,23099, | |
23170,23241,23311,23382,23452,23522,23592,23662, | |
23731,23801,23870,23938,24007,24075,24143,24211, | |
24279,24346,24413,24480,24547,24613,24680,24746, | |
24811,24877,24942,25007,25072,25137,25201,25265, | |
25329,25393,25456,25519,25582,25645,25708,25770, | |
25832,25893,25955,26016,26077,26138,26198,26259, | |
26319,26378,26438,26497,26556,26615,26674,26732, | |
26790,26848,26905,26962,27019,27076,27133,27189, | |
27245,27300,27356,27411,27466,27521,27575,27629, | |
27683,27737,27790,27843,27896,27949,28001,28053, | |
28105,28157,28208,28259,28310,28360,28411,28460, | |
28510,28560,28609,28658,28706,28755,28803,28850, | |
28898,28945,28992,29039,29085,29131,29177,29223, | |
29268,29313,29358,29403,29447,29491,29534,29578, | |
29621,29664,29706,29749,29791,29832,29874,29915, | |
29956,29997,30037,30077,30117,30156,30195,30234, | |
30273,30311,30349,30387,30424,30462,30498,30535, | |
30571,30607,30643,30679,30714,30749,30783,30818, | |
30852,30885,30919,30952,30985,31017,31050,31082, | |
31113,31145,31176,31206,31237,31267,31297,31327, | |
31356,31385,31414,31442,31470,31498,31526,31553, | |
31580,31607,31633,31659,31685,31710,31736,31760, | |
31785,31809,31833,31857,31880,31903,31926,31949, | |
31971,31993,32014,32036,32057,32077,32098,32118, | |
32137,32157,32176,32195,32213,32232,32250,32267, | |
32285,32302,32318,32335,32351,32367,32382,32397, | |
32412,32427,32441,32455,32469,32482,32495,32508, | |
32521,32533,32545,32556,32567,32578,32589,32599, | |
32609,32619,32628,32637,32646,32655,32663,32671, | |
32678,32685,32692,32699,32705,32711,32717,32722, | |
32728,32732,32737,32741,32745,32748,32752,32755, | |
32757,32759,32761,32763,32765,32766,32766,32767, | |
32767,32767,32766,32766,32765,32763,32761,32759, | |
32757,32755,32752,32748,32745,32741,32737,32732, | |
32728,32722,32717,32711,32705,32699,32692,32685, | |
32678,32671,32663,32655,32646,32637,32628,32619, | |
32609,32599,32589,32578,32567,32556,32545,32533, | |
32521,32508,32495,32482,32469,32455,32441,32427, | |
32412,32397,32382,32367,32351,32335,32318,32302, | |
32285,32267,32250,32232,32213,32195,32176,32157, | |
32137,32118,32098,32077,32057,32036,32014,31993, | |
31971,31949,31926,31903,31880,31857,31833,31809, | |
31785,31760,31736,31710,31685,31659,31633,31607, | |
31580,31553,31526,31498,31470,31442,31414,31385, | |
31356,31327,31297,31267,31237,31206,31176,31145, | |
31113,31082,31050,31017,30985,30952,30919,30885, | |
30852,30818,30783,30749,30714,30679,30643,30607, | |
30571,30535,30498,30462,30424,30387,30349,30311, | |
30273,30234,30195,30156,30117,30077,30037,29997, | |
29956,29915,29874,29832,29791,29749,29706,29664, | |
29621,29578,29534,29491,29447,29403,29358,29313, | |
29268,29223,29177,29131,29085,29039,28992,28945, | |
28898,28850,28803,28755,28706,28658,28609,28560, | |
28510,28460,28411,28360,28310,28259,28208,28157, | |
28105,28053,28001,27949,27896,27843,27790,27737, | |
27683,27629,27575,27521,27466,27411,27356,27300, | |
27245,27189,27133,27076,27019,26962,26905,26848, | |
26790,26732,26674,26615,26556,26497,26438,26378, | |
26319,26259,26198,26138,26077,26016,25955,25893, | |
25832,25770,25708,25645,25582,25519,25456,25393, | |
25329,25265,25201,25137,25072,25007,24942,24877, | |
24811,24746,24680,24613,24547,24480,24413,24346, | |
24279,24211,24143,24075,24007,23938,23870,23801, | |
23731,23662,23592,23522,23452,23382,23311,23241, | |
23170,23099,23027,22956,22884,22812,22739,22667, | |
22594,22521,22448,22375,22301,22227,22154,22079, | |
22005,21930,21856,21781,21705,21630,21554,21479, | |
21403,21326,21250,21173,21096,21019,20942,20865, | |
20787,20709,20631,20553,20475,20396,20317,20238, | |
20159,20080,20000,19921,19841,19761,19680,19600, | |
19519,19438,19357,19276,19195,19113,19032,18950, | |
18868,18785,18703,18620,18537,18454,18371,18288, | |
18204,18121,18037,17953,17869,17784,17700,17615, | |
17530,17445,17360,17275,17189,17104,17018,16932, | |
16846,16759,16673,16586,16499,16413,16325,16238, | |
16151,16063,15976,15888,15800,15712,15623,15535, | |
15446,15358,15269,15180,15090,15001,14912,14822, | |
14732,14643,14553,14462,14372,14282,14191,14101, | |
14010,13919,13828,13736,13645,13554,13462,13370, | |
13279,13187,13094,13002,12910,12817,12725,12632, | |
12539,12446,12353,12260,12167,12074,11980,11886, | |
11793,11699,11605,11511,11417,11322,11228,11133, | |
11039,10944,10849,10754,10659,10564,10469,10374, | |
10278,10183,10087,9992,9896,9800,9704,9608, | |
9512,9416,9319,9223,9126,9030,8933,8836, | |
8739,8642,8545,8448,8351,8254,8157,8059, | |
7962,7864,7767,7669,7571,7473,7375,7277, | |
7179,7081,6983,6885,6786,6688,6590,6491, | |
6393,6294,6195,6096,5998,5899,5800,5701, | |
5602,5503,5404,5305,5205,5106,5007,4907, | |
4808,4708,4609,4509,4410,4310,4210,4111, | |
4011,3911,3811,3712,3612,3512,3412,3312, | |
3212,3112,3012,2911,2811,2711,2611,2511, | |
2410,2310,2210,2110,2009,1909,1809,1708, | |
1608,1507,1407,1307,1206,1106,1005,905, | |
804,704,603,503,402,302,201,101, | |
0,-101,-201,-302,-402,-503,-603,-704, | |
-804,-905,-1005,-1106,-1206,-1307,-1407,-1507, | |
-1608,-1708,-1809,-1909,-2009,-2110,-2210,-2310, | |
-2410,-2511,-2611,-2711,-2811,-2911,-3012,-3112, | |
-3212,-3312,-3412,-3512,-3612,-3712,-3811,-3911, | |
-4011,-4111,-4210,-4310,-4410,-4509,-4609,-4708, | |
-4808,-4907,-5007,-5106,-5205,-5305,-5404,-5503, | |
-5602,-5701,-5800,-5899,-5998,-6096,-6195,-6294, | |
-6393,-6491,-6590,-6688,-6786,-6885,-6983,-7081, | |
-7179,-7277,-7375,-7473,-7571,-7669,-7767,-7864, | |
-7962,-8059,-8157,-8254,-8351,-8448,-8545,-8642, | |
-8739,-8836,-8933,-9030,-9126,-9223,-9319,-9416, | |
-9512,-9608,-9704,-9800,-9896,-9992,-10087,-10183, | |
-10278,-10374,-10469,-10564,-10659,-10754,-10849,-10944, | |
-11039,-11133,-11228,-11322,-11417,-11511,-11605,-11699, | |
-11793,-11886,-11980,-12074,-12167,-12260,-12353,-12446, | |
-12539,-12632,-12725,-12817,-12910,-13002,-13094,-13187, | |
-13279,-13370,-13462,-13554,-13645,-13736,-13828,-13919, | |
-14010,-14101,-14191,-14282,-14372,-14462,-14553,-14643, | |
-14732,-14822,-14912,-15001,-15090,-15180,-15269,-15358, | |
-15446,-15535,-15623,-15712,-15800,-15888,-15976,-16063, | |
-16151,-16238,-16325,-16413,-16499,-16586,-16673,-16759, | |
-16846,-16932,-17018,-17104,-17189,-17275,-17360,-17445, | |
-17530,-17615,-17700,-17784,-17869,-17953,-18037,-18121, | |
-18204,-18288,-18371,-18454,-18537,-18620,-18703,-18785, | |
-18868,-18950,-19032,-19113,-19195,-19276,-19357,-19438, | |
-19519,-19600,-19680,-19761,-19841,-19921,-20000,-20080, | |
-20159,-20238,-20317,-20396,-20475,-20553,-20631,-20709, | |
-20787,-20865,-20942,-21019,-21096,-21173,-21250,-21326, | |
-21403,-21479,-21554,-21630,-21705,-21781,-21856,-21930, | |
-22005,-22079,-22154,-22227,-22301,-22375,-22448,-22521, | |
-22594,-22667,-22739,-22812,-22884,-22956,-23027,-23099, | |
-23170,-23241,-23311,-23382,-23452,-23522,-23592,-23662, | |
-23731,-23801,-23870,-23938,-24007,-24075,-24143,-24211, | |
-24279,-24346,-24413,-24480,-24547,-24613,-24680,-24746, | |
-24811,-24877,-24942,-25007,-25072,-25137,-25201,-25265, | |
-25329,-25393,-25456,-25519,-25582,-25645,-25708,-25770, | |
-25832,-25893,-25955,-26016,-26077,-26138,-26198,-26259, | |
-26319,-26378,-26438,-26497,-26556,-26615,-26674,-26732, | |
-26790,-26848,-26905,-26962,-27019,-27076,-27133,-27189, | |
-27245,-27300,-27356,-27411,-27466,-27521,-27575,-27629, | |
-27683,-27737,-27790,-27843,-27896,-27949,-28001,-28053, | |
-28105,-28157,-28208,-28259,-28310,-28360,-28411,-28460, | |
-28510,-28560,-28609,-28658,-28706,-28755,-28803,-28850, | |
-28898,-28945,-28992,-29039,-29085,-29131,-29177,-29223, | |
-29268,-29313,-29358,-29403,-29447,-29491,-29534,-29578, | |
-29621,-29664,-29706,-29749,-29791,-29832,-29874,-29915, | |
-29956,-29997,-30037,-30077,-30117,-30156,-30195,-30234, | |
-30273,-30311,-30349,-30387,-30424,-30462,-30498,-30535, | |
-30571,-30607,-30643,-30679,-30714,-30749,-30783,-30818, | |
-30852,-30885,-30919,-30952,-30985,-31017,-31050,-31082, | |
-31113,-31145,-31176,-31206,-31237,-31267,-31297,-31327, | |
-31356,-31385,-31414,-31442,-31470,-31498,-31526,-31553, | |
-31580,-31607,-31633,-31659,-31685,-31710,-31736,-31760, | |
-31785,-31809,-31833,-31857,-31880,-31903,-31926,-31949, | |
-31971,-31993,-32014,-32036,-32057,-32077,-32098,-32118, | |
-32137,-32157,-32176,-32195,-32213,-32232,-32250,-32267, | |
-32285,-32302,-32318,-32335,-32351,-32367,-32382,-32397, | |
-32412,-32427,-32441,-32455,-32469,-32482,-32495,-32508, | |
-32521,-32533,-32545,-32556,-32567,-32578,-32589,-32599, | |
-32609,-32619,-32628,-32637,-32646,-32655,-32663,-32671, | |
-32678,-32685,-32692,-32699,-32705,-32711,-32717,-32722, | |
-32728,-32732,-32737,-32741,-32745,-32748,-32752,-32755, | |
-32757,-32759,-32761,-32763,-32765,-32766,-32766,-32767, | |
-32767,-32767,-32766,-32766,-32765,-32763,-32761,-32759, | |
-32757,-32755,-32752,-32748,-32745,-32741,-32737,-32732, | |
-32728,-32722,-32717,-32711,-32705,-32699,-32692,-32685, | |
-32678,-32671,-32663,-32655,-32646,-32637,-32628,-32619, | |
-32609,-32599,-32589,-32578,-32567,-32556,-32545,-32533, | |
-32521,-32508,-32495,-32482,-32469,-32455,-32441,-32427, | |
-32412,-32397,-32382,-32367,-32351,-32335,-32318,-32302, | |
-32285,-32267,-32250,-32232,-32213,-32195,-32176,-32157, | |
-32137,-32118,-32098,-32077,-32057,-32036,-32014,-31993, | |
-31971,-31949,-31926,-31903,-31880,-31857,-31833,-31809, | |
-31785,-31760,-31736,-31710,-31685,-31659,-31633,-31607, | |
-31580,-31553,-31526,-31498,-31470,-31442,-31414,-31385, | |
-31356,-31327,-31297,-31267,-31237,-31206,-31176,-31145, | |
-31113,-31082,-31050,-31017,-30985,-30952,-30919,-30885, | |
-30852,-30818,-30783,-30749,-30714,-30679,-30643,-30607, | |
-30571,-30535,-30498,-30462,-30424,-30387,-30349,-30311, | |
-30273,-30234,-30195,-30156,-30117,-30077,-30037,-29997, | |
-29956,-29915,-29874,-29832,-29791,-29749,-29706,-29664, | |
-29621,-29578,-29534,-29491,-29447,-29403,-29358,-29313, | |
-29268,-29223,-29177,-29131,-29085,-29039,-28992,-28945, | |
-28898,-28850,-28803,-28755,-28706,-28658,-28609,-28560, | |
-28510,-28460,-28411,-28360,-28310,-28259,-28208,-28157, | |
-28105,-28053,-28001,-27949,-27896,-27843,-27790,-27737, | |
-27683,-27629,-27575,-27521,-27466,-27411,-27356,-27300, | |
-27245,-27189,-27133,-27076,-27019,-26962,-26905,-26848, | |
-26790,-26732,-26674,-26615,-26556,-26497,-26438,-26378, | |
-26319,-26259,-26198,-26138,-26077,-26016,-25955,-25893, | |
-25832,-25770,-25708,-25645,-25582,-25519,-25456,-25393, | |
-25329,-25265,-25201,-25137,-25072,-25007,-24942,-24877, | |
-24811,-24746,-24680,-24613,-24547,-24480,-24413,-24346, | |
-24279,-24211,-24143,-24075,-24007,-23938,-23870,-23801, | |
-23731,-23662,-23592,-23522,-23452,-23382,-23311,-23241, | |
-23170,-23099,-23027,-22956,-22884,-22812,-22739,-22667, | |
-22594,-22521,-22448,-22375,-22301,-22227,-22154,-22079, | |
-22005,-21930,-21856,-21781,-21705,-21630,-21554,-21479, | |
-21403,-21326,-21250,-21173,-21096,-21019,-20942,-20865, | |
-20787,-20709,-20631,-20553,-20475,-20396,-20317,-20238, | |
-20159,-20080,-20000,-19921,-19841,-19761,-19680,-19600, | |
-19519,-19438,-19357,-19276,-19195,-19113,-19032,-18950, | |
-18868,-18785,-18703,-18620,-18537,-18454,-18371,-18288, | |
-18204,-18121,-18037,-17953,-17869,-17784,-17700,-17615, | |
-17530,-17445,-17360,-17275,-17189,-17104,-17018,-16932, | |
-16846,-16759,-16673,-16586,-16499,-16413,-16325,-16238, | |
-16151,-16063,-15976,-15888,-15800,-15712,-15623,-15535, | |
-15446,-15358,-15269,-15180,-15090,-15001,-14912,-14822, | |
-14732,-14643,-14553,-14462,-14372,-14282,-14191,-14101, | |
-14010,-13919,-13828,-13736,-13645,-13554,-13462,-13370, | |
-13279,-13187,-13094,-13002,-12910,-12817,-12725,-12632, | |
-12539,-12446,-12353,-12260,-12167,-12074,-11980,-11886, | |
-11793,-11699,-11605,-11511,-11417,-11322,-11228,-11133, | |
-11039,-10944,-10849,-10754,-10659,-10564,-10469,-10374, | |
-10278,-10183,-10087,-9992,-9896,-9800,-9704,-9608, | |
-9512,-9416,-9319,-9223,-9126,-9030,-8933,-8836, | |
-8739,-8642,-8545,-8448,-8351,-8254,-8157,-8059, | |
-7962,-7864,-7767,-7669,-7571,-7473,-7375,-7277, | |
-7179,-7081,-6983,-6885,-6786,-6688,-6590,-6491, | |
-6393,-6294,-6195,-6096,-5998,-5899,-5800,-5701, | |
-5602,-5503,-5404,-5305,-5205,-5106,-5007,-4907, | |
-4808,-4708,-4609,-4509,-4410,-4310,-4210,-4111, | |
-4011,-3911,-3811,-3712,-3612,-3512,-3412,-3312, | |
-3212,-3112,-3012,-2911,-2811,-2711,-2611,-2511, | |
-2410,-2310,-2210,-2110,-2009,-1909,-1809,-1708, | |
-1608,-1507,-1407,-1307,-1206,-1106,-1005,-905, | |
-804,-704,-603,-503,-402,-302,-201,-101 | |
}; | |
#endif | |