arduino_midi_player/Midi/music-box-arduino-master/WaveTable.c
2025-03-24 14:30:56 +08:00

286 lines
19 KiB
C

#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,};