diff --git a/src/kernel.cpp b/src/kernel.cpp index 8170972..f8d5338 100644 --- a/src/kernel.cpp +++ b/src/kernel.cpp @@ -5,6 +5,7 @@ #include #include #include +#include "voices.c" uint8_t fmpiano_sysex[156] = { 95, 29, 20, 50, 99, 95, 00, 00, 41, 00, 19, 00, 00, 03, 00, 06, 79, 00, 01, 00, 14, // OP6 eg_rate_1-4, level_1-4, kbd_lev_scl_brk_pt, kbd_lev_scl_lft_depth, kbd_lev_scl_rht_depth, kbd_lev_scl_lft_curve, kbd_lev_scl_rht_curve, kbd_rate_scaling, amp_mod_sensitivity, key_vel_sensitivity, operator_output_level, osc_mode, osc_freq_coarse, osc_freq_fine, osc_detune @@ -20,6 +21,7 @@ uint8_t fmpiano_sysex[156] = { 70, 77, 45, 80, 73, 65, 78, 79, 00, 00 // 10 * char for name ("DEFAULT ") }; // FM-Piano + LOGMODULE ("kernel"); CKernel::CKernel (void) @@ -27,7 +29,7 @@ CKernel::CKernel (void) m_I2CMaster (CMachineInfo::Get ()->GetDevice (DeviceI2CMaster), TRUE), m_pDexed (0) { - mActLED.Blink (5); // show we are alive + // mActLED.Blink (5); // show we are alive } CKernel::~CKernel(void) @@ -74,9 +76,9 @@ CStdlibApp::TShutdownMode CKernel::Run (void) { std::cout << "Hello MiniDexed!\n"; - std::cout << "Loading hardcoded fmpiano_sysex...\n"; + // m_pDexed->loadVoiceParameters(voices_banks[0][0]); m_pDexed->loadVoiceParameters(fmpiano_sysex); - m_pDexed->setTranspose(24); + m_pDexed->setTranspose(24); while(42==42) { diff --git a/src/minidexed.cpp b/src/minidexed.cpp index 272e2e3..d5147da 100644 --- a/src/minidexed.cpp +++ b/src/minidexed.cpp @@ -9,9 +9,14 @@ #define MIDI_NOTE_OFF 0b1000 #define MIDI_NOTE_ON 0b1001 +#define MIDI_AFTERTOUCH 0xA0 +#define MIDI_PROGRAM_CHANGE 0xC0 +#define MIDI_PITCH_BEND 0xE0 CMiniDexed *CMiniDexed::s_pThis = 0; +extern uint8_t voices_bank[1][32][156]; + bool CMiniDexed::Initialize (void) { if (!m_Serial.Initialize(31250)) @@ -129,6 +134,24 @@ void CMiniDexed::MIDIPacketHandler (unsigned nCable, u8 *pPacket, unsigned nLeng } #endif + if (pPacket[0] == MIDI_PROGRAM_CHANGE) + { + printf ("Loading voice %d\n", (unsigned) pPacket[1]); + s_pThis->loadVoiceParameters(voices_bank[0][(unsigned) pPacket[1]]); + // FIXME: The following 3 lines do not work yet + char* buf_name = new char[11]; + s_pThis->getName(buf_name); + printf ("%s\n", buf_name); + return; + } + + if (pPacket[0] == MIDI_PITCH_BEND) + { + s_pThis->setPitchbend((unsigned) pPacket[1]); + + return; + } + if (nLength < 3) { return; diff --git a/src/voices.c b/src/voices.c new file mode 100644 index 0000000..9b000ee --- /dev/null +++ b/src/voices.c @@ -0,0 +1,714 @@ + +// +// Decoded format for voices, 156 bytes long +// + +uint8_t voices_bank[1][32][156] = +{ + { + { // 1: BRASS 1 + 49, 99, 28, 68, 98, 98, 91, 0, + 39, 54, 50, 1, 1, 4, 0, 2, + 82, 0, 1, 0, 7, 77, 36, 41, + 71, 99, 98, 98, 0, 39, 0, 0, + 3, 3, 0, 0, 2, 98, 0, 1, + 0, 8, 77, 36, 41, 71, 99, 98, + 98, 0, 39, 0, 0, 3, 3, 0, + 0, 2, 99, 0, 1, 0, 7, 77, + 76, 82, 71, 99, 98, 98, 0, 39, + 0, 0, 3, 3, 0, 0, 2, 99, + 0, 1, 0, 5, 62, 51, 29, 71, + 82, 95, 96, 0, 27, 0, 7, 3, + 1, 0, 0, 0, 86, 0, 0, 0, + 14, 72, 76, 99, 71, 99, 88, 96, + 0, 39, 0, 14, 3, 3, 0, 0, + 0, 98, 0, 0, 0, 14, 84, 95, + 95, 60, 50, 50, 50, 50, 21, 7, + 1, 37, 0, 5, 0, 0, 4, 3, + 24, 66, 82, 65, 83, 83, 32, 32, + 32, 49, 32, 63 + }, + { // 2: BRASS 2 + 99, 39, 32, 71, 99, 98, 88, 0, + 51, 0, 0, 3, 3, 0, 0, 0, + 80, 0, 0, 0, 7, 99, 39, 32, + 71, 99, 98, 81, 0, 39, 0, 0, + 3, 3, 0, 0, 0, 99, 0, 0, + 0, 8, 99, 39, 32, 71, 99, 98, + 81, 0, 39, 0, 0, 3, 3, 0, + 0, 0, 99, 0, 0, 0, 5, 99, + 39, 32, 71, 99, 98, 81, 0, 39, + 0, 0, 3, 3, 0, 0, 0, 99, + 0, 0, 0, 4, 99, 39, 32, 71, + 99, 98, 80, 0, 51, 0, 38, 3, + 3, 0, 0, 0, 84, 0, 0, 0, + 14, 99, 39, 32, 71, 99, 98, 80, + 0, 51, 0, 38, 3, 3, 0, 0, + 0, 99, 0, 0, 0, 14, 84, 95, + 95, 60, 50, 50, 50, 50, 21, 7, + 1, 37, 0, 0, 0, 0, 4, 3, + 24, 66, 82, 65, 83, 83, 32, 32, + 32, 50, 32, 63 + }, + { // 3: BRASS 3 + 77, 56, 20, 70, 99, 0, 0, 0, + 0, 0, 0, 0, 0, 7, 0, 0, + 79, 0, 7, 21, 7, 48, 55, 22, + 50, 98, 61, 62, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 70, 0, 3, + 6, 6, 66, 92, 22, 50, 53, 61, + 62, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 79, 0, 1, 0, 7, 46, + 35, 22, 50, 99, 86, 86, 0, 0, + 0, 0, 0, 0, 1, 0, 1, 77, + 0, 1, 0, 7, 37, 34, 15, 70, + 85, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 0, 1, 70, 0, 1, 0, + 7, 55, 24, 19, 55, 99, 86, 86, + 0, 0, 0, 0, 0, 0, 2, 0, + 2, 99, 0, 1, 0, 7, 94, 67, + 95, 60, 50, 50, 50, 50, 17, 6, + 1, 35, 0, 5, 0, 0, 0, 3, + 12, 66, 82, 65, 83, 83, 32, 32, + 32, 51, 32, 63 + }, + { // 4: STRINGS 1 + 53, 19, 20, 54, 99, 92, 86, 0, + 0, 0, 0, 0, 0, 2, 0, 2, + 53, 0, 14, 0, 7, 53, 19, 20, + 54, 86, 92, 86, 0, 0, 0, 0, + 0, 0, 2, 0, 2, 84, 0, 3, + 0, 7, 96, 19, 20, 54, 99, 92, + 86, 0, 0, 0, 0, 0, 0, 2, + 0, 2, 77, 0, 1, 0, 7, 44, + 45, 20, 54, 99, 85, 82, 0, 56, + 0, 97, 0, 0, 0, 0, 7, 86, + 0, 1, 0, 7, 75, 71, 17, 49, + 82, 92, 62, 0, 54, 0, 0, 0, + 0, 1, 0, 0, 83, 0, 1, 0, + 7, 45, 24, 20, 41, 99, 85, 70, + 0, 0, 0, 0, 0, 0, 2, 0, + 3, 99, 0, 1, 0, 7, 94, 67, + 95, 60, 50, 50, 50, 50, 1, 7, + 1, 30, 0, 8, 0, 0, 0, 2, + 24, 83, 84, 82, 73, 78, 71, 83, + 32, 49, 32, 63 + }, + { // 5: STRINGS 2 + 72, 76, 10, 32, 99, 92, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 70, 0, 8, 0, 7, 76, 73, 10, + 28, 99, 92, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 66, 0, 2, + 0, 7, 49, 74, 10, 32, 98, 98, + 36, 0, 98, 0, 0, 0, 0, 0, + 0, 0, 76, 0, 2, 0, 7, 51, + 15, 10, 47, 99, 92, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 92, + 0, 2, 0, 13, 81, 13, 7, 25, + 99, 92, 28, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 74, 0, 2, 0, + 1, 48, 56, 10, 47, 98, 98, 36, + 0, 98, 0, 0, 0, 0, 0, 0, + 0, 92, 0, 2, 0, 7, 84, 95, + 95, 60, 50, 50, 50, 50, 1, 7, + 1, 30, 81, 8, 0, 0, 4, 2, + 12, 83, 84, 82, 73, 78, 71, 83, + 32, 50, 32, 63 + }, + { // 6: STRINGS 3 + 53, 64, 44, 54, 99, 92, 56, 0, + 55, 25, 0, 3, 0, 2, 0, 2, + 54, 0, 14, 0, 7, 53, 67, 38, + 54, 86, 92, 74, 0, 0, 0, 0, + 0, 0, 2, 0, 1, 84, 0, 3, + 0, 7, 96, 19, 20, 54, 99, 92, + 89, 0, 0, 0, 0, 0, 0, 2, + 0, 2, 75, 0, 1, 0, 7, 50, + 52, 35, 41, 99, 92, 91, 0, 51, + 98, 60, 3, 0, 2, 0, 1, 99, + 0, 1, 0, 7, 99, 71, 35, 51, + 82, 92, 87, 0, 54, 0, 0, 0, + 0, 1, 0, 0, 86, 0, 1, 0, + 7, 52, 30, 25, 43, 99, 92, 90, + 0, 0, 0, 0, 0, 0, 2, 0, + 1, 99, 0, 1, 0, 7, 94, 67, + 95, 60, 50, 50, 50, 50, 14, 7, + 1, 28, 46, 30, 0, 0, 4, 1, + 12, 83, 84, 82, 73, 78, 71, 83, + 32, 51, 32, 63 + }, + { // 7: ORCHESTRA + 72, 76, 10, 32, 99, 92, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 82, 0, 2, 0, 7, 76, 73, 10, + 55, 99, 92, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 80, 0, 2, + 0, 7, 56, 74, 10, 45, 98, 98, + 36, 0, 98, 0, 0, 0, 0, 0, + 0, 0, 72, 0, 2, 0, 7, 54, + 15, 10, 47, 99, 92, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 96, + 0, 2, 0, 13, 53, 46, 32, 61, + 99, 93, 90, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 83, 0, 1, 0, + 1, 80, 56, 10, 45, 98, 98, 36, + 0, 98, 0, 0, 0, 0, 0, 0, + 0, 99, 0, 1, 0, 7, 84, 95, + 95, 60, 50, 50, 50, 50, 1, 7, + 1, 30, 63, 6, 0, 0, 4, 3, + 12, 79, 82, 67, 72, 69, 83, 84, + 82, 65, 32, 63 + }, + { // 8: PIANO 1 + 99, 0, 25, 0, 99, 75, 0, 0, + 0, 0, 10, 0, 0, 5, 0, 0, + 82, 0, 1, 0, 6, 81, 58, 36, + 39, 99, 14, 0, 0, 48, 0, 66, + 0, 0, 5, 0, 1, 93, 0, 1, + 58, 6, 81, 23, 22, 45, 99, 78, + 0, 0, 0, 0, 0, 0, 0, 5, + 0, 2, 99, 0, 1, 0, 8, 81, + 25, 25, 14, 99, 99, 99, 0, 47, + 32, 74, 3, 0, 5, 0, 0, 57, + 0, 3, 0, 7, 99, 0, 25, 0, + 99, 75, 0, 0, 0, 0, 13, 0, + 0, 5, 0, 0, 87, 0, 1, 0, + 9, 81, 25, 20, 48, 99, 82, 0, + 0, 0, 85, 0, 3, 0, 4, 0, + 2, 99, 0, 1, 0, 5, 94, 67, + 95, 60, 50, 50, 50, 50, 18, 6, + 1, 35, 0, 0, 0, 0, 0, 4, + 24, 80, 73, 65, 78, 79, 32, 32, + 32, 49, 32, 63 + }, + { // 9: PIANO 2 + 92, 71, 58, 36, 99, 0, 0, 0, + 36, 0, 98, 0, 0, 3, 0, 1, + 78, 0, 0, 0, 8, 90, 71, 33, + 31, 99, 0, 0, 0, 27, 0, 26, + 2, 0, 3, 0, 1, 94, 0, 0, + 0, 7, 97, 27, 10, 25, 99, 86, + 48, 0, 0, 0, 0, 0, 0, 3, + 0, 1, 84, 0, 1, 0, 6, 90, + 27, 20, 50, 99, 85, 0, 0, 32, + 0, 27, 0, 0, 5, 0, 1, 83, + 0, 5, 0, 8, 95, 0, 25, 0, + 99, 75, 0, 0, 0, 0, 10, 0, + 0, 2, 0, 1, 86, 0, 1, 0, + 9, 80, 24, 10, 50, 99, 62, 0, + 0, 0, 0, 0, 0, 0, 3, 0, + 2, 94, 0, 1, 0, 7, 94, 67, + 95, 60, 50, 50, 50, 50, 17, 5, + 0, 30, 0, 0, 0, 0, 0, 4, + 12, 80, 73, 65, 78, 79, 32, 32, + 32, 50, 32, 63 + }, + { // 10: PIANO 3 + 80, 73, 15, 10, 99, 19, 0, 0, + 53, 0, 0, 0, 3, 3, 0, 5, + 84, 0, 0, 0, 9, 98, 20, 6, + 2, 91, 90, 0, 0, 41, 0, 27, + 3, 0, 2, 0, 1, 87, 0, 1, + 0, 5, 90, 64, 28, 45, 99, 97, + 0, 0, 46, 0, 0, 0, 0, 3, + 0, 2, 95, 0, 1, 0, 10, 94, + 80, 19, 12, 83, 67, 0, 0, 43, + 9, 20, 3, 0, 3, 0, 3, 97, + 0, 7, 0, 4, 98, 36, 6, 32, + 91, 90, 0, 0, 50, 22, 50, 3, + 0, 2, 0, 0, 85, 0, 1, 0, + 11, 90, 30, 28, 45, 99, 95, 0, + 0, 32, 0, 0, 0, 0, 3, 0, + 3, 86, 0, 1, 0, 3, 0, 0, + 0, 0, 50, 50, 50, 50, 2, 4, + 1, 45, 0, 0, 0, 0, 0, 4, + 24, 80, 73, 65, 78, 79, 32, 32, + 32, 51, 32, 63 + }, + { // 11: E.PIANO 1 + 95, 29, 20, 50, 99, 95, 0, 0, + 41, 0, 19, 0, 0, 3, 0, 6, + 79, 0, 1, 0, 14, 95, 20, 20, + 50, 99, 95, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 99, 0, 1, + 0, 0, 95, 29, 20, 50, 99, 95, + 0, 0, 0, 0, 0, 0, 0, 3, + 0, 6, 89, 0, 1, 0, 7, 95, + 20, 20, 50, 99, 95, 0, 0, 0, + 0, 0, 0, 0, 3, 0, 2, 99, + 0, 1, 0, 7, 95, 50, 35, 78, + 99, 75, 0, 0, 0, 0, 0, 0, + 0, 3, 0, 7, 58, 0, 14, 0, + 7, 96, 25, 25, 67, 99, 75, 0, + 0, 0, 0, 0, 0, 0, 3, 0, + 2, 99, 0, 1, 0, 10, 94, 67, + 95, 60, 50, 50, 50, 50, 4, 6, + 0, 34, 33, 0, 0, 0, 4, 3, + 24, 69, 46, 80, 73, 65, 78, 79, + 32, 49, 32, 63 + }, + { // 12: GUITAR 1 + 99, 57, 99, 75, 99, 0, 0, 0, + 39, 53, 20, 0, 0, 0, 3, 6, + 57, 0, 12, 0, 7, 81, 87, 22, + 75, 99, 92, 0, 0, 0, 0, 15, + 0, 0, 4, 0, 7, 99, 0, 3, + 0, 7, 81, 87, 22, 75, 99, 92, + 0, 0, 0, 0, 14, 0, 0, 4, + 0, 4, 89, 0, 3, 0, 7, 78, + 87, 22, 75, 99, 92, 0, 0, 34, + 9, 0, 0, 0, 3, 0, 7, 99, + 0, 1, 0, 7, 91, 25, 39, 60, + 99, 86, 0, 0, 0, 0, 65, 0, + 0, 2, 0, 7, 93, 0, 3, 0, + 7, 74, 85, 27, 70, 99, 95, 0, + 0, 0, 0, 0, 0, 0, 4, 0, + 5, 99, 0, 1, 0, 7, 75, 80, + 75, 60, 50, 50, 50, 50, 7, 7, + 0, 35, 0, 1, 3, 0, 4, 3, + 24, 71, 85, 73, 84, 65, 82, 32, + 32, 49, 32, 63 + }, + { // 13: GUITAR 2 + 99, 44, 1, 71, 99, 96, 75, 0, + 60, 0, 46, 3, 0, 0, 0, 2, + 73, 0, 3, 0, 7, 99, 99, 12, + 0, 99, 99, 76, 0, 60, 0, 0, + 3, 0, 0, 0, 7, 85, 0, 0, + 0, 7, 92, 99, 15, 71, 99, 96, + 75, 0, 60, 0, 0, 3, 0, 0, + 0, 0, 70, 0, 0, 0, 7, 99, + 99, 99, 71, 99, 99, 99, 0, 39, + 0, 40, 3, 0, 0, 0, 7, 99, + 0, 1, 50, 7, 99, 99, 99, 42, + 99, 99, 99, 99, 48, 0, 0, 3, + 0, 1, 0, 7, 87, 0, 1, 0, + 7, 95, 67, 99, 71, 99, 99, 99, + 0, 0, 82, 0, 3, 3, 0, 0, + 2, 86, 0, 3, 0, 7, 84, 95, + 95, 60, 50, 50, 50, 50, 15, 7, + 0, 35, 0, 0, 0, 0, 0, 4, + 24, 71, 85, 73, 84, 65, 82, 32, + 32, 50, 32, 63 + }, + { // 14: SYN-LEAD 1 + 99, 70, 60, 0, 99, 99, 97, 0, + 32, 0, 21, 0, 0, 3, 0, 0, + 47, 0, 17, 0, 7, 99, 99, 97, + 0, 99, 65, 60, 0, 32, 0, 0, + 0, 0, 1, 0, 0, 43, 0, 3, + 0, 5, 99, 92, 28, 60, 99, 90, + 0, 0, 48, 0, 60, 0, 0, 6, + 0, 0, 71, 0, 2, 0, 9, 99, + 87, 0, 0, 93, 90, 0, 0, 32, + 0, 21, 0, 0, 3, 0, 0, 82, + 0, 1, 0, 7, 99, 95, 0, 0, + 99, 96, 89, 0, 32, 0, 0, 0, + 0, 3, 0, 0, 71, 0, 1, 0, + 6, 99, 0, 12, 70, 99, 95, 95, + 0, 32, 0, 0, 0, 0, 1, 0, + 0, 99, 0, 1, 0, 8, 0, 0, + 0, 0, 50, 50, 50, 50, 17, 7, + 0, 37, 42, 0, 99, 0, 4, 4, + 36, 83, 89, 78, 45, 76, 69, 65, + 68, 32, 49, 63 + }, + { // 15: BASS 1 + 94, 56, 24, 55, 93, 28, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 7, + 85, 0, 9, 0, 7, 99, 0, 0, + 0, 99, 0, 0, 0, 52, 75, 0, + 0, 0, 7, 0, 3, 62, 0, 0, + 0, 7, 90, 42, 7, 55, 90, 30, + 0, 0, 0, 0, 0, 0, 0, 5, + 0, 5, 93, 0, 5, 0, 7, 88, + 96, 32, 30, 79, 65, 0, 0, 0, + 0, 0, 0, 0, 6, 0, 3, 99, + 0, 0, 0, 7, 99, 20, 0, 0, + 99, 0, 0, 0, 41, 0, 0, 0, + 0, 7, 0, 0, 80, 0, 0, 0, + 7, 95, 62, 17, 58, 99, 95, 32, + 0, 36, 57, 14, 3, 0, 7, 0, + 0, 99, 0, 0, 0, 7, 94, 67, + 95, 60, 50, 50, 50, 50, 15, 7, + 1, 35, 0, 0, 0, 0, 0, 3, + 12, 66, 65, 83, 83, 32, 32, 32, + 32, 49, 32, 63 + }, + { // 16: BASS 2 + 25, 50, 24, 55, 96, 97, 0, 0, + 0, 0, 0, 0, 0, 3, 0, 7, + 87, 0, 0, 0, 8, 99, 51, 0, + 0, 99, 74, 0, 0, 34, 0, 32, + 0, 0, 4, 0, 2, 75, 0, 1, + 1, 7, 80, 39, 28, 53, 93, 57, + 0, 0, 0, 0, 0, 0, 0, 3, + 0, 2, 99, 0, 0, 0, 7, 73, + 25, 32, 30, 97, 78, 0, 0, 0, + 0, 0, 0, 0, 3, 0, 3, 68, + 0, 1, 0, 14, 28, 37, 42, 50, + 99, 0, 0, 0, 41, 0, 35, 0, + 0, 1, 0, 2, 80, 0, 0, 3, + 7, 75, 37, 18, 63, 99, 70, 0, + 0, 48, 0, 32, 0, 0, 3, 0, + 2, 99, 0, 0, 1, 7, 94, 67, + 95, 60, 50, 50, 50, 50, 16, 7, + 0, 31, 33, 0, 0, 0, 4, 2, + 12, 66, 65, 83, 83, 32, 32, 32, + 32, 50, 32, 63 + }, + { // 17: E.ORGAN 1 + 99, 54, 22, 90, 99, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 94, 0, 3, 0, 7, 99, 80, 22, + 90, 99, 99, 99, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 94, 0, 1, + 0, 9, 99, 80, 22, 90, 99, 99, + 99, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 94, 0, 0, 0, 12, 99, + 80, 54, 82, 99, 99, 99, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 94, + 0, 1, 50, 11, 99, 20, 22, 90, + 99, 99, 97, 0, 0, 0, 10, 0, + 0, 0, 0, 0, 94, 0, 1, 1, + 1, 99, 80, 22, 90, 99, 99, 99, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 94, 0, 0, 0, 5, 75, 80, + 75, 60, 50, 50, 50, 50, 31, 0, + 1, 35, 0, 0, 0, 0, 0, 4, + 24, 69, 46, 79, 82, 71, 65, 78, + 32, 49, 32, 63 + }, + { // 18: PIPES 1 + 72, 25, 25, 70, 99, 99, 99, 0, + 46, 10, 1, 0, 3, 3, 0, 2, + 76, 0, 10, 0, 7, 61, 25, 25, + 61, 99, 99, 93, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 97, 0, 2, + 0, 7, 61, 25, 25, 50, 99, 99, + 97, 0, 60, 10, 10, 0, 0, 3, + 0, 0, 88, 0, 4, 0, 7, 99, + 97, 62, 47, 99, 99, 90, 0, 46, + 17, 40, 3, 0, 5, 0, 0, 75, + 0, 1, 0, 7, 99, 97, 62, 47, + 99, 99, 90, 0, 0, 0, 0, 0, + 0, 4, 0, 0, 90, 0, 0, 0, + 7, 45, 25, 25, 36, 99, 99, 98, + 0, 41, 0, 50, 0, 0, 5, 0, + 0, 99, 0, 0, 0, 7, 94, 67, + 95, 60, 50, 50, 50, 50, 18, 7, + 1, 34, 33, 0, 0, 0, 4, 2, + 12, 80, 73, 80, 69, 83, 32, 32, + 32, 49, 32, 63 + }, + { // 19: HARPSICH 1 + 95, 72, 71, 99, 99, 97, 91, 98, + 64, 0, 55, 0, 0, 1, 0, 0, + 87, 0, 6, 0, 7, 95, 28, 27, + 47, 99, 90, 0, 0, 49, 0, 0, + 0, 0, 3, 0, 3, 83, 0, 4, + 0, 6, 95, 72, 71, 99, 99, 97, + 91, 98, 64, 0, 46, 0, 0, 1, + 0, 0, 99, 0, 3, 0, 7, 95, + 28, 27, 47, 99, 90, 0, 0, 49, + 0, 0, 0, 0, 3, 0, 2, 85, + 0, 1, 0, 6, 95, 72, 71, 99, + 99, 97, 91, 98, 49, 0, 0, 0, + 0, 1, 0, 0, 99, 0, 0, 0, + 7, 95, 28, 27, 47, 99, 90, 0, + 0, 49, 0, 0, 0, 0, 3, 0, + 2, 89, 0, 4, 0, 7, 0, 0, + 0, 0, 50, 50, 50, 50, 4, 1, + 1, 35, 0, 0, 0, 0, 0, 2, + 24, 72, 65, 82, 80, 83, 73, 67, + 72, 32, 49, 63 + }, + { // 20: CLAV 1 + 98, 87, 0, 0, 87, 86, 0, 0, + 32, 0, 21, 0, 0, 3, 0, 7, + 78, 0, 8, 0, 7, 95, 95, 0, + 0, 99, 96, 89, 0, 32, 0, 0, + 0, 0, 3, 0, 6, 99, 0, 0, + 0, 5, 95, 92, 28, 60, 99, 90, + 0, 0, 32, 0, 0, 0, 0, 3, + 0, 2, 99, 0, 2, 0, 7, 98, + 87, 0, 0, 87, 86, 0, 0, 32, + 0, 21, 0, 0, 3, 0, 1, 71, + 0, 4, 50, 7, 95, 95, 0, 0, + 99, 96, 89, 0, 32, 0, 0, 0, + 0, 3, 0, 1, 99, 0, 0, 0, + 6, 95, 92, 28, 60, 99, 90, 0, + 0, 32, 0, 0, 0, 0, 3, 0, + 3, 99, 0, 0, 0, 8, 0, 0, + 0, 0, 50, 50, 50, 50, 2, 5, + 1, 30, 0, 0, 0, 0, 4, 2, + 24, 67, 76, 65, 86, 32, 32, 32, + 32, 49, 32, 63 + }, + { // 21: VIBE 1 + 99, 48, 99, 50, 99, 32, 0, 0, + 39, 12, 12, 0, 3, 5, 0, 7, + 57, 0, 14, 0, 7, 80, 85, 24, + 50, 99, 90, 42, 0, 9, 0, 0, + 1, 1, 3, 0, 5, 99, 0, 1, + 0, 14, 80, 85, 24, 50, 99, 90, + 0, 0, 9, 0, 0, 1, 1, 3, + 0, 1, 99, 0, 1, 0, 0, 80, + 85, 43, 50, 99, 74, 0, 0, 39, + 12, 12, 0, 3, 4, 0, 4, 72, + 0, 3, 0, 7, 80, 85, 24, 50, + 99, 90, 0, 0, 39, 4, 12, 0, + 3, 2, 0, 1, 99, 0, 1, 0, + 7, 99, 28, 99, 50, 99, 25, 0, + 0, 39, 12, 12, 0, 3, 2, 0, + 7, 50, 0, 4, 0, 7, 99, 98, + 75, 60, 50, 50, 50, 50, 22, 5, + 1, 26, 0, 0, 0, 1, 0, 2, + 24, 86, 73, 66, 69, 32, 32, 32, + 32, 49, 32, 63 + }, + { // 22: MARIMBA + 0, 63, 55, 0, 78, 78, 0, 0, + 41, 0, 0, 0, 0, 0, 0, 2, + 99, 0, 4, 13, 7, 99, 75, 0, + 8, 82, 48, 0, 0, 54, 0, 46, + 0, 0, 0, 0, 2, 93, 0, 0, + 50, 7, 99, 75, 0, 82, 82, 48, + 0, 0, 54, 0, 46, 0, 0, 0, + 0, 2, 85, 0, 5, 0, 7, 95, + 33, 49, 41, 99, 92, 0, 0, 0, + 0, 0, 0, 0, 3, 0, 1, 99, + 0, 0, 0, 7, 99, 72, 0, 0, + 82, 48, 0, 0, 54, 0, 46, 0, + 0, 0, 0, 2, 96, 0, 3, 0, + 7, 95, 40, 49, 55, 99, 92, 0, + 0, 0, 0, 0, 0, 0, 3, 0, + 0, 95, 0, 0, 0, 7, 94, 67, + 95, 60, 50, 50, 50, 50, 6, 0, + 1, 35, 0, 0, 0, 1, 0, 3, + 24, 77, 65, 82, 73, 77, 66, 65, + 32, 32, 32, 63 + }, + { // 23: KOTO + 82, 53, 37, 48, 99, 81, 0, 0, + 0, 0, 5, 0, 0, 6, 0, 1, + 81, 0, 3, 0, 7, 91, 37, 29, + 29, 99, 90, 0, 0, 0, 0, 5, + 0, 0, 6, 0, 1, 83, 0, 4, + 0, 7, 90, 28, 17, 39, 99, 76, + 0, 0, 10, 0, 17, 0, 1, 6, + 0, 1, 82, 0, 1, 0, 7, 94, + 64, 30, 33, 99, 92, 0, 0, 0, + 0, 0, 0, 0, 5, 0, 3, 99, + 0, 1, 0, 7, 99, 68, 28, 48, + 99, 83, 0, 0, 0, 0, 10, 0, + 0, 6, 0, 0, 99, 0, 4, 0, + 7, 94, 62, 58, 34, 99, 92, 0, + 0, 0, 0, 0, 0, 0, 6, 0, + 3, 90, 0, 1, 0, 7, 85, 99, + 75, 0, 49, 50, 50, 50, 1, 7, + 1, 30, 40, 17, 15, 1, 4, 2, + 24, 75, 79, 84, 79, 32, 32, 32, + 32, 32, 32, 63 + }, + { // 24: FLUTE 1 + 99, 64, 98, 61, 99, 67, 52, 0, + 46, 0, 0, 0, 3, 0, 0, 2, + 83, 0, 1, 53, 11, 65, 38, 0, + 61, 99, 0, 0, 0, 53, 0, 43, + 0, 0, 0, 0, 0, 56, 0, 2, + 0, 7, 61, 25, 25, 60, 99, 99, + 97, 0, 60, 10, 10, 0, 0, 3, + 0, 0, 0, 0, 2, 0, 7, 53, + 38, 75, 61, 88, 44, 24, 0, 46, + 0, 0, 3, 0, 0, 1, 0, 76, + 0, 1, 0, 4, 99, 97, 62, 54, + 99, 99, 90, 0, 0, 0, 0, 0, + 0, 4, 0, 2, 75, 0, 1, 0, + 11, 61, 67, 70, 65, 93, 89, 98, + 0, 41, 0, 0, 0, 0, 0, 0, + 2, 98, 0, 1, 0, 5, 94, 67, + 95, 60, 50, 50, 50, 50, 15, 5, + 0, 30, 23, 8, 13, 0, 0, 1, + 24, 70, 76, 85, 84, 69, 32, 32, + 32, 49, 32, 63 + }, + { // 25: ORCH-CHIME + 99, 0, 0, 0, 99, 99, 99, 0, + 15, 0, 0, 0, 1, 7, 0, 0, + 75, 0, 1, 0, 0, 41, 42, 71, + 34, 99, 99, 99, 0, 15, 0, 0, + 0, 1, 3, 0, 0, 98, 0, 1, + 0, 14, 80, 70, 9, 12, 88, 80, + 0, 0, 15, 0, 0, 0, 1, 3, + 0, 3, 91, 0, 2, 57, 7, 80, + 49, 17, 30, 99, 95, 0, 0, 15, + 0, 0, 0, 1, 3, 0, 2, 99, + 0, 0, 0, 7, 99, 0, 0, 0, + 99, 99, 99, 0, 15, 0, 0, 0, + 1, 7, 0, 0, 87, 0, 0, 0, + 12, 34, 42, 71, 34, 99, 99, 99, + 0, 15, 0, 0, 0, 1, 3, 0, + 0, 97, 0, 0, 0, 12, 99, 99, + 99, 99, 50, 50, 50, 50, 4, 7, + 1, 30, 0, 5, 0, 0, 0, 3, + 24, 79, 82, 67, 72, 45, 67, 72, + 73, 77, 69, 63 + }, + { // 26: TUB BELLS + 98, 91, 0, 28, 99, 0, 0, 0, + 0, 0, 0, 0, 0, 2, 0, 0, + 85, 0, 2, 0, 0, 76, 78, 71, + 70, 99, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 0, 5, 99, 1, 2, + 51, 7, 98, 12, 71, 28, 99, 0, + 32, 0, 0, 0, 0, 0, 0, 2, + 0, 0, 75, 0, 2, 75, 5, 95, + 33, 71, 25, 99, 0, 32, 0, 0, + 0, 0, 0, 0, 2, 0, 0, 99, + 0, 1, 0, 2, 98, 12, 71, 28, + 99, 0, 32, 0, 0, 0, 0, 0, + 0, 2, 0, 0, 78, 0, 2, 75, + 10, 95, 33, 71, 25, 99, 0, 32, + 0, 0, 0, 0, 0, 0, 2, 0, + 0, 95, 0, 1, 0, 9, 67, 95, + 95, 60, 50, 50, 50, 50, 4, 7, + 0, 35, 0, 0, 0, 0, 1, 1, + 24, 84, 85, 66, 32, 66, 69, 76, + 76, 83, 32, 63 + }, + { // 27: STEEL DRUM + 99, 49, 28, 12, 91, 82, 0, 0, + 0, 0, 0, 0, 0, 3, 0, 0, + 49, 1, 2, 60, 7, 99, 40, 38, + 0, 91, 82, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 64, 0, 4, + 33, 7, 99, 44, 50, 21, 91, 82, + 0, 0, 0, 0, 0, 0, 0, 3, + 0, 1, 88, 0, 2, 0, 14, 99, + 30, 35, 42, 99, 92, 0, 0, 0, + 0, 0, 0, 0, 3, 0, 3, 99, + 0, 1, 0, 7, 99, 19, 20, 9, + 99, 87, 0, 0, 57, 0, 71, 2, + 0, 2, 0, 2, 64, 0, 1, 70, + 7, 99, 40, 33, 38, 99, 92, 0, + 0, 0, 0, 0, 0, 0, 4, 0, + 0, 99, 0, 1, 0, 7, 50, 50, + 50, 50, 50, 50, 50, 50, 14, 5, + 1, 25, 0, 10, 99, 0, 4, 2, + 24, 83, 84, 69, 69, 76, 32, 68, + 82, 85, 77, 63 + }, + { // 28: TIMPANI + 98, 2, 26, 27, 98, 0, 0, 0, + 3, 0, 0, 0, 2, 3, 0, 1, + 73, 0, 0, 56, 7, 99, 50, 26, + 19, 99, 0, 0, 0, 80, 0, 0, + 3, 1, 0, 0, 1, 73, 0, 0, + 0, 7, 99, 31, 17, 30, 99, 75, + 0, 0, 80, 0, 0, 3, 1, 7, + 0, 7, 87, 0, 0, 75, 7, 99, + 77, 26, 23, 99, 72, 0, 0, 0, + 0, 0, 0, 1, 3, 0, 0, 85, + 0, 0, 36, 4, 99, 74, 0, 0, + 99, 0, 0, 0, 41, 0, 0, 0, + 1, 1, 0, 1, 86, 0, 0, 0, + 10, 99, 36, 98, 33, 99, 0, 0, + 0, 0, 0, 0, 0, 3, 3, 0, + 1, 99, 0, 0, 0, 7, 99, 98, + 75, 60, 50, 51, 50, 50, 15, 7, + 1, 11, 0, 16, 0, 0, 0, 2, + 24, 84, 73, 77, 80, 65, 78, 73, + 32, 32, 32, 63 + }, + { // 29: REFS WHISL + 94, 56, 24, 55, 96, 78, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0, + 78, 1, 5, 0, 7, 99, 0, 0, + 0, 99, 0, 0, 0, 41, 0, 0, + 0, 0, 0, 0, 0, 64, 1, 4, + 0, 7, 94, 68, 24, 55, 96, 89, + 0, 0, 0, 0, 0, 0, 0, 1, + 0, 0, 75, 1, 7, 82, 7, 60, + 39, 8, 0, 99, 99, 99, 0, 0, + 0, 0, 0, 0, 4, 0, 0, 66, + 1, 1, 67, 7, 60, 39, 28, 45, + 99, 99, 99, 0, 0, 0, 0, 0, + 0, 4, 0, 0, 93, 1, 9, 53, + 7, 60, 39, 28, 49, 99, 99, 99, + 0, 0, 0, 0, 0, 0, 4, 0, + 1, 90, 1, 3, 32, 7, 38, 67, + 95, 60, 39, 50, 50, 50, 17, 2, + 1, 99, 0, 0, 0, 1, 5, 6, + 24, 82, 69, 70, 83, 32, 87, 72, + 73, 83, 76, 63 + }, + { // 30: VOICE 1 + 99, 72, 48, 17, 99, 99, 99, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 55, 0, 5, 2, 8, 35, 21, 36, + 63, 99, 90, 85, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 53, 0, 1, + 1, 6, 72, 19, 41, 12, 48, 58, + 20, 9, 0, 0, 0, 0, 0, 0, + 0, 1, 99, 0, 1, 2, 10, 33, + 20, 53, 39, 99, 94, 97, 0, 0, + 0, 0, 0, 0, 0, 0, 3, 99, + 0, 1, 0, 14, 19, 26, 53, 25, + 51, 61, 76, 51, 0, 0, 0, 0, + 0, 0, 2, 2, 99, 0, 1, 0, + 7, 34, 20, 53, 57, 99, 94, 97, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 87, 0, 1, 0, 0, 18, 60, + 95, 60, 48, 51, 50, 50, 6, 7, + 1, 35, 35, 11, 2, 0, 0, 4, + 24, 86, 79, 73, 67, 69, 32, 32, + 32, 49, 32, 63 + }, + { // 31: TRAIN + 49, 17, 25, 53, 99, 99, 99, 98, + 36, 0, 0, 3, 0, 0, 0, 0, + 99, 0, 5, 0, 7, 42, 17, 25, + 53, 99, 99, 99, 99, 36, 0, 0, + 3, 0, 0, 3, 0, 83, 0, 9, + 0, 10, 98, 29, 28, 27, 99, 0, + 0, 0, 20, 0, 0, 1, 1, 0, + 0, 0, 89, 1, 10, 99, 5, 98, + 29, 28, 33, 99, 0, 0, 0, 99, + 98, 0, 1, 1, 0, 0, 0, 99, + 1, 22, 57, 9, 39, 13, 12, 72, + 99, 61, 66, 0, 52, 0, 0, 3, + 0, 5, 0, 0, 72, 0, 3, 1, + 7, 65, 24, 19, 57, 99, 85, 85, + 0, 39, 0, 98, 3, 0, 3, 0, + 0, 99, 0, 1, 64, 7, 75, 67, + 95, 60, 50, 50, 50, 50, 4, 7, + 1, 39, 0, 0, 99, 0, 0, 0, + 24, 84, 82, 65, 73, 78, 32, 32, + 32, 32, 32, 63 + }, + { // 32: TAKE OFF + 89, 22, 20, 41, 99, 92, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 99, 0, 0, 0, 7, 88, 24, 23, + 37, 99, 90, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 96, 0, 2, + 1, 7, 13, 14, 20, 30, 99, 95, + 99, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 99, 0, 0, 0, 7, 76, + 35, 99, 11, 67, 38, 73, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 99, + 0, 6, 1, 7, 82, 80, 19, 14, + 80, 95, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 96, 0, 1, 0, + 7, 9, 14, 17, 34, 61, 96, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 99, 0, 4, 1, 7, 32, 30, + 94, 16, 50, 7, 81, 99, 9, 0, + 1, 65, 0, 0, 0, 1, 2, 5, + 0, 84, 65, 75, 69, 32, 79, 70, + 70, 32, 32, 63 + } + } +};