#include <stdint.h>
#include "WaveTable.h"
#include <avr/pgmspace.h>
// Sample's base frequency: 523.629906 Hz
// Sample's sample rate: 32000 Hz
const int8_t WaveTable[WAVETABLE_LEN] PROGMEM ={
// Attack Samples:
     0,     0,     0,     0,     0,     0,     0,     1,     0,     0,
     2,    -1,     1,     3,    -1,     5,     3,     0,     8,     0,
    -7,   -13,   -31,     0,    47,    53,    36,    -3,   -32,   -25,
   -19,    22,    78,    46,     5,     1,    -1,    11,    -4,   -18,
    20,     1,   -39,   -33,   -43,     2,    36,   -48,   -81,   -62,
   -52,    -6,   -30,   -62,     0,     9,    -3,    11,   -32,   -31,
     1,   -27,   -16,   -19,   -42,    19,    30,    13,    63,    37,
    11,    53,    43,    70,    85,    14,    15,     4,   -26,    35,
    29,     6,    50,    19,    28,    67,     6,     7,    11,   -38,
    12,    16,   -32,   -11,   -55,   -68,   -12,   -59,   -71,   -48,
   -89,   -39,    -8,   -59,   -28,   -45,   -72,    -1,   -12,   -16,
    31,   -16,    -1,    40,    -5,    23,    24,   -26,    32,    42,
    20,    76,    41,    22,    78,    48,    76,   105,    29,    38,
    34,    -2,    62,    39,    -4,    33,   -17,   -10,    49,     0,
    14,    22,   -38,    14,    24,   -23,     1,   -64,  -100,   -31,
   -63,   -61,   -43,  -119,   -77,   -33,   -74,   -32,   -58,   -96,
   -17,   -33,   -32,    21,   -34,    -9,    40,    -3,    43,    38,
   -19,    50,    43,    29,    95,    26,    10,    57,    -3,    44,
    70,    -2,    46,    34,    -3,    66,    22,     1,    48,   -14,
    10,    53,     0,    41,    24,   -41,    25,     6,   -14,    39,
   -34,   -42,     8,   -45,    -7,    -9,   -96,   -44,   -49,   -70,
     0,   -57,   -75,   -21,   -77,   -35,     3,   -68,   -22,   -25,
   -70,     8,   -20,   -43,    18,   -40,   -19,    35,   -22,    25,
    35,   -18,    63,    54,    22,    84,    24,    25,    89,    26,
    55,    67,   -12,    51,    55,    11,    77,    24,    -5,    61,
     8,    31,    66,   -15,    18,    15,   -45,    20,   -11,   -53,
    -3,   -72,   -71,    -9,   -74,   -49,   -35,   -98,   -21,   -12,
   -51,     7,   -43,   -59,    11,   -37,   -20,     5,   -72,   -22,
    -1,   -47,    17,   -13,   -50,    17,   -16,     1,    60,    -2,
    26,    51,     3,    69,    63,    13,    67,    32,    25,    87,
    27,    30,    58,    -2,    44,    55,    -5,    39,    13,   -12,
    52,     9,     0,    31,   -38,   -15,    10,   -43,     1,   -14,
   -70,   -16,   -39,   -50,     1,   -56,   -49,    -5,   -51,    -6,
     6,   -52,    -6,   -20,   -45,    13,   -29,   -45,     0,   -47,
   -18,    15,   -43,   -11,   -12,   -45,    23,     7,   -12,    38,
    -9,     1,    54,    10,    40,    48,    -9,    42,    42,    16,
    69,    24,     7,    59,    14,    32,    59,    -1,    34,    43,
    -1,    45,    16,   -19,    28,   -13,   -14,    24,   -36,   -20,
    -3,   -53,    -3,    -4,   -51,   -10,   -41,   -44,    14,   -32,
   -31,    -8,   -64,   -26,    -9,   -52,    -5,   -27,   -60,    -2,
   -28,   -26,    15,   -42,   -26,     5,   -31,    18,    19,   -22,
    25,     6,    -2,    48,     4,     6,    42,     1,    38,    55,
    11,    48,    33,     7,    62,    33,    21,    56,    10,    26,
    52,     3,    29,    22,   -16,    28,     5,   -18,    18,   -26,
   -25,    10,   -32,    -4,     4,   -45,    -8,   -10,   -29,    17,
   -23,   -47,   -12,   -48,   -29,    -6,   -60,   -34,   -28,   -58,
    -8,   -21,   -41,     1,   -34,   -27,    17,   -19,     3,    16,
   -23,    20,    22,    -5,    34,     6,    -2,    44,    12,    26,
    51,     7,    39,    53,    23,    67,    47,    20,    64,    34,
    32,    59,     6,    17,    33,    -6,    26,    15,   -23,    13,
   -11,   -23,    16,   -25,   -23,     0,   -43,   -15,    -7,   -45,
   -11,   -32,   -61,   -21,   -48,   -49,   -20,   -64,   -43,   -15,
   -48,   -13,   -15,   -42,     5,    -9,   -18,    19,   -15,    -8,
    21,   -13,    16,    26,   -11,    23,    18,     6,    52,    27,
    19,    49,    17,    41,    65,    26,    51,    48,    19,    57,
    35,    13,    39,     2,     5,    28,   -13,     3,     8,   -29,
     4,    -4,   -27,     6,   -23,   -30,     3,   -29,   -19,    -8,
   -50,   -24,   -22,   -50,   -16,   -35,   -51,   -16,   -42,   -32,
    -1,   -35,   -17,    -7,   -34,     4,     1,   -21,     9,   -14,
   -16,    21,    -7,     2,    17,   -16,    15,    23,     1,    35,
    21,     8,    45,    25,    34,    60,    24,    40,    52,    21,
    47,    33,     5,    34,    12,     4,    30,    -5,     1,    18,
   -13,     8,     7,   -22,     5,    -8,   -23,     7,   -22,   -28,
   -11,   -44,   -25,   -14,   -45,   -23,   -32,   -50,   -13,   -28,
   -33,    -7,   -36,   -26,    -6,   -31,    -6,    -5,   -33,    -4,
   -12,   -21,    11,   -13,   -12,    12,   -10,    10,    24,     0,
    27,    27,    13,    50,    35,    31,    55,    28,    39,    54,
    20,    35,    33,     8,    35,    19,     2,    25,     0,     0,
    22,    -6,     5,    10,   -19,     3,    -3,   -23,     0,   -23,
   -33,    -9,   -34,   -23,    -9,   -40,   -23,   -23,   -45,   -16,
   -26,   -39,   -12,   -32,   -27,    -4,   -31,   -18,   -11,   -35,
    -7,   -10,   -28,     0,   -15,   -16,    14,    -5,     6,    23,
     0,    26,    35,    17,    45,    33,    21,    48,    29,    29,
    45,    15,    26,    35,    11,    33,    26,     6,    31,    16,
    10,    31,     5,     6,    16,   -13,     0,     0,   -23,    -6,
   -20,   -34,   -11,   -32,   -35,   -19,   -44,   -32,   -20,   -41,
   -22,   -26,   -42,   -15,   -25,   -32,   -13,   -36,   -28,   -10,
   -31,   -13,    -9,   -27,    -2,    -5,   -10,    17,     4,     6,
    27,    10,    27,    41,    20,    38,    35,    19,    42,    30,
    23,    42,    22,    25,    40,    18,    30,    33,    13,    33,
    24,     8,    25,     6,     0,    14,   -11,    -8,    -5,   -30,
   -17,   -20,   -36,   -16,   -29,   -39,   -19,   -35,   -28,   -12,
   -33,   -24,   -21,   -38,   -17,   -22,   -34,   -16,   -30,   -31,
   -11,   -28,   -19,    -8,   -25,    -3,     2,    -6,    16,     9,
     6,    29,    16,    20,    34,    14,    26,    33,    16,    35,
    30,    19,    39,    26,    24,    40,    21,    27,    35,    17,
    31,    29,    10,    24,    10,    -1,    12,    -8,   -12,    -4,
   -27,   -19,   -15,   -33,   -17,   -22,   -33,   -13,   -23,   -25,
   -12,   -32,   -28,   -18,   -35,   -23,   -25,   -42,   -24,   -28,
   -32,   -11,   -26,   -24,    -6,   -18,    -3,     6,    -5,    12,
    12,     6,    29,    21,    16,    31,    16,    22,    34,    17,
    29,    31,    18,    36,    32,    24,    40,    27,    27,    41,
    24,    28,    30,     9,    19,    12,    -3,     6,    -8,   -18,
    -6,   -22,   -19,   -10,   -28,   -19,   -15,   -27,   -10,   -16,
   -28,   -15,   -28,   -30,   -18,   -34,   -30,   -24,   -39,   -24,
   -22,   -33,   -17,   -22,   -24,    -4,   -12,    -7,     6,    -5,
     7,    17,     6,    20,    16,     7,    25,    19,    18,    32,
    18,    22,    32,    22,    35,    37,    26,    41,    36,    29,
    41,    25,    20,    27,    10,    13,    13,    -6,     0,    -7,
   -20,    -7,   -16,   -20,    -9,   -23,   -20,   -11,   -24,   -16,
   -17,   -30,   -19,   -24,   -32,   -22,   -33,   -34,   -22,   -33,
   -27,   -21,   -31,   -18,   -15,   -21,    -5,    -7,    -8,     6,
     0,     5,    16,     6,    15,    19,    11,    24,    21,    14,
    26,    21,    24,    37,    28,    34,    40,    29,    38,    37,
    27,    34,    24,    17,    24,    11,     7,     7,    -8,    -5,
    -4,   -15,    -8,   -13,   -20,   -10,   -16,   -16,    -9,   -20,
   -18,   -15,   -26,   -19,   -22,   -33,   -27,   -32,   -35,   -25,
   -32,   -31,   -22,   -28,   -18,   -13,   -18,    -7,    -6,    -8,
     3,     0,     1,     9,     1,     6,    14,     8,    16,    17,
    13,    25,    26,    26,    37,    32,    35,    41,    34,    38,
    38,    27,    30,    25,    18,    22,    12,     5,     7,    -3,
    -3,    -1,   -11,    -7,    -7,   -14,    -7,   -12,   -18,   -14,
   -22,   -24,   -21,   -30,   -28,   -29,   -37,   -31,   -32,   -36,
   -27,   -30,   -28,   -18,   -20,   -15,    -9,   -15,    -8,    -5,
    -9,     0,     0,    -1,     8,     6,     8,    15,    10,    16,
    22,    21,    30,    33,    30,    39,    37,    35,    41,    33,
    33,    35,    26,    28,    26,    16,    17,    10,     3,     7,
     0,    -3,    -1,    -9,    -8,    -7,   -15,   -12,   -16,   -24,
   -20,   -24,   -28,   -24,   -31,   -31,   -27,   -34,   -29,   -27,
   -31,   -22,   -21,   -22,   -14,   -17,   -16,    -9,   -13,    -9,
    -6,   -11,    -3,     0,    -1,     7,     6,     6,    14,    12,
    18,    27,    25,    31,    33,    28,    35,    34,    31,    35,
    30,    27,    30,    23,    22,    22,    13,    13,    11,     5,
     7,     1,    -3,     0,    -5,    -7,    -7,   -16,   -15,   -16,
   -23,   -21,   -24,   -28,   -24,   -29,   -30,   -24,   -29,   -26,
   -21,   -25,   -19,   -17,   -21,   -15,   -16,   -18,   -12,   -17,
   -16,   -10,   -12,    -6,     0,    -2,     5,     8,     8,    18,
    20,    22,    28,    24,    27,    33,    28,    32,    31,    25,
    29,    26,    23,    28,    23,    20,    21,    14,    15,    16,
    10,    12,     9,     2,     4,    -2,    -8,    -7,   -15,   -16,
   -15,   -24,   -23,   -24,   -28,   -23,   -26,   -29,   -24,   -27,
   -25,   -20,   -25,   -22,   -19,   -24,   -20,   -19,   -23,   -17,
   -19,   -18,   -10,   -12,    -7,     0,    -1,     5,     9,     9,
    18,    20,    21,    28,    26,    27,    32,    27,    29,    31,
    27,    31,    30,    25,    29,    25,    23,    26,    20,    18,
    19,    12,    11,     9,     0,     0,    -4,   -12,   -11,   -17,
   -21,   -20,   -28,   -28,   -26,   -30,   -25,   -24,   -27,   -21,
   -22,   -23,   -19,   -23,   -23,   -19,   -23,   -20,   -19,   -23,
   -19,   -18,   -18,   -10,    -8,    -6,     1,     1,     6,    13,
    12,    18,    22,    20,    26,    25,    24,    30,    27,    27,
    31,    27,    28,    30,    25,    28,    28,    24,    26,    22,
    18,    19,    11,     7,     6,    -1,    -3,    -6,   -14,   -14,
   -18,   -24,   -23,   -26,   -27,   -23,   -26,   -24,   -20,   -24,
   -21,   -20,   -24,   -19,   -21,   -23,   -19,   -23,   -24,   -21,
   -24,   -20,   -14,   -16,   -10,    -7,    -5,     3,     6,     8,
    15,    15,    18,    23,    20,    23,    26,    23,    26,    25,
    23,    26,    24,    23,    27,    24,    27,    29,    25,    27,
    25,    19,    19,    14,     8,     6,    -1,    -5,    -7,   -15,
   -18,   -20,   -24,   -22,   -23,   -25,   -20,   -21,   -21,   -18,
   -20,   -18,   -17,   -21,   -21,   -21,   -24,   -22,   -24,   -25,
   -21,   -21,   -19,   -14,   -14,    -8,    -3,    -2,     3,     6,
     8,    13,    13,    15,    18,    16,    17,    20,    19,    22,
    22,    20,    23,    24,    25,    29,    29,    30,    32,    29,
    28,    27,    22,    19,    13,     6,     3,    -1,    -5,    -8,
   -14,   -17,   -17,   -20,   -19,   -18,   -19,   -17,   -18,   -19,
   -18,   -20,   -22,   -21,   -24,   -25,   -25,   -28,   -27,   -26,
   -26,   -23,   -22,   -21,   -17,   -14,   -10,    -3,     0,     2,
     5,     6,     9,    12,    13,    15,    16,    15,    18,    18,
    19,    23,    24,    27,    30,    31,    34,    34,    32,    32,
    31,    27,    24,    18,    13,    10,     4,     0,    -3,    -8,
   -10,   -12,   -14,   -14,   -14,   -15,   -14,   -16,   -17,   -17,
   -19,   -21,   -22,   -25,   -25,   -25,   -27,   -28,   -29,   -27,
   -24,   -23,   -20,   -18,   -16,   -12,    -8,    -4,    -1,     0,
     2,     4,     6,     8,    10,    11,    12,    13,    14,    17,
    21,    23,    25,    26,    28,    31,    32,    32,    32,    30,
    29,    27,    23,    19,    15,    11,     8,     5,     2,     0,
    -3,    -6,    -7,    -7,    -9,   -11,   -13,   -15,   -16,   -17,
   -19,   -22,   -25,   -26,   -27,   -27,   -27,   -28,   -29,   -27,
   -25,   -23,   -21,   -19,   -16,   -13,   -10,    -7,    -3,    -2,
     0,     0,     1,     3,     5,     6,     7,     9,    12,    16,
    18,    20,    23,    25,    28,    31,    32,    33,    32,    31,
    31,    28,    25,    22,    18,    16,    13,     9,     6,     2,
    -1,    -2,    -4,    -6,    -7,   -11,   -13,   -15,   -17,   -17,
   -19,   -23,   -24,   -27,   -27,   -27,   -29,   -30,   -29,   -28,
   -24,   -22,   -21,   -18,   -16,   -13,    -9,    -8,    -6,    -5,
    -6,    -4,    -2,     0,     2,     2,     4,     8,    11,    15,
    18,    19,    23,    26,    28,    32,    33,    32,    32,    30,
    29,    29,    25,    21,    18,    14,    14,    11,     7,     4,
     0,    -1,     0,    -1,    -3,    -5,    -9,   -10,   -11,   -15,
   -17,   -21,   -25,   -25,   -26,   -27,   -26,   -28,   -26,   -24,
   -23,   -20,   -18,   -17,   -14,   -12,   -11,    -9,   -10,    -9,
    -8,    -8,    -5,    -3,    -2,     0,     1,     5,    10,    13,
    16,    19,    20,    24,    28,    28,    30,    29,    27,    27,
    26,    24,    23,    19,    17,    16,    14,    13,    11,     8,
     8,     6,     4,     4,     0,    -2,    -3,    -7,    -9,   -12,
   -18,   -20,   -22,   -25,   -24,   -26,   -29,   -27,   -26,   -23,
   -20,   -21,   -19,   -17,   -17,   -13,   -12,   -13,   -11,   -13,
   -13,   -11,   -10,    -7,    -5,    -5,    -1,     2,     5,    10,
    11,    13,    18,    20,    23,    26,    25,    26,    27,    25,
    25,    24,    22,    23,    21,    19,    20,    17,    16,    15,
    11,    11,    10,     7,     6,     2,    -2,    -3,    -8,   -11,
   -13,   -19,   -20,   -21,   -24,   -24,   -25,   -26,   -22,   -22,
   -21,   -19,   -20,   -18,   -16,   -17,   -16,   -17,   -19,   -16,
   -15,   -15,   -12,   -11,   -10,    -6,    -5,     0,     4,     6,
    10,    12,    14,    19,    21,    23,    25,    24,    24,    25,
    24,    25,    24,    22,    23,    22,    20,    22,    20,    19,
    19,    15,    13,    11,     7,     5,     1,    -2,    -4,   -10,
   -14,   -15,   -18,   -19,   -20,   -24,   -23,   -22,   -21,   -18,
   -18,   -19,   -17,   -18,   -19,   -19,   -21,   -21,   -20,   -21,
   -19,   -19,   -19,   -14,   -13,   -11,    -6,    -2,
// Loop Samples:
     0,     3,
     5,     8,    13,    14,    17,    19,    19,    22,    23,    22,
    23,    23,    24,    26,    25,    25,    26,    25,    26,    26,
    22,    22,    20,    17,    15,     9,     4,     1,    -4,    -7,
   -10,   -14,   -16,   -18,   -22,   -21,   -21,   -21,   -19,   -21,
   -21,   -20,   -21,   -21,   -21,   -23,   -23,   -24,   -25,   -23,
   -24,   -23,   -21,   -20,   -16,   -12,   -10,    -5,    -1,     1,
     6,     8,    10,    15,    16,    19,    21,    21,    21,    22,
    22,    25,    27,    28,    30,    29,    29,    32,    30,    29,
    28,    23,    21,    19,    14,    10,     5,     0,    -3,    -8,
   -12,   -13,   -16,   -17,   -18,   -21,   -20,   -20,   -22,   -21,
   -22,   -23,   -22,   -25,   -26,   -25,   -26,   -24,   -24,   -25,
   -24,   -23,   -21,   -17,   -14,   -11,    -7,    -4,    -1,     3,
     4,     8,    10,    11,    14,    15,    16,    18,    18,    19,
    23,    24,    27,    28,    27,    29,    30,    30,    31,    29,
    27,    26,    22,    19,    16,    10,     6,     3,    -2,    -5,
    -8,   -12,   -13,   -16,   -18,   -17,   -19,   -19,   -19,   -21,
   -21,   -21,   -23,   -23,   -25,   -26,   -25,   -26,   -26,   -24,
   -25,   -22,   -19,   -17,   -12,    -9,    -7,    -2,     0,     1,
     6,     6,     8,    10,     9,    12,    13,    13,    15,    16,
    17,    21,    23,    25,    29,    29,    30,    31,    29,    29,
    27,    24,    24,    19,    13,     9,     3,     1,     0,    -4,
    -6,    -8,   -12,   -12,   -13,   -14,   -13,   -17,   -19,   -19,
   -20,   -20,   -21,   -24,   -24,   -24,   -26,   -24,   -24,   -24,
   -21,   -20,   -16,   -11,   -11,    -8,    -5,    -4,     0,     0,
     0,     3,     2,     2,     5,     4,     6,     8,     8,    12,
    16,    17,    22,    23,    24,    28,    27,    27,    29,    26,
    25,    25,    21,    19,    15,    10,    10,     6,     3,     3,
    -1,    -3,    -3,    -5,    -5,    -6,   -10,   -11,   -13,   -15,
   -13,   -16,   -18,   -19,   -24,   -24,   -22,   -23,   -21,   -22,
   -23,   -19,   -18,   -17,   -13,   -13,   -10,    -6,    -7,    -5,
    -4,    -5,    -2,    -1,    -1,     1,     2,     4,     9,    11,
    15,    18,    18,    22,    24,    25,    28,    27,    25,    27,
    25,    24,    24,    18,    16,    15,    12,    12,     9,     5,
     5,     2,     0,     1,    -2,    -5,    -5,   -10,    -9,   -10,
   -15,   -15,   -19,   -23,   -22,   -24,   -25,   -24,   -26,   -25,
   -21,   -21,   -18,   -17,   -18,   -14,   -13,   -12,    -8,    -9,
    -8,    -5,    -6,    -3,     0,    -1,     2,     5,     7,    12,
    12,    13,    17,    18,    21,    25,    23,    25,    26,    24,
    27,    25,    20,    21,    17,    15,    16,    12,    11,    10,
     5,     7,     6,     3,     3,     0,    -4,    -4,    -8,   -11,
   -12,   -18,   -20,   -22,   -24,   -21,   -22,   -25,   -22,   -21,
   -19,   -16,   -18,   -17,   -15,   -15,   -11,   -10,   -12,   -10,
   -10,   -11,    -8,    -8,    -7,    -3,    -3,     1,     5,     5,
     9,    12,    14,    20,    21,    22,    25,    23,    24,    27,
    25,    24,    22,    18,    19,    19,    17,    17,    14,    12,
    13,    10,     9,     7,     1,     0,    -1,    -5,    -6,   -10,
   -14,   -15,   -19,   -20,   -18,   -21,   -21,   -20,   -22,   -19,
   -18,   -19,   -17,   -18,   -18,   -14,   -15,   -15,   -14,   -15,
   -13,   -11,   -12,   -10,    -9,    -8,    -3,     0,     1,     6,
     6,    10,    15,    17,    21,    22,    20,    21,    21,    21,
    23,    20,    19,    20,    19,    20,    21,    18,    18,    17,
    15,    16,    13,    10,     8,     4,     2,     1,    -4,    -7,
   -10,   -14,   -14,   -17,   -20,   -19,   -20,   -20,   -18,   -20,
   -19,   -18,   -20,   -18,   -16,   -17,   -16,   -18,   -20,   -18,
   -18,   -16,   -14,   -14,   -12,    -8,    -5,     0,     2,     3,
     7,    10,    13,    17,    16,    16,    17,    17,    20,    21,
    20,    20,    19,    19,    22,    22,    22,    23,    21,    22,
    22,    18,    16,    12,     8,     8,     4,     0,    -4,   -10,
   -12,   -13,   -15,   -16,   -17,   -20,   -20,   -20,   -20,   -18,
   -19,   -19,   -19,   -20,   -18,   -17,   -19,   -19,   -20,   -21,
   -18,   -17,   -16,   -12,   -10,    -6,    -3,    -1,};

const uint16_t WaveTable_Increment[] PROGMEM ={
     3,     4,     4,     4,     5,     5,     5,     5,     6,     6,
     7,     7,     7,     8,     8,     9,    10,    10,    11,    11,
    12,    13,    14,    15,    15,    16,    17,    18,    20,    21,
    22,    23,    25,    26,    28,    30,    31,    33,    35,    37,
    40,    42,    45,    47,    50,    53,    56,    60,    63,    67,
    71,    75,    80,    85,    90,    95,   101,   107,   113,   120,
   127,   134,   143,   151,   160,   170,   180,   190,   202,   214,
   227,   240,   254,   269,   286,   303,   321,   340,   360,   381,
   404,   428,   454,   481,   509,   539,   572,   606,   642,   680,
   720,   763,   808,   857,   908,   962,  1019,  1079,  1144,  1212,
  1284,  1360,  1441,  1527,  1617,  1714,  1816,  1924,  2038,  2159,
  2288,  2424,  2568,  2721,  2882,  3054,  3235,  3428,  3632,  3848,
  4077,  4319,  4576,  4848,  5136,  5442,  5765,  6108,};