| /*---------------------------------------------------------------------------- |
| * |
| * 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 |
| |