Code/Tables.cs
#nullable enable
namespace SharpTalk
{
public static class Tables
{
    // Control block types
    public const int kFreqType = 0;
    public const int kBWType = 1;
    public const int kFNZType = 2;
    public const int kSourceAmpType = 3;
    public const int kResonAmpType = 4;

    // Rank types
    public const int kFrontR = 0;
    public const int kMiddleR = 1;
    public const int kBackR = 2;
    public const int kRoundR = 3;
    public const int kConsonantR = 4;

    // Phoneme flags
    public const uint kVowelF = (1 << 0);   // 0x1
    public const uint kVoicedF = (1 << 2);   // 0x4
    public const uint kVowel1F = (1 << 3);   // 0x8
    public const uint kSonorantF = (1 << 4);   // 0x10
    public const uint kNasalF = (1 << 6);   // 0x40
    public const uint kPlosiveF = (1 << 9);   // 0x200
    public const uint kStopF = (1 << 12);  // 0x1000
    public const uint kGStopF = (1 << 20);  // 0x100000
    public const uint kAffricateF = (1 << 24);  // 0x1000000

    // Misc constants
    public const int k100pct = 0x10000;
    public const int UseEnvList = 0x8000;

    // Coarticulation types
    public const int kControlType = 0;
    public const int kStressType = 1;
    public const int kPDType = 2;
    public const int kBoundryType = 3;
    public const int kWordBoundType = 4;
    public const int kTerminatorType = 5;

    // Locus macros/placeholders (should be replaced in extract_tables.py)

    public static readonly uint[] PhonFlags2 = new uint[]
    {
     	2621501u, 2097213u, 2097213u, 2097213u, 61u, 61u, 61u, 61u,
        61u, 61u, 6815805u, 4194365u, 4194365u, 4194365u, 4194365u, 4194365u,
        4456765u, 4194365u, 4194365u, 4194365u, 4194365u, 4194365u, 2097213u, 32u,
        100663478u, 67109046u, 53u, 10613u, 33554870u, 786870u, 33554870u, 438u,
        34u, 8423798u, 8399222u, 8407414u, 134251522u, 134251526u, 134284290u, 134284294u,
        134226946u, 134226950u, 134349826u, 134349830u, 8429058u, 8429062u, 8404482u, 8404486u,
        8412674u, 8412678u, 16911874u, 16911878u, 1064454u, 3078u, 1050628u, 73222u,
        61u, 61u, 61u, 61u, 61u,
    };

    // MinDurTbl[phon] = min duration in ms
    public static readonly short[] MinDurTbl = new short[]
    {
     	 60,  60,  60,  50,  90,  70, 100,  50,  50,  90, 110, 100, 110, 110,  90,  50,
        100, 120, 120, 120, 120, 120,  50, 200,  70,  70, 110, 100,  15,  30,  30,  40,
         35,  60,  35,  50,  60,  55,  40,  35,  65,  60,  60,  50,  70,  60,  50,  40,
         75,  65, 100,  70,  50,  20,  50,  35,
         80,  60,  60,  60,  80,
    };

    // BoundryDurTbl[bndType] = silence duration in ms for boundary types 0-20
    public static readonly short[] BoundryDurTbl = new short[]
    {
          0,  // 0: unused
        350,  // 1: kBND_Pause (comma)
        600,  // 2: kBND_Decl (declarative)
        600,  // 3: kBND_Quest (yes-no question)
        600,  // 4: kBND_Emph (exclamation)
        300,  // 5: kBND_Paren_L
        200,  // 6: kBND_Paren_R
        155,  // 7: kBND_Sep1
         60,  // 8: kBND_Sep2
         60,  // 9: kBND_Sep3
         60,  // 10: kBND_Sep4
         20,  // 11: kBND_Sep5
          0,  // 12: kBND_Sep6
        100,  // 13: kBND_Sep7
        850,  // 14: kBND_Ellipsis
         35,  // 15
         60,  // 16
         60,  // 17
         20,  // 18
         10,  // 19
        100,  // 20
    };
    
    public static readonly short[] LogToLin = new short[]
    {
        0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 4, 4, 5, 5,
        6, 6, 7, 8, 9, 10, 11, 13, 14, 16, 18, 20, 23, 25, 29, 32,
    };
    public static readonly short[] logOf2Tbl = new short[]
    {
        0, 0, 1, 2, 2, 3, 4, 5, 5, 6, 7, 7, 8, 9, 9, 10,
        11, 12, 12, 13, 14, 14, 15, 16, 16, 17, 18, 18, 19, 20, 21, 21,
        22, 23, 23, 24, 25, 25, 26, 27, 27, 28, 29, 29, 30, 31, 31, 32,
        33, 33, 34, 35, 35, 36, 37, 37, 38, 38, 39, 40, 40, 41, 42, 42,
        43, 44, 44, 45, 46, 46, 47, 47, 48, 49, 49, 50, 51, 51, 52, 52,
        53, 54, 54, 55, 56, 56, 57, 57, 58, 59, 59, 60, 61, 61, 62, 62,
        63, 64, 64, 65, 65, 66, 67, 67, 68, 68, 69, 70, 70, 71, 71, 72,
        73, 73, 74, 74, 75, 76, 76, 77, 77, 78, 78, 79, 80, 80, 81, 81,
        82, 82, 83, 84, 84, 85, 85, 86, 87, 87, 88, 88, 89, 89, 90, 90,
        91, 92, 92, 93, 93, 94, 94, 95, 96, 96, 97, 97, 98, 98, 99, 99,
        100, 100, 101, 102, 102, 103, 103, 104, 104, 105, 105, 106, 106, 107, 108, 108,
        109, 109, 110, 110, 111, 111, 112, 112, 113, 113, 114, 114, 115, 116, 116, 117,
        117, 118, 118, 119, 119, 120, 120, 121, 121, 122, 122, 123, 123, 124, 124, 125,
        125, 126, 126, 127, 127, 128, 128, 129, 129, 130, 131, 131, 132, 132, 133, 133,
        134, 134, 135, 135, 136, 136, 137, 137, 138, 138, 139, 139, 140, 140, 140, 141,
        141, 142, 142, 143, 143, 144, 144, 145, 145, 146, 146, 147, 147, 148, 148, 149,
        149, 150, 150, 151, 151, 152, 152, 153, 153, 154, 154, 155, 155, 155, 156, 156,
        157, 157, 158, 158, 159, 159, 160, 160, 161, 161, 162, 162, 162, 163, 163, 164,
        164, 165, 165, 166, 166, 167, 167, 168, 168, 168, 169, 169, 170, 170, 171, 171,
        172, 172, 173, 173, 173, 174, 174, 175, 175, 176, 176, 177, 177, 177, 178, 178,
        179, 179, 180, 180, 181, 181, 181, 182, 182, 183, 183, 184, 184, 185, 185, 185,
        186, 186, 187, 187, 188, 188, 188, 189, 189, 190, 190, 191, 191, 191, 192, 192,
        193, 193, 194, 194, 194, 195, 195, 196, 196, 197, 197, 197, 198, 198, 199, 199,
        200, 200, 200, 201, 201, 202, 202, 202, 203, 203, 204, 204, 205, 205, 205, 206,
        206, 207, 207, 207, 208, 208, 209, 209, 209, 210, 210, 211, 211, 212, 212, 212,
        213, 213, 214, 214, 214, 215, 215, 216, 216, 216, 217, 217, 218, 218, 218, 219,
        219, 220, 220, 220, 221, 221, 222, 222, 222, 223, 223, 223, 224, 224, 225, 225,
        225, 226, 226, 227, 227, 227, 228, 228, 229, 229, 229, 230, 230, 231, 231, 231,
        232, 232, 232, 233, 233, 234, 234, 234, 235, 235, 235, 236, 236, 237, 237, 237,
        238, 238, 239, 239, 239, 240, 240, 240, 241, 241, 242, 242, 242, 243, 243, 243,
        244, 244, 245, 245, 245, 246, 246, 246, 247, 247, 247, 248, 248, 249, 249, 249,
        250, 250, 250, 251, 251, 252, 252, 252, 253, 253, 253, 254, 254, 254, 255, 255,
    };
    public static readonly short[] CtrlBlockTypeTbl = new short[]
    {
        0, 0, 0, 1, 1, 1, 2, 3, 3, 4, 4, 4, 4, 4, 4,
    };
    public static readonly short[] Male_Loci_Tbl = new short[]
    {
        300, 63, 30, 1, 92, 35, 2080, 35, 30, 320, 60, 30, 1, 91, 35, 2100,
        65, 40, 300, 50, 30, 1, 92, 35, 2080, 35, 40, 300, 50, 30, 1, 91,
        40, 2100, 65, 40, 340, 10, 45, 1350, 20, 50, 2700, 0, 50, 350, 10, 50,
        1300, 12, 55, 2720, 11, 55, 340, 10, 45, 1350, 20, 50, 2700, 0, 50, 350,
        10, 50, 1300, 12, 55, 2720, 11, 55, 310, 40, 40, 1240, 40, 50, 2550, 0,
        70, 310, 40, 40, 1240, 40, 50, 2630, 0, 70, 310, 40, 40, 1320, 15, 60,
        2460, 0, 65, 310, 40, 40, 1240, 35, 50, 2550, 0, 70, 310, 40, 40, 1240,
        35, 60, 2630, 0, 70, 310, 40, 40, 1320, 15, 60, 2460, 0, 65, 285, 32,
        55, 1830, 30, 70, 2640, 51, 70, 285, 32, 55, 1700, 27, 70, 2270, 0, 85,
        340, 32, 55, 1630, 27, 90, 2100, 20, 110, 285, 32, 55, 1830, 30, 70, 2640,
        51, 70, 285, 32, 55, 1700, 27, 70, 2270, 0, 85, 340, 32, 55, 1630, 27,
        90, 2100, 20, 110, 350, 55, 20, 950, 56, 30, 2200, 25, 45, 350, 45, 25,
        920, 46, 30, 2250, 40, 50, 330, 55, 20, 900, 56, 30, 2200, 25, 45, 330,
        45, 25, 920, 46, 30, 2250, 40, 50, 320, 43, 35, 1800, 66, 35, 2650, 30,
        45, 320, 43, 50, 1700, 40, 75, 2600, 0, 50, 320, 43, 40, 1700, 40, 95,
        2300, 0, 95, 250, 43, 35, 1800, 66, 35, 2650, 30, 45, 250, 43, 50, 1700,
        40, 75, 2600, 0, 50, 250, 43, 40, 1700, 40, 95, 2300, 0, 95, 320, 33,
        45, 1990, 20, 50, 3000, 117, 50, 320, 33, 50, 1800, 16, 60, 2150, 0, 90,
        320, 33, 40, 1600, 42, 65, 2050, 15, 80, 250, 33, 45, 1990, 20, 50, 3000,
        113, 50, 300, 33, 50, 1780, 16, 60, 2150, 0, 90, 290, 45, 40, 1600, 42,
        65, 1920, 15, 80, 320, 54, 55, 1750, 25, 70, 2750, 19, 70, 320, 54, 55,
        1680, 10, 70, 2450, 10, 70, 320, 54, 55, 1680, 10, 90, 2350, 10, 100, 240,
        32, 55, 1750, 25, 70, 2750, 19, 70, 245, 32, 55, 1680, 10, 70, 2450, 10,
        70, 245, 32, 55, 1680, 10, 90, 2350, 10, 100, 470, 30, 30, 1200, 10, 35,
        2100, 30, 40, 450, 20, 30, 1, 88, 40, 1550, 80, 25, 450, 20, 35, 1350,
        75, 35, 2600, 40, 45, 450, 20, 30, 1420, 25, 75, 2600, 0, 60, 450, 20,
        30, 1550, 25, 95, 2320, 0, 95, 440, 25, 40, 2200, 15, 60, 3000, 105, 60,
        440, 25, 40, 1800, 20, 70, 2150, 20, 70, 440, 25, 40, 1700, 42, 70, 1920,
        25, 70,
    };
    public static readonly short[] Female_Loci_Tbl = new short[]
    {
        350, 65, 30, 1, 87, 40, 2600, 35, 30, 350, 75, 30, 1, 85, 30, 2000,
        65, 40, 330, 65, 30, 1, 85, 40, 2600, 35, 40, 330, 75, 30, 1, 84,
        30, 2000, 65, 40, 360, 30, 45, 1300, 40, 70, 3180, 35, 70, 440, 30, 50,
        1800, 42, 70, 3060, 11, 70, 340, 30, 45, 1300, 35, 60, 3180, 35, 60, 400,
        30, 50, 1800, 42, 70, 3060, 11, 70, 330, 40, 40, 2000, 30, 50, 2980, 0,
        70, 390, 40, 40, 1800, 40, 50, 3070, 0, 70, 390, 40, 40, 1900, 15, 60,
        2880, 0, 65, 320, 40, 40, 2000, 30, 50, 2980, 0, 70, 320, 35, 40, 1800,
        40, 50, 3070, 0, 70, 320, 40, 40, 1900, 15, 60, 2880, 0, 65, 360, 32,
        55, 2000, 30, 70, 2940, 51, 70, 360, 32, 55, 1850, 7, 70, 2700, 0, 85,
        400, 32, 55, 1840, 7, 90, 2700, 20, 110, 320, 26, 55, 2000, 30, 70, 2940,
        51, 70, 320, 26, 55, 1850, 7, 70, 2700, 0, 85, 320, 30, 55, 1840, 7,
        90, 2700, 20, 110, 440, 40, 20, 1350, 60, 25, 2690, 55, 35, 440, 40, 25,
        1130, 50, 30, 2530, 48, 40, 360, 40, 20, 1350, 60, 25, 2690, 55, 35, 360,
        50, 20, 1130, 50, 30, 2530, 48, 40, 470, 33, 35, 2150, 60, 35, 3150, 30,
        45, 470, 33, 45, 2050, 0, 80, 2990, 0, 50, 470, 33, 40, 1900, 0, 70,
        2900, 20, 70, 370, 33, 35, 2150, 60, 35, 3150, 30, 45, 370, 33, 45, 2050,
        0, 80, 2990, 0, 50, 370, 33, 40, 1900, 0, 80, 2900, 20, 80, 440, 33,
        40, 2750, 60, 50, 3350, 110, 50, 440, 33, 45, 1900, 0, 60, 2500, 0, 90,
        440, 33, 35, 1800, 62, 65, 2520, 15, 80, 320, 33, 45, 2750, 60, 50, 3350,
        110, 50, 340, 43, 50, 1900, 0, 60, 2500, 0, 90, 370, 45, 40, 1800, 62,
        65, 2520, 15, 80, 400, 34, 55, 2100, 25, 70, 3300, 19, 70, 420, 40, 55,
        1900, 10, 70, 3200, 10, 70, 420, 34, 55, 2050, 10, 90, 3100, 10, 100, 370,
        32, 55, 2000, 25, 70, 3300, 19, 70, 380, 40, 55, 1900, 10, 70, 3200, 10,
        70, 380, 32, 55, 2050, 10, 90, 3100, 10, 100, 470, 30, 30, 1380, 10, 35,
        2400, 30, 40, 450, 20, 30, 1, 88, 40, 1750, 80, 30, 450, 24, 35, 1500,
        75, 35, 3000, 35, 45, 450, 22, 30, 1900, 25, 75, 3040, 0, 60, 450, 24,
        30, 1900, 25, 80, 2890, 0, 80, 460, 20, 40, 2860, 40, 60, 3200, 65, 60,
        500, 20, 40, 1970, 20, 70, 2620, 20, 70, 480, 20, 40, 1650, 42, 70, 2500,
        25, 70,
    };
    public static readonly short[] Front_Loci_Tbl = new short[]
    {
        -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, -1, -1, 792, -1, -1, -1, -1,
        -1, 756, 792, 846, 0, 36, 72, 108, 144, 198, 252, 306, 360, 396, 432, 486,
        540, 594, 648, 702, 432, 486, -1, 108,
    };
    public static readonly short[] Mid_Loci_Tbl = new short[]
    {
        -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, -1, -1, 810, -1, -1, -1, -1,
        -1, 774, 810, 864, 18, 54, 90, 126, 162, 216, 270, 324, 378, 414, 450, 504,
        558, 612, 666, 720, 450, 504, -1, 126,
    };
    public static readonly short[] Back_Loci_Tbl = new short[]
    {
        -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, -1, -1, 828, -1, -1, -1, -1,
        -1, 774, 828, 882, 18, 54, 90, 126, 180, 234, 288, 342, 378, 414, 468, 522,
        576, 630, 684, 738, 468, 522, -1, 126,
        -1, -1, -1, -1, -1,
    };
    public static readonly short[] NoiseIndexTbl = new short[]
    {
        -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, -1, -1, -1, -1, -1, -1, -1,
        -1, -1, -1, -1, 0, 24, 48, 72, 96, 120, 144, 168, 192, 216, 240, 264,
        288, 312, 336, 360, 384, -1, -1, 408,
        -1, -1, -1, -1, -1,
    };
    public static readonly short[] Male_NoiseAmpTbl = new short[]
    {
        0, 0, 0, 0, 0, 51, 0, 0, 0, 0, 0, 51, 0, 0, 0, 0,
        0, 49, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 45, 0, 0,
        0, 0, 0, 45, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 43,
        0, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 50, 0, 0, 0, 0,
        0, 48, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 41, 0, 0,
        0, 0, 0, 41, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 39,
        0, 0, 0, 0, 55, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0,
        55, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0, 55, 0, 0, 0,
        0, 0, 55, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0, 55, 0,
        0, 46, 63, 0, 60, 0, 0, 46, 63, 0, 60, 0, 0, 46, 63, 0,
        63, 0, 0, 46, 63, 0, 63, 0, 0, 43, 59, 0, 42, 0, 0, 43,
        59, 0, 42, 0, 0, 43, 54, 0, 36, 0, 0, 43, 54, 0, 36, 0,
        0, 0, 0, 0, 44, 61, 0, 0, 0, 0, 44, 61, 0, 0, 0, 0,
        44, 61, 0, 0, 0, 0, 44, 61, 0, 0, 0, 0, 40, 56, 0, 0,
        0, 0, 40, 56, 0, 0, 0, 0, 40, 56, 0, 0, 0, 0, 40, 56,
        0, 0, 48, 0, 55, 0, 0, 0, 52, 0, 54, 0, 33, 37, 60, 0,
        50, 0, 33, 37, 60, 0, 50, 0, 0, 0, 44, 0, 52, 0, 0, 0,
        46, 0, 51, 0, 0, 0, 57, 0, 0, 0, 0, 0, 55, 0, 0, 0,
        0, 42, 51, 44, 33, 0, 43, 0, 0, 46, 0, 0, 43, 0, 28, 38,
        0, 0, 43, 0, 28, 38, 0, 0, 0, 38, 0, 33, 0, 0, 39, 0,
        0, 42, 0, 0, 38, 0, 23, 33, 0, 0, 38, 0, 23, 33, 0, 0,
        0, 49, 53, 0, 48, 0, 0, 49, 53, 0, 48, 0, 0, 49, 52, 0,
        42, 0, 0, 49, 52, 0, 42, 0, 0, 49, 63, 0, 48, 0, 0, 49,
        63, 0, 48, 0, 0, 49, 60, 0, 42, 0, 0, 49, 60, 0, 42, 0,
        0, 0, 44, 0, 52, 0, 0, 0, 46, 0, 51, 0, 0, 0, 57, 0,
        0, 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 44, 61, 0, 0,
        0, 0, 44, 61, 0, 0, 0, 0, 44, 61, 0, 0, 0, 0, 44, 61,
    };
    public static readonly short[] Female_NoiseAmpTbl = new short[]
    {
        0, 0, 0, 0, 35, 52, 0, 0, 0, 0, 35, 52, 0, 0, 0, 0,
        33, 50, 0, 0, 0, 0, 33, 50, 0, 0, 0, 0, 29, 46, 0, 0,
        0, 0, 29, 46, 0, 0, 0, 0, 27, 44, 0, 0, 0, 0, 27, 44,
        0, 0, 0, 0, 0, 46, 0, 0, 0, 0, 0, 46, 0, 0, 0, 0,
        0, 44, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 40, 0, 0,
        0, 0, 0, 40, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 38,
        0, 0, 0, 0, 58, 0, 0, 0, 0, 0, 58, 0, 0, 0, 0, 0,
        61, 0, 0, 0, 0, 0, 61, 0, 0, 0, 0, 0, 52, 0, 0, 0,
        0, 0, 52, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0, 55, 0,
        0, 46, 53, 0, 37, 0, 0, 46, 53, 0, 37, 0, 0, 46, 53, 0,
        37, 0, 0, 46, 53, 0, 37, 0, 0, 40, 47, 0, 31, 0, 0, 40,
        47, 0, 31, 0, 0, 40, 47, 0, 31, 0, 0, 40, 47, 0, 31, 0,
        40, 0, 0, 0, 43, 60, 0, 0, 0, 0, 43, 60, 0, 0, 0, 0,
        43, 60, 0, 0, 0, 0, 43, 60, 34, 0, 0, 0, 37, 54, 0, 0,
        0, 0, 37, 54, 0, 0, 0, 0, 37, 54, 0, 0, 0, 0, 37, 54,
        0, 0, 0, 0, 54, 60, 0, 0, 0, 0, 54, 60, 0, 0, 0, 0,
        54, 60, 0, 0, 0, 0, 54, 60, 0, 0, 0, 0, 49, 55, 0, 0,
        0, 0, 49, 55, 0, 0, 0, 0, 49, 55, 0, 0, 0, 0, 49, 55,
        0, 44, 51, 0, 35, 0, 45, 0, 0, 0, 0, 0, 48, 0, 30, 0,
        0, 0, 48, 0, 30, 0, 0, 0, 0, 40, 0, 0, 0, 0, 41, 0,
        0, 0, 0, 0, 43, 0, 25, 0, 0, 0, 43, 0, 25, 0, 0, 0,
        0, 46, 53, 0, 37, 0, 0, 46, 53, 0, 37, 0, 0, 46, 49, 0,
        34, 0, 0, 46, 49, 0, 34, 0, 0, 46, 53, 0, 37, 0, 0, 46,
        53, 0, 37, 0, 0, 46, 49, 0, 34, 0, 0, 46, 49, 0, 34, 0,
        0, 0, 0, 0, 49, 55, 0, 0, 0, 0, 49, 55, 0, 0, 0, 0,
        49, 55, 0, 0, 0, 0, 49, 55, 40, 0, 0, 0, 43, 60, 0, 0,
        0, 0, 43, 60, 0, 0, 0, 0, 43, 60, 0, 0, 0, 0, 43, 60,
    };
    public static readonly short[] Rank_FWD_Tbl = new short[]
    {
        0, 0, 0, 0, 1, 1, 2, 2, 1, 2, 0, 1, 2, 1, 2, 2,
        0, 0, 0, 1, 2, 2, 0, 4, 2, 3, 3, 4, 3, 0, 3, 3,
        4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
        4, 4, 4, 4, 4, 4, 4, 4,
        1, 0, 2, 0, 2,
    };
    public static readonly short[] Rank_BKWD_Tbl = new short[]
    {
        0, 0, 0, 0, 1, 1, 2, 2, 1, 2, 0, 0, 0, 3, 3, 3,
        2, 2, 2, 2, 2, 2, 0, 4, 2, 3, 3, 4, 3, 0, 3, 3,
        4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
        4, 4, 4, 4, 4, 4, 4, 4,
        1, 0, 2, 0, 3,
    };
    public static readonly short[] DefaultTargTbl = new short[]
    {
        600, 1600, 2600, 100, 150, 250,
    };
    public static readonly short[] BurstDurTbl = new short[]
    {
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 13, 13,
        20, 20, 70, 40, 0, 0, 0, 13,
        0, 0, 0, 0, 0,
    };
    public static readonly short[] f1FreqTblM = new short[]
    {
        317, 458, 617, 714, 735, 625, 665, 498, 523, 462, -32768, -32764, -32760, -32756, -32752, -32748,
        -32744, -32740, -32736, -32732, -32728, -32724, 454, -1, 475, 450, 450, 425, 295, 267, 395, 355,
        -1, 400, 405, 403, 350, 280, 325, 300, 325, 270, 300, 280, 350, 230, 350, 200,
        350, 200, 350, 250, 200, 350, -1, 200,
        744, 298, 355, 480, 460,
    };
    public static readonly short[] f2FreqTblM = new short[]
    {
        2182, -32720, -32716, -32712, 1200, 1238, 1000, -32708, 1375, 1348, -32704, -32700, -32696, -32692, -32688, -32684,
        -32680, -32676, -32672, -32668, -32664, -32660, 1667, -1, 1280, 800, 800, 1350, 536, 2156, 1112, 1090,
        -1, 1179, 1500, 1870, 1100, 1100, 1300, 1300, 1430, 1430, 1650, 1650, 1100, 1034, 1600, 1600,
        1800, 1895, 1750, 1750, 1600, 1600, -1, 1400,
        1240, 2083, 1282, 1857, 857,
    };
    public static readonly short[] f3FreqTblM = new short[]
    {
        2860, 2540, 2540, 2470, 2660, 2600, 2635, 2530, 2510, 1863, -32652, -32648, -32644, -32640, -32636, -32632,
        -32628, -32624, -32620, -32616, -32612, -32608, 2526, -1, 1550, 3000, 2850, 2500, 2300, 2660, 1490, 2815,
        -1, 2212, 2520, 2470, 2070, 2070, 2520, 2570, 2550, 2600, 2550, 2550, 2150, 2025, 2600, 2600,
        2250, 2675, 2700, 2700, 2600, 2600, -1, 2600,
        2426, 2954, 2233, 2437, 2405,
    };
    public static readonly short[] b1FreqTblM = new short[]
    {
        75, 75, 75, 90, 115, 90, 100, 85, 90, 90, 80, -32604, 90, -32600, 90, 82,
        70, 80, 85, 115, 95, 90, 60, 300, 80, 90, 90, 130, 75, 70, 80, 80,
        300, 130, 110, 130, 200, 100, 200, 100, 200, 100, 200, 100, 200, 90, 200, 75,
        200, 75, 200, 70, 110, 90, -1, 90,
        182, 67, 55, 65, 61,
    };
    public static readonly short[] b2FreqTblM = new short[]
    {
        120, 120, 122, -32596, 115, 105, 115, 110, 110, 110, 120, 120, -32592, 107, 105, 105,
        -32588, 120, 125, 115, 110, 90, 100, 300, 80, 90, 90, 300, 100, 170, 100, 102,
        200, 280, 220, 250, 120, 120, 90, 120, 180, 140, 240, 160, 180, 80, 150, 100,
        160, 135, 280, 170, 100, 100, -1, 110,
        117, 130, 129, 97, 114,
    };
    public static readonly short[] b3FreqTblM = new short[]
    {
        220, 225, 240, 255, 230, 220, 190, 210, 220, 175, 230, 245, 220, 205, 220, 200,
        -32584, 200, 230, 205, 200, 180, 200, 300, 130, 160, 200, 460, 170, 280, 120, 190,
        220, 360, 360, 400, 150, 120, 150, 170, 300, 300, 300, 300, 180, 130, 250, 205,
        280, 230, 250, 250, 170, 170, -1, 200,
        222, 145, 135, 257, 134,
    };
    public static readonly short[] avVolTblM = new short[]
    {
        61, 62, 62, 60, 61, 61, 61, 62, 60, 62, 62, 61, 62, 61, 62, 62,
        65, 65, 62, 61, 62, 65, 63, 0, 64, 63, 63, 60, 58, 58, 58, 59,
        0, 60, 59, 60, 0, 53, 0, 53, 0, 53, 0, 53, 0, 0, 0, 26,
        0, 28, 0, 0, 0, 34, 47, 50,
        61, 61, 61, 61, 61,
    };
    public static readonly short[] f1FreqTblF = new short[]
    {
        322, 533, 667, -32768, 810, 738, 728, -32764, 623, 512, -32760, -32756, -32752, -32748, -32744, -32740,
        -32736, -32732, -32728, -32724, -32720, -32716, 499, -1, 490, 480, 480, 450, 320, 302, 395, 360,
        -1, 410, 415, 413, 360, 300, 340, 320, 340, 300, 320, 300, 370, 240, 370, 210,
        370, 210, 370, 280, 220, 370, -1, 220,
        834, 334, 398, 538, 515,
    };
    public static readonly short[] f2FreqTblF = new short[]
    {
        -32712, -32708, -32704, -32700, 1325, -32696, -32692, 1195, 1650, 1513, -32688, -32684, -32680, -32676, -32672, -32668,
        -32664, -32660, -32656, -32652, -32648, -32644, 2055, -1, 1600, 930, 990, 1530, 636, 2361, 1100, 1190,
        -1, 1224, 1575, 2370, 1150, 1150, 1530, 1500, 1640, 1640, 1980, 1980, 1150, 1059, 1860, 1730,
        2190, 2090, 2100, 2100, 1860, 1860, -1, 1860,
        1314, 2208, 1359, 1968, 908,
    };
    public static readonly short[] f3FreqTblF = new short[]
    {
        3085, 2890, 2930, 2795, 2830, 2800, 2810, 2780, 2710, 2138, -32640, -32636, -32632, -32628, -32624, -32620,
        -32616, -32612, -32608, -32604, -32600, -32596, 2864, -1, 1950, 3320, 3320, 2920, 2495, 3080, 1650, 3055,
        -1, 2395, 2720, 3020, 2460, 2460, 2940, 2940, 2930, 3000, 2930, 2940, 2470, 2185, 3020, 2810,
        2710, 2780, 3150, 3150, 3000, 3000, -1, 3020,
        2523, 3072, 2322, 2534, 2501,
    };
    public static readonly short[] b1FreqTblF = new short[]
    {
        82, 82, 85, -32592, 135, 100, 115, 90, 115, 90, 82, -32588, 95, -32584, 95, 90,
        80, 80, 105, 110, 90, 80, 80, 300, 90, 90, 90, 110, 85, 130, 80, 90,
        500, 120, 105, 120, 200, 140, 200, 120, 200, 140, 200, 120, 200, 100, 200, 85,
        200, 80, 200, 120, 90, 100, 100, 120,
        191, 70, 58, 68, 64,
    };
    public static readonly short[] b2FreqTblF = new short[]
    {
        180, 165, 150, 190, 170, 145, 120, 120, 140, 195, 165, 165, -32580, 145, 125, 120,
        -32576, 220, 165, 170, 155, 130, 180, 300, 200, 110, 120, 200, 110, 160, 125, 125,
        -1, 340, 170, 600, 140, 120, 220, 210, 200, 170, 240, 160, 180, 110, 150, 120,
        160, 125, 230, 170, 100, 100, -1, 90,
        123, 137, 135, 102, 120,
    };
    public static readonly short[] b3FreqTblF = new short[]
    {
        265, 240, 265, 280, 220, 235, 220, 215, 230, 190, 280, 265, 220, 255, 220, 220,
        -32572, 200, 205, 210, 195, 140, 240, 500, 150, 130, 200, 160, 185, 230, 125, 190,
        -1, 250, 305, 550, 150, 120, 300, 270, 200, 200, 300, 300, 180, 150, 250, 170,
        280, 215, 350, 350, 130, 130, -1, 120,
        233, 152, 142, 270, 141,
    };
    public static readonly short[] avVolTblF = new short[]
    {
        62, 62, 62, 61, 61, 61, 61, 62, 60, 62, 62, 61, 62, 61, 62, 62,
        66, 66, 62, 61, 61, 66, 63, 0, 64, 64, 64, 60, 58, 58, 58, 59,
        0, 60, 59, 60, 0, 53, 0, 53, 0, 53, 0, 53, 0, 0, 0, 26,
        0, 28, 0, 0, 0, 34, 47, 50,
        62, 62, 62, 62, 62,
    };
    public static readonly uint[] One_Over_X_Tbl = new uint[]
    {
        65536, 65536, 32768, 21845, 16384, 13107, 10922, 9362, 8192, 7281, 6553, 5957, 5461, 5041, 4681, 4369,
        4096, 3855, 3640, 3449, 3276, 3120, 2978, 2849, 2730, 2621, 2520, 2427, 2340, 2259, 2184, 2114,
        2048, 1985, 1927, 1872, 1820, 1771, 1724, 1680, 1638, 1598, 1560, 1524, 1489, 1456, 1424, 1394,
        1365, 1337, 1310, 1285, 1260, 1236, 1213, 1191, 1170, 1149, 1129, 1110, 1092, 1074, 1057, 1040,
        1024, 1008, 992, 978, 963, 949, 936, 923, 910, 897, 885, 873, 862, 851, 840, 829,
        819, 809, 799, 789, 780, 771, 762, 753, 744, 736, 728, 720, 712, 704, 697, 689,
        682, 675, 668, 661,
    };
    public static readonly short[] MaleEnvTbl = new short[]
    {
        604, 5, 429, 80, 773, 50, 482, 80, 556, 35, 411, 85, 742, 40, 523, 90,
        548, 20, 429, 75, 363, 20, 330, 85, 312, 20, 340, 70, 367, 40, 463, 75,
        605, 15, 505, 90, 727, 40, 545, 70, 487, 35, 501, 70, 460, 35, 480, 75,
        1860, 40, 1730, 90, 1783, 50, 1550, 90, 1507, 20, 1460, 90, 1117, 40, 1175, 75,
        1760, 5, 1980, 80, 1230, 40, 1915, 85, 931, 35, 1844, 85, 1260, 40, 860, 85,
        1082, 20, 845, 75, 1305, 20, 970, 85, 2111, 20, 1050, 65, 1940, 40, 1330, 75,
        1705, 50, 1300, 75, 1139, 40, 1300, 70, 858, 40, 1200, 75, 997, 35, 1190, 75,
        1680, 25, 1200, 75, 2524, 5, 2550, 80, 2655, 50, 2445, 70, 2578, 50, 2388, 75,
        2635, 50, 2585, 90, 2416, 20, 2331, 80, 2280, 20, 2267, 80, 2660, 20, 2217, 50,
        2710, 30, 1660, 90, 2460, 40, 1650, 80, 2605, 40, 1670, 80, 2480, 40, 1650, 80,
        2371, 30, 1740, 90, 110, 40, 77, 90, 105, 50, 95, 90, 135, 50, 130, 90,
        110, 40, 150, 90, 145, 20, 105, 65, 255, 20, 195, 50,
    };
    public static readonly short[] FemaleEnvTbl = new short[]
    {
        789, 20, 786, 80, 550, 29, 587, 75, 599, 20, 434, 90, 863, 50, 585, 90,
        651, 50, 444, 85, 842, 40, 588, 90, 633, 20, 439, 80, 391, 20, 360, 85,
        352, 30, 365, 70, 372, 40, 523, 75, 710, 20, 575, 90, 877, 40, 610, 70,
        552, 40, 556, 70, 460, 30, 520, 75, 2486, 5, 2625, 90, 2135, 40, 2050, 90,
        2108, 50, 1875, 90, 1737, 50, 1670, 80, 1484, 25, 1521, 60, 1080, 50, 1110, 90,
        2075, 15, 2280, 85, 1405, 40, 2190, 80, 1021, 40, 2039, 85, 1535, 20, 1075, 65,
        1232, 20, 895, 60, 1405, 20, 1125, 90, 2386, 35, 1250, 90, 2365, 40, 1480, 80,
        2105, 45, 1450, 80, 1279, 40, 1450, 70, 1048, 40, 1350, 75, 1242, 35, 1340, 75,
        2864, 10, 2975, 80, 2855, 60, 2920, 90, 2853, 50, 2738, 90, 2835, 25, 2760, 75,
        2666, 20, 2656, 90, 2530, 20, 2467, 85, 2910, 30, 2517, 50, 2910, 30, 1810, 70,
        2710, 40, 1800, 80, 2830, 35, 1820, 70, 2680, 35, 1800, 80, 2646, 30, 1890, 80,
        95, 20, 120, 60, 135, 50, 95, 90, 120, 50, 95, 90, 120, 40, 160, 80,
        145, 30, 120, 60, 275, 30, 195, 70,
    };
    public static readonly short[] phonPitchTbl = new short[]
    {
        29, 18, 6, 0, 0, 6, 0, 18, 9, 15, 12, 0, 15, 0, 9, 29,
        29, 29, 18, 0, 9, 24, 18, 15, 0, 0, 0, -15, 18, 18, 0, 0,
        57, -15, -15, -15, 82, -15, 82, -15, 82, -15, 82, -15, 82, -15, 82, -15,
        82, -15, 82, -15, 0, -3, 0, -15,
        0, 29, 18, 6, 9,
    };
    public static readonly short[] MaxDurTbl = new short[]
    {
        170, 160, 160, 230, 240, 160, 240, 170, 120, 180, 200, 250, 260, 260, 220, 210,
        230, 230, 250, 250, 250, 230, 120, 305, 120, 100, 160, 170, 60, 75, 65, 75,
        70, 70, 65, 80, 100, 70, 100, 60, 115, 75, 115, 70, 85, 80, 85, 80,
        90, 90, 160, 100, 70, 20, 50, 60,
        240, 170, 200, 160, 220,
    };
}
}  // namespace