diff options
author | Takamichi Horikawa <takamichiho@gmail.com> | 2016-11-26 20:57:57 +0900 |
---|---|---|
committer | Takamichi Horikawa <takamichiho@gmail.com> | 2016-11-26 20:57:57 +0900 |
commit | 6fd10cdacb5cbe47a4fc339c20a733d4a9a384a1 (patch) | |
tree | c7f479a70c350dca0b73d76078e46db41d9c4133 /libopna/opnatables.h |
initial
Diffstat (limited to 'libopna/opnatables.h')
-rw-r--r-- | libopna/opnatables.h | 242 |
1 files changed, 242 insertions, 0 deletions
diff --git a/libopna/opnatables.h b/libopna/opnatables.h new file mode 100644 index 0000000..30140bf --- /dev/null +++ b/libopna/opnatables.h @@ -0,0 +1,242 @@ +#define LOGSINTABLEBIT 8 +#define LOGSINTABLELEN (1<<LOGSINTABLEBIT) +// round(-256.0*log2((sin((2*i+1)*PI/1024.0)))) +static const uint16_t logsintable[LOGSINTABLELEN] = { + 2137, 1731, 1543, 1419, 1326, 1252, 1190, 1137, + 1091, 1050, 1013, 979, 949, 920, 894, 869, + 846, 825, 804, 785, 767, 749, 732, 717, + 701, 687, 672, 659, 646, 633, 621, 609, + 598, 587, 576, 566, 556, 546, 536, 527, + 518, 509, 501, 492, 484, 476, 468, 461, + 453, 446, 439, 432, 425, 418, 411, 405, + 399, 392, 386, 380, 375, 369, 363, 358, + 352, 347, 341, 336, 331, 326, 321, 316, + 311, 307, 302, 297, 293, 289, 284, 280, + 276, 271, 267, 263, 259, 255, 251, 248, + 244, 240, 236, 233, 229, 226, 222, 219, + 215, 212, 209, 205, 202, 199, 196, 193, + 190, 187, 184, 181, 178, 175, 172, 169, + 167, 164, 161, 159, 156, 153, 151, 148, + 146, 143, 141, 138, 136, 134, 131, 129, + 127, 125, 122, 120, 118, 116, 114, 112, + 110, 108, 106, 104, 102, 100, 98, 96, + 94, 92, 91, 89, 87, 85, 83, 82, + 80, 78, 77, 75, 74, 72, 70, 69, + 67, 66, 64, 63, 62, 60, 59, 57, + 56, 55, 53, 52, 51, 49, 48, 47, + 46, 45, 43, 42, 41, 40, 39, 38, + 37, 36, 35, 34, 33, 32, 31, 30, + 29, 28, 27, 26, 25, 24, 23, 23, + 22, 21, 20, 20, 19, 18, 17, 17, + 16, 15, 15, 14, 13, 13, 12, 12, + 11, 10, 10, 9, 9, 8, 8, 7, + 7, 7, 6, 6, 5, 5, 5, 4, + 4, 4, 3, 3, 3, 2, 2, 2, + 2, 1, 1, 1, 1, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, +}; +#define LOGSINTABLEHIRESBIT 10 +#define LOGSINTABLEHIRESLEN (1<<LOGSINTABLEHIRESBIT) +static const uint16_t logsintable_hires[LOGSINTABLEHIRESLEN] = { + 2649, 2243, 2055, 1931, 1838, 1764, 1702, 1649, + 1603, 1562, 1525, 1491, 1460, 1432, 1406, 1381, + 1358, 1336, 1316, 1296, 1278, 1260, 1243, 1227, + 1212, 1197, 1183, 1169, 1156, 1143, 1131, 1119, + 1108, 1096, 1086, 1075, 1065, 1055, 1045, 1036, + 1026, 1017, 1009, 1000, 992, 984, 976, 968, + 960, 952, 945, 938, 931, 924, 917, 910, + 904, 897, 891, 885, 879, 872, 867, 861, + 855, 849, 844, 838, 833, 827, 822, 817, + 812, 807, 802, 797, 792, 787, 783, 778, + 773, 769, 764, 760, 756, 751, 747, 743, + 739, 735, 730, 726, 722, 718, 715, 711, + 707, 703, 699, 696, 692, 688, 685, 681, + 678, 674, 671, 667, 664, 661, 657, 654, + 651, 647, 644, 641, 638, 635, 632, 629, + 626, 623, 620, 617, 614, 611, 608, 605, + 602, 599, 597, 594, 591, 588, 586, 583, + 580, 578, 575, 572, 570, 567, 565, 562, + 559, 557, 554, 552, 550, 547, 545, 542, + 540, 538, 535, 533, 531, 528, 526, 524, + 521, 519, 517, 515, 512, 510, 508, 506, + 504, 502, 500, 497, 495, 493, 491, 489, + 487, 485, 483, 481, 479, 477, 475, 473, + 471, 469, 467, 465, 463, 462, 460, 458, + 456, 454, 452, 450, 449, 447, 445, 443, + 441, 440, 438, 436, 434, 433, 431, 429, + 427, 426, 424, 422, 421, 419, 417, 416, + 414, 412, 411, 409, 407, 406, 404, 403, + 401, 399, 398, 396, 395, 393, 392, 390, + 389, 387, 386, 384, 383, 381, 380, 378, + 377, 375, 374, 372, 371, 369, 368, 367, + 365, 364, 362, 361, 360, 358, 357, 355, + 354, 353, 351, 350, 349, 347, 346, 345, + 343, 342, 341, 339, 338, 337, 336, 334, + 333, 332, 330, 329, 328, 327, 325, 324, + 323, 322, 320, 319, 318, 317, 316, 314, + 313, 312, 311, 310, 308, 307, 306, 305, + 304, 303, 301, 300, 299, 298, 297, 296, + 295, 294, 292, 291, 290, 289, 288, 287, + 286, 285, 284, 283, 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, 242, 241, 240, 239, + 238, 237, 236, 235, 234, 233, 232, 231, + 231, 230, 229, 228, 227, 226, 225, 224, + 224, 223, 222, 221, 220, 219, 218, 218, + 217, 216, 215, 214, 213, 212, 212, 211, + 210, 209, 208, 208, 207, 206, 205, 204, + 203, 203, 202, 201, 200, 199, 199, 198, + 197, 196, 196, 195, 194, 193, 192, 192, + 191, 190, 189, 189, 188, 187, 186, 186, + 185, 184, 183, 183, 182, 181, 180, 180, + 179, 178, 178, 177, 176, 175, 175, 174, + 173, 173, 172, 171, 171, 170, 169, 168, + 168, 167, 166, 166, 165, 164, 164, 163, + 162, 162, 161, 160, 160, 159, 158, 158, + 157, 156, 156, 155, 154, 154, 153, 152, + 152, 151, 151, 150, 149, 149, 148, 147, + 147, 146, 145, 145, 144, 144, 143, 142, + 142, 141, 141, 140, 139, 139, 138, 138, + 137, 136, 136, 135, 135, 134, 133, 133, + 132, 132, 131, 131, 130, 129, 129, 128, + 128, 127, 127, 126, 125, 125, 124, 124, + 123, 123, 122, 122, 121, 121, 120, 119, + 119, 118, 118, 117, 117, 116, 116, 115, + 115, 114, 114, 113, 113, 112, 112, 111, + 110, 110, 109, 109, 108, 108, 107, 107, + 106, 106, 105, 105, 104, 104, 103, 103, + 102, 102, 101, 101, 101, 100, 100, 99, + 99, 98, 98, 97, 97, 96, 96, 95, + 95, 94, 94, 93, 93, 93, 92, 92, + 91, 91, 90, 90, 89, 89, 88, 88, + 88, 87, 87, 86, 86, 85, 85, 85, + 84, 84, 83, 83, 82, 82, 82, 81, + 81, 80, 80, 79, 79, 79, 78, 78, + 77, 77, 77, 76, 76, 75, 75, 75, + 74, 74, 73, 73, 73, 72, 72, 71, + 71, 71, 70, 70, 69, 69, 69, 68, + 68, 68, 67, 67, 66, 66, 66, 65, + 65, 65, 64, 64, 64, 63, 63, 62, + 62, 62, 61, 61, 61, 60, 60, 60, + 59, 59, 59, 58, 58, 58, 57, 57, + 57, 56, 56, 55, 55, 55, 54, 54, + 54, 54, 53, 53, 53, 52, 52, 52, + 51, 51, 51, 50, 50, 50, 49, 49, + 49, 48, 48, 48, 47, 47, 47, 47, + 46, 46, 46, 45, 45, 45, 44, 44, + 44, 44, 43, 43, 43, 42, 42, 42, + 42, 41, 41, 41, 40, 40, 40, 40, + 39, 39, 39, 38, 38, 38, 38, 37, + 37, 37, 37, 36, 36, 36, 36, 35, + 35, 35, 35, 34, 34, 34, 34, 33, + 33, 33, 33, 32, 32, 32, 32, 31, + 31, 31, 31, 30, 30, 30, 30, 29, + 29, 29, 29, 28, 28, 28, 28, 28, + 27, 27, 27, 27, 26, 26, 26, 26, + 26, 25, 25, 25, 25, 24, 24, 24, + 24, 24, 23, 23, 23, 23, 23, 22, + 22, 22, 22, 22, 21, 21, 21, 21, + 21, 20, 20, 20, 20, 20, 19, 19, + 19, 19, 19, 18, 18, 18, 18, 18, + 18, 17, 17, 17, 17, 17, 17, 16, + 16, 16, 16, 16, 15, 15, 15, 15, + 15, 15, 15, 14, 14, 14, 14, 14, + 14, 13, 13, 13, 13, 13, 13, 12, + 12, 12, 12, 12, 12, 12, 11, 11, + 11, 11, 11, 11, 11, 10, 10, 10, + 10, 10, 10, 10, 10, 9, 9, 9, + 9, 9, 9, 9, 9, 8, 8, 8, + 8, 8, 8, 8, 8, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, +}; + +#define EXPTABLEBIT 8 +#define EXPTABLELEN (1<<EXPTABLEBIT) +// round((1<<11) / pow(2.0, (i+1.0)/256.0)) +static const uint16_t exptable[EXPTABLELEN] = { + 2042, 2037, 2031, 2026, 2020, 2015, 2010, 2004, + 1999, 1993, 1988, 1983, 1977, 1972, 1966, 1961, + 1956, 1951, 1945, 1940, 1935, 1930, 1924, 1919, + 1914, 1909, 1904, 1898, 1893, 1888, 1883, 1878, + 1873, 1868, 1863, 1858, 1853, 1848, 1843, 1838, + 1833, 1828, 1823, 1818, 1813, 1808, 1803, 1798, + 1794, 1789, 1784, 1779, 1774, 1769, 1765, 1760, + 1755, 1750, 1746, 1741, 1736, 1732, 1727, 1722, + 1717, 1713, 1708, 1704, 1699, 1694, 1690, 1685, + 1681, 1676, 1672, 1667, 1663, 1658, 1654, 1649, + 1645, 1640, 1636, 1631, 1627, 1623, 1618, 1614, + 1609, 1605, 1601, 1596, 1592, 1588, 1584, 1579, + 1575, 1571, 1566, 1562, 1558, 1554, 1550, 1545, + 1541, 1537, 1533, 1529, 1525, 1520, 1516, 1512, + 1508, 1504, 1500, 1496, 1492, 1488, 1484, 1480, + 1476, 1472, 1468, 1464, 1460, 1456, 1452, 1448, + 1444, 1440, 1436, 1433, 1429, 1425, 1421, 1417, + 1413, 1409, 1406, 1402, 1398, 1394, 1391, 1387, + 1383, 1379, 1376, 1372, 1368, 1364, 1361, 1357, + 1353, 1350, 1346, 1342, 1339, 1335, 1332, 1328, + 1324, 1321, 1317, 1314, 1310, 1307, 1303, 1300, + 1296, 1292, 1289, 1286, 1282, 1279, 1275, 1272, + 1268, 1265, 1261, 1258, 1255, 1251, 1248, 1244, + 1241, 1238, 1234, 1231, 1228, 1224, 1221, 1218, + 1214, 1211, 1208, 1205, 1201, 1198, 1195, 1192, + 1188, 1185, 1182, 1179, 1176, 1172, 1169, 1166, + 1163, 1160, 1157, 1154, 1150, 1147, 1144, 1141, + 1138, 1135, 1132, 1129, 1126, 1123, 1120, 1117, + 1114, 1111, 1108, 1105, 1102, 1099, 1096, 1093, + 1090, 1087, 1084, 1081, 1078, 1075, 1072, 1069, + 1066, 1064, 1061, 1058, 1055, 1052, 1049, 1046, + 1044, 1041, 1038, 1035, 1032, 1030, 1027, 1024, +}; + +static const uint8_t rateinctable[4*2][8] = { +// rates 0 - 47 + {0, 1, 0, 1, 0, 1, 0, 1}, + {0, 1, 0, 1, 1, 1, 0, 1}, + {0, 1, 1, 1, 0, 1, 1, 1}, + {0, 1, 1, 1, 1, 1, 1, 1}, + +// rates 48 - + {1, 1, 1, 1, 1, 1, 1, 1}, + {1, 1, 1, 2, 1, 1, 1, 2}, + {1, 2, 1, 2, 1, 2, 1, 2}, + {1, 2, 2, 2, 1, 2, 2, 2}, +}; + +// datasheet 0.053Hz = 1 +// [FD][keycode] +static const uint8_t dettable[4][32]={ + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }, + { + 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, + 2, 3, 3, 3, 4, 4, 4, 5, 5, 6, 6, 7, 8, 8, 8, 8, + }, + { + 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, + 5, 6, 6, 7, 8, 8, 9,10,11,12,13,14,16,16,16,16, + }, + { + 2, 2, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 6, 6, 7, + 8, 8, 9,10,11,12,13,14,16,17,19,20,22,22,22,22, + }, +}; |