diff --git a/README.md b/README.md
index c189592..b6385ea 100644
--- a/README.md
+++ b/README.md
@@ -51,11 +51,11 @@ Then initialize the player and use as in following example:
```c++
player.begin();
+player.switchToMp3Mode();
if (player.getChipVersion() == 4) { // Only perform an update if we really are using a VS1053, not. eg. VS1003
player.loadDefaultVs1053Patches();
}
player.setVolume(VOLUME);
-player.switchToMp3Mode();
player.playChunk(sampleMp3, sizeof(sampleMp3));
```
diff --git a/examples/MidiDemo/MidiDemo.ino b/examples/MidiDemo/MidiDemo.ino
new file mode 100644
index 0000000..03da9e7
--- /dev/null
+++ b/examples/MidiDemo/MidiDemo.ino
@@ -0,0 +1,201 @@
+/**
+ A simple example to use ESP_VS1053_Library for MIDI
+ https://github.com/baldram/ESP_VS1053_Library
+
+ Copyright (C) 2021 M. Hund (github.com/Dr-Dawg)
+
+ Licensed under GNU GPLv3
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License or later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see .
+
+
+ Wiring:
+ --------------------------------
+ | VS1053 | ESP8266 | ESP32 |
+ --------------------------------
+ | SCK | D5 | IO18 |
+ | MISO | D6 | IO19 |
+ | MOSI | D7 | IO23 |
+ | XRST | RST | EN |
+ | CS | D1 | IO5 |
+ | DCS | D0 | IO16 |
+ | DREQ | D3 | IO4 |
+ | 5V | 5V | 5V |
+ | GND | GND | GND |
+ --------------------------------
+
+ Note: It's just an example, you may use a different pins definition.
+
+
+ To run this example define the platformio.ini as below.
+
+ [env:nodemcuv2]
+ platform = espressif8266
+ board = nodemcuv2
+ framework = arduino
+ lib_deps =
+ ESP_VS1053_Library
+
+ [env:esp32dev]
+ platform = espressif32
+ board = esp32dev
+ framework = arduino
+ lib_deps =
+ ESP_VS1053_Library
+
+*/
+
+// This ESP_VS1053_Library
+#include
+
+#include "patches/rtmidi1003b.h"
+#include "patches/rtmidi1053b.h"
+
+// Wiring of VS1053 board (SPI connected in a standard way)
+#ifdef ARDUINO_ARCH_ESP8266
+#define VS1053_CS D1
+#define VS1053_DCS D0
+#define VS1053_DREQ D3
+#endif
+
+#ifdef ARDUINO_ARCH_ESP32
+#define VS1053_CS 5
+#define VS1053_DCS 16
+#define VS1053_DREQ 4
+#endif
+
+#define VOLUME 100 // volume level 0-100
+
+VS1053 player(VS1053_CS, VS1053_DCS, VS1053_DREQ);
+
+// noteOn and noteOff based on MP3_Shield_RealtimeMIDI demo
+// by Matthias Neeracher, Nathan Seidle's Sparkfun Electronics example respectively
+
+//Send a MIDI note-on message. Like pressing a piano key
+void noteOn(uint8_t channel, uint8_t note, uint8_t attack_velocity) {
+ player.sendMidiMessage( (0x90 | channel), note, attack_velocity);
+}
+
+//Send a MIDI note-off message. Like releasing a piano key
+void noteOff(uint8_t channel, uint8_t note, uint8_t release_velocity) {
+ player.sendMidiMessage( (0x80 | channel), note, release_velocity);
+}
+
+void setup() {
+
+ Serial.begin(115200);
+
+ // initialize SPI
+ SPI.begin();
+
+ // initialize the player
+ player.begin();
+
+ if(player.getChipVersion() == 4)
+ Serial.println("Hello VS1053!");
+ else if(player.getChipVersion()==3)
+ Serial.println("Hello VS1003!");
+ else
+ Serial.println("Please check whether your device is properly connected!");
+
+
+ if(player.getChipVersion()==4 /*4*/) { // MIDI using a VS1053 chip
+ player.loadUserCode(MIDI1053, MIDI1053_SIZE);
+ player.writeRegister(0xA /*SCI_AIADDR*/, 0x50); // setting VS1053 Start adress for user code
+ Serial.println(" MIDI plugin VS1053 loaded");
+ }
+
+ if(player.getChipVersion()==3) { // MIDI using a VS1003 chip
+ player.loadUserCode(MIDI1003, MIDI1003_SIZE);
+ player.writeRegister(0xA /*SCI_AIADDR*/, 0x30); // setting VS1003 Start adress for user code
+ Serial.println(" MIDI plugin VS1003 loaded");
+ }
+
+ player.setVolume(VOLUME);
+
+}
+
+void loop() {
+
+ uint8_t channel = (uint8_t) random(16);
+ //channel = 9; //uncomment this, if you just want to hear percussion
+ uint8_t instrument = (uint8_t) random(128);
+ uint8_t note = (uint8_t) random(128);
+ uint8_t attack_velocity = (uint8_t) random(128);
+ uint8_t release_velocity = (uint8_t) random(128);
+ unsigned long duration = (unsigned long) (300 + random(2000));
+
+
+/** MIDI messages, 0x80 to 0xEF Channel Messages, 0xF0 to 0xFF System Messages
+ * a MIDI message ranges from 1 byte to three bytes
+ * the first byte consists of 4 command bits and 4 channel bits, i.e. 16 channels
+ *
+ * 0x80 Note Off
+ * 0x90 Note On
+ * 0xA0 Aftertouch
+ * 0xB0 Continuous controller
+ * 0xC0 Patch change
+ * 0xD0 Channel Pressure
+ * 0xE0 Pitch bend
+ * 0xF0 (non-musical commands)
+ */
+
+/** 0xB0 Continuous controller commands, 0-127
+ * 0 Bank Select (MSB)
+ * 1 Modulation Wheel
+ * 2 Breath controller
+ * 3 Undefined
+ * 4 Foot Pedal (MSB)
+ * 5 Portamento Time (MSB)
+ * 6 Data Entry (MSB)
+ * 7 Volume (MSB)
+ * 8 Balance (MSB)
+ * 9 Undefined
+ * 10 Pan position (MSB)
+ * 11 Expression (MSB)
+ * ...
+ */
+
+ // Continuous controller, set channel volume to high, i.e. 127
+ player.sendMidiMessage(0xB0| channel, 0x07, 127);
+
+ // Continuous controller 0, bank select: 0 gives you the default bank depending on the channel
+ // 0x78 (percussion) for Channel 10, i.e. channel = 9 , 0x79 (melodic) for other channels
+ player.sendMidiMessage(0xB0| channel, 0, 0x00); //0x00 default bank
+
+ // Patch change, select instrument
+ player.sendMidiMessage(0xC0| channel, instrument, 0);
+
+// Serial output for the actual parameters
+ Serial.print("Channel: ");
+ Serial.println(channel, DEC);
+ Serial.print("Instrument: ");
+ Serial.println(instrument, DEC);
+ Serial.print("Note: ");
+ Serial.println(note, DEC);
+ Serial.print("Attack: ");
+ Serial.println(attack_velocity, DEC);
+ Serial.print("Release: ");
+ Serial.println(release_velocity, DEC);
+ Serial.print("Duration: ");
+ Serial.print(duration, DEC);
+ Serial.println(" milliseconds: ");
+ Serial.println("--------------------------------------");
+
+ //playing one (pseudo-)random note
+ noteOn(channel, note, attack_velocity);
+ delay(duration);
+ noteOff(channel, note, release_velocity);
+ delay(100);
+
+}
diff --git a/examples/MidiDemo/patches/rtmidi1003b.h b/examples/MidiDemo/patches/rtmidi1003b.h
new file mode 100644
index 0000000..0afcc5d
--- /dev/null
+++ b/examples/MidiDemo/patches/rtmidi1003b.h
@@ -0,0 +1,89 @@
+#ifndef SKIP_PLUGIN_VARNAME
+const unsigned short MIDI1003[] = { /* Compressed plugin */
+#endif
+ 0x0007,0x0001, /*copy 1*/
+ 0x8030,
+ 0x0006,0x01ee, /*copy 494*/
+ 0x2800,0x38c0,0x0006,0x2016,0x3613,0x0024,0x0006,0x0057,
+ 0x3e15,0x1c15,0x0020,0x1fd4,0x3580,0x3802,0xf204,0x3804,
+ 0x0fff,0xfe44,0xa244,0x1804,0xf400,0x4094,0x2800,0x0f85,
+ 0x3009,0x1bc2,0xf400,0x4500,0x2000,0x0000,0x36f5,0x3c15,
+ 0x3009,0x3857,0x0030,0x0a57,0x3e14,0xf806,0x3701,0x8024,
+ 0x0006,0x0017,0x3e04,0x9c13,0x0020,0x1fd2,0x3b81,0x8024,
+ 0x36f4,0xbc13,0x36f4,0xd806,0x0030,0x0717,0x2100,0x0000,
+ 0x3f05,0xdbd7,0x3613,0x0024,0x3e22,0xb815,0x3e05,0xb814,
+ 0x3615,0x0024,0x3405,0x9014,0x36e3,0x0024,0x2000,0x0000,
+ 0x36f2,0x9815,0x3613,0x0024,0x3e22,0xb815,0x3e05,0xb814,
+ 0x3615,0x0024,0x3405,0x9014,0x36e3,0x0024,0x2000,0x0000,
+ 0x36f2,0x9815,0x3613,0x0024,0x3e12,0xb817,0x3e12,0x3815,
+ 0x3e05,0xb814,0x3615,0x0024,0x0000,0x800a,0x3e10,0x3801,
+ 0x3e10,0xb804,0x3e01,0x7810,0x0030,0x00d0,0x2900,0x0400,
+ 0x3001,0x0024,0x4080,0x03cc,0x3000,0x0024,0x2800,0x36c5,
+ 0x4090,0x0024,0x0000,0x0024,0x2800,0x2485,0x0000,0x0024,
+ 0x0000,0x0081,0x3000,0x0024,0x6012,0x0024,0x0000,0x0401,
+ 0x2800,0x3305,0x0000,0x0024,0x6012,0x0024,0x0000,0x0024,
+ 0x2800,0x2885,0x0000,0x0024,0x2900,0x0c80,0x0000,0x0024,
+ 0x4088,0x008c,0x0000,0x2000,0x6400,0x0024,0x0000,0x3c00,
+ 0x2800,0x2118,0x0000,0x0024,0x2800,0x2540,0x3801,0x0024,
+ 0x6400,0x038c,0x0000,0x0024,0x2800,0x2558,0x0000,0x0024,
+ 0x3013,0x0024,0x2900,0x0400,0x3801,0x0024,0x4080,0x0024,
+ 0x0000,0x0024,0x2800,0x2495,0x0000,0x0024,0x6890,0x03cc,
+ 0x2800,0x36c0,0x3800,0x0024,0x2900,0x0c80,0x0030,0x0110,
+ 0x3800,0x0024,0x0000,0x3c00,0x6400,0x0024,0x003f,0xff00,
+ 0x2800,0x2d48,0x0000,0x0024,0x0000,0x3fc0,0x6400,0x0024,
+ 0x0000,0x3c00,0x2800,0x3605,0x6400,0x0024,0x0000,0x0024,
+ 0x2800,0x3615,0x0000,0x0024,0xb880,0x184c,0x2900,0x0400,
+ 0x3009,0x3800,0x4082,0x9bc0,0x6014,0x0024,0x0000,0x3c04,
+ 0x2800,0x2b81,0x0000,0x3dc1,0x2900,0x0c80,0x0000,0x0024,
+ 0xf400,0x4004,0x0000,0x3dc1,0x6412,0x0024,0x0030,0x0090,
+ 0x2800,0x2cc5,0x0000,0x0000,0x0000,0x0400,0x2800,0x36c0,
+ 0x3800,0x0024,0x0030,0x00d0,0x3001,0x4024,0xa50a,0x0024,
+ 0x0000,0x03c0,0xb50a,0x0024,0x0000,0x0300,0x6500,0x0024,
+ 0x0000,0x0024,0x2900,0x0408,0x0000,0x3188,0x0000,0x0380,
+ 0x6500,0x0024,0x0000,0x0024,0x2800,0x33d5,0x0000,0x0024,
+ 0x2900,0x0400,0x0000,0x0024,0x4080,0x03cc,0x0000,0x0080,
+ 0x2800,0x3315,0x0000,0x0024,0x2800,0x36c0,0x3800,0x0024,
+ 0x2900,0x0c80,0x0000,0x0024,0x408a,0x0024,0x0030,0x0110,
+ 0x3613,0x0024,0x3e11,0x4024,0x30f0,0x0024,0x3e10,0x0024,
+ 0x3000,0x4024,0x2926,0xa140,0x3e00,0x4024,0x36d3,0x0024,
+ 0x0000,0x0000,0x0030,0x0090,0x3800,0x0024,0x36f1,0x5810,
+ 0x36f0,0x9804,0x36f0,0x1801,0x3405,0x9014,0x36f3,0x0024,
+ 0x36f2,0x1815,0x2000,0x0000,0x36f2,0x9817,0x002b,0x1105,
+ 0x0030,0x00d2,0x0030,0x0690,0x0030,0x0291,0x0000,0x0084,
+ 0x0006,0x6853,0x3e05,0xb814,0x3635,0x0024,0x0000,0x800a,
+ 0xb880,0x0024,0x3800,0x0024,0x3910,0x0024,0x0000,0xc0c0,
+ 0x3900,0x0024,0x0006,0x0051,0x0030,0x0000,0x2910,0x3740,
+ 0x3a00,0x0024,0xb880,0x010c,0x38e0,0x184c,0x3800,0x0024,
+ 0x3800,0x0024,0x0000,0x0f00,0x0006,0x0010,0x3009,0x2c00,
+ 0x0003,0x1e40,0x3009,0x2410,0x0006,0x0011,0x3009,0x2410,
+ 0x0030,0x0ad0,0x3800,0x0024,0x0000,0x09c0,0x0030,0x0690,
+ 0x2910,0x7780,0x3800,0x0024,0x0001,0x0010,0xb882,0x0024,
+ 0x291d,0x5800,0x0002,0xdc00,0x001f,0xff00,0x0003,0xda90,
+ 0x2926,0x1440,0x3800,0x0024,0x2926,0x0e40,0x0030,0x0490,
+ 0x6890,0x0024,0x3800,0x0024,0x2900,0x1740,0x0000,0x8001,
+ 0x2919,0x8180,0x3613,0x0024,0x6012,0x0024,0x0003,0xd950,
+ 0x2800,0x4498,0x0000,0x0024,0x2919,0x8180,0x3613,0x104c,
+ 0x2928,0xce40,0x3c00,0x0024,0x0000,0x1000,0x2900,0x0a80,
+ 0x34f1,0x0024,0xb882,0x0042,0x30f0,0xc024,0x4dc2,0x0024,
+ 0x3810,0x0024,0x2800,0x4480,0x38f0,0x4024,
+ 0x0007,0x0001, /*copy 1*/
+ 0x5800,
+ 0x0006, 0x8002, 0x1800, /*Rle(2)*/
+ 0x0007,0x0001, /*copy 1*/
+ 0x8010,
+ 0x0006,0x0016, /*copy 22*/
+ 0xf400,0x4095,0x0006,0x0017,0x3009,0x1c40,0x3009,0x1fc2,
+ 0x6020,0x0024,0x0000,0x1fc2,0x2000,0x0000,0xb020,0x4542,
+ 0x3009,0x3857,0x2800,0x1080,0x0030,0x0457,
+ 0x0007,0x0001, /*copy 1*/
+ 0x8025,
+ 0x0006,0x0002, /*copy 2*/
+ 0x2a00,0x100e,
+ 0x0007,0x0001, /*copy 1*/
+ 0x8022,
+ 0x0006,0x0002, /*copy 2*/
+ 0x2a00,0x060e,
+#define MIDI1003_SIZE 546
+#ifndef SKIP_PLUGIN_VARNAME
+};
+#endif
diff --git a/examples/MidiDemo/patches/rtmidi1053b.h b/examples/MidiDemo/patches/rtmidi1053b.h
new file mode 100644
index 0000000..8f19eda
--- /dev/null
+++ b/examples/MidiDemo/patches/rtmidi1053b.h
@@ -0,0 +1,148 @@
+#ifndef SKIP_PLUGIN_VARNAME
+const unsigned short MIDI1053[] = { /* Compressed plugin */
+#endif
+ 0x0007,0x0001, /*copy 1*/
+ 0x8050,
+ 0x0006,0x03f0, /*copy 1008*/
+ 0x2800,0x8080,0x0006,0x2016,0xf400,0x4095,0x0006,0x0017,
+ 0x3009,0x1c40,0x3009,0x1fc2,0x6020,0x0024,0x0000,0x1fc2,
+ 0x2000,0x0000,0xb020,0x4542,0x3613,0x0024,0x0006,0x0057,
+ 0x3e15,0x1c15,0x0020,0x1fd4,0x3580,0x3802,0xf204,0x3804,
+ 0x0fff,0xfe44,0xa244,0x1804,0xf400,0x4094,0x2800,0x1985,
+ 0x3009,0x1bc2,0xf400,0x4500,0x2000,0x0000,0x36f5,0x3c15,
+ 0x3009,0x3857,0x2800,0x1b40,0x0030,0x0457,0x3009,0x3857,
+ 0x0030,0x0a57,0x3e14,0xf806,0x3701,0x8024,0x0006,0x0017,
+ 0x3e04,0x9c13,0x0020,0x1fd2,0x3b81,0x8024,0x36f4,0xbc13,
+ 0x36f4,0xd806,0x0030,0x0717,0x2100,0x0000,0x3f05,0xdbd7,
+ 0x0030,0xf80f,0x0000,0x1f0e,0x2800,0x7680,0x0000,0x004d,
+ 0xf400,0x4595,0x3e00,0x17cc,0x3505,0xf802,0x3773,0x0024,
+ 0x3763,0x0024,0x3700,0x0024,0x0000,0x09c2,0x6024,0x0024,
+ 0x3600,0x1802,0x2830,0xf855,0x0000,0x004d,0x2800,0x2240,
+ 0x36f3,0x0024,0x3613,0x0024,0x3e12,0xb817,0x3e12,0x3815,
+ 0x3e05,0xb814,0x3625,0x0024,0x0000,0x800a,0x3e10,0x3801,
+ 0x3e10,0xb803,0x3e11,0x3810,0x3e04,0x7812,0x34c3,0x0024,
+ 0x3440,0x0024,0x4080,0x0024,0x001b,0x3301,0x2800,0x2c85,
+ 0x0000,0x0180,0x0000,0x0551,0x0000,0xaf02,0x293c,0x1f40,
+ 0x0007,0xffc1,0xb010,0x134c,0x0018,0x0001,0x4010,0x10d0,
+ 0x0007,0xffc1,0xfe20,0x020c,0x0000,0x0591,0x48b6,0x0024,
+ 0x4dd6,0x0024,0x0001,0x2202,0x293c,0x1f40,0x4380,0x2003,
+ 0xb010,0x134c,0x0018,0x0001,0x4010,0x1010,0xfe20,0x020c,
+ 0x48b6,0x844c,0x4dd6,0x0024,0xb880,0x2003,0x3434,0x0024,
+ 0x2800,0x5280,0x3083,0x0024,0x001c,0xccc2,0x0000,0x05d1,
+ 0x34d3,0x0024,0x3404,0x0024,0x3404,0x420c,0x3001,0x05cc,
+ 0xa408,0x044c,0x3100,0x0024,0x6010,0x0024,0xfe20,0x0024,
+ 0x48b6,0x0024,0x4dd6,0x0024,0x4310,0x0024,0x4488,0x2400,
+ 0x0000,0x0551,0x2800,0x3295,0x3404,0x0024,0xf290,0x00cc,
+ 0x3800,0x0024,0x3434,0x0024,0x3073,0x0024,0x3013,0x0024,
+ 0x2800,0x4340,0x3800,0x0024,0x3083,0x0024,0x3000,0x0024,
+ 0x6402,0x0024,0x0000,0x1001,0x2800,0x3618,0x0018,0x0002,
+ 0x3434,0x4024,0x3133,0x0024,0x3100,0x0024,0xfe20,0x0024,
+ 0x48b6,0x0024,0x4dd6,0x0024,0x2800,0x4340,0x3900,0xc024,
+ 0x4010,0x1011,0x6402,0x0024,0x0000,0x0590,0x2800,0x3918,
+ 0x0000,0x0024,0xf290,0x04cc,0x3900,0x0024,0x3434,0x0024,
+ 0x3073,0x0024,0x3013,0x0024,0x2800,0x4340,0x3800,0x0024,
+ 0x3183,0x0024,0x3100,0x0024,0x6402,0x0024,0x0000,0x1001,
+ 0x2800,0x3c98,0x0019,0x9982,0x3434,0x0024,0x3033,0x0024,
+ 0x3000,0x0024,0xfe20,0x0024,0x48b6,0x0024,0x4dd6,0x0024,
+ 0x2800,0x4340,0x3800,0xc024,0x4010,0x0024,0x6402,0x0024,
+ 0x001d,0x7082,0x2800,0x4198,0x0000,0x0024,0xf290,0x1010,
+ 0x3033,0x0024,0x3800,0x0024,0x3404,0x0024,0x3073,0x0024,
+ 0x3013,0x0024,0x3800,0x0024,0x0004,0x4d50,0x3010,0x0024,
+ 0x30f0,0x4024,0x3434,0x4024,0x3143,0x0024,0x3910,0x0024,
+ 0x2800,0x4340,0x39f0,0x4024,0x3434,0x0024,0x3033,0x0024,
+ 0x3000,0x0024,0xfe20,0x0024,0x48b6,0x0024,0x4dd6,0x0024,
+ 0x3800,0xc024,0x001e,0x9982,0x0001,0x1012,0x0000,0x0381,
+ 0x34d3,0x184c,0x3444,0x0024,0x3073,0x0024,0x3013,0x0024,
+ 0x3000,0x0024,0xfe20,0x0024,0x48b6,0x0024,0x4dd6,0x0024,
+ 0x4380,0x3003,0x3400,0x0024,0x293d,0x2900,0x3e00,0x0024,
+ 0x3009,0x33c0,0x293b,0xc540,0x0010,0x0004,0x34d3,0x184c,
+ 0x3444,0x0024,0x3073,0x13c0,0x3073,0x0024,0x293b,0xf880,
+ 0x0001,0x1011,0x0001,0x0010,0x0001,0x1011,0x34d3,0x184c,
+ 0x3430,0x0024,0x4010,0x0024,0x0000,0x05c1,0x3e10,0x0024,
+ 0x293b,0xac80,0x0006,0x0092,0x0000,0x05d1,0x36f3,0x134c,
+ 0x3404,0x0024,0x3083,0x0024,0x3000,0x0024,0x6012,0x0024,
+ 0x0013,0x3304,0x2800,0x5198,0x0001,0xc682,0x0000,0x0500,
+ 0x0001,0x0012,0x3404,0x584c,0x3133,0x0024,0x3100,0x4024,
+ 0x0000,0x05d1,0xfe22,0x0024,0x48b6,0x0024,0x4dd6,0x0024,
+ 0x3e10,0xc024,0x3430,0x8024,0x4204,0x0024,0x293b,0xb580,
+ 0x3e00,0x8024,0x36e3,0x134c,0x3434,0x0024,0x3083,0x0024,
+ 0x3000,0x0024,0x6090,0x0024,0x3800,0x1812,0x36f4,0x4024,
+ 0x36f1,0x1810,0x36f0,0x9803,0x36f0,0x1801,0x3405,0x9014,
+ 0x36f3,0x0024,0x36f2,0x1815,0x2000,0x0000,0x36f2,0x9817,
+ 0x3613,0x0024,0x3e12,0xb817,0x3e12,0x3815,0x3e05,0xb814,
+ 0x3615,0x0024,0x0000,0x800a,0x3e10,0x3801,0x3e10,0xb804,
+ 0x3e01,0x7810,0x0008,0x04d0,0x2900,0x1480,0x3001,0x0024,
+ 0x4080,0x03cc,0x3000,0x0024,0x2800,0x7485,0x4090,0x0024,
+ 0x0000,0x0024,0x2800,0x6245,0x0000,0x0024,0x0000,0x0081,
+ 0x3000,0x0024,0x6012,0x0024,0x0000,0x0401,0x2800,0x70c5,
+ 0x0000,0x0024,0x6012,0x0024,0x0000,0x0024,0x2800,0x6645,
+ 0x0000,0x0024,0x2900,0x1680,0x0000,0x0024,0x4088,0x008c,
+ 0x0000,0x2000,0x6400,0x0024,0x0000,0x3c00,0x2800,0x5ed8,
+ 0x0000,0x0024,0x2800,0x6300,0x3801,0x0024,0x6400,0x038c,
+ 0x0000,0x0024,0x2800,0x6318,0x0000,0x0024,0x3013,0x0024,
+ 0x2900,0x1480,0x3801,0x0024,0x4080,0x0024,0x0000,0x0024,
+ 0x2800,0x6255,0x0000,0x0024,0x6890,0x03cc,0x2800,0x7480,
+ 0x3800,0x0024,0x2900,0x1680,0x0008,0x0510,0x3800,0x0024,
+ 0x0000,0x3c00,0x6400,0x0024,0x003f,0xff00,0x2800,0x6b08,
+ 0x0000,0x0024,0x0000,0x3fc0,0x6400,0x0024,0x0000,0x3c00,
+ 0x2800,0x73c5,0x6400,0x0024,0x0000,0x0024,0x2800,0x73d5,
+ 0x0000,0x0024,0xb880,0x184c,0x2900,0x1480,0x3009,0x3800,
+ 0x4082,0x9bc0,0x6014,0x0024,0x0000,0x3c04,0x2800,0x6941,
+ 0x0000,0x3dc1,0x2900,0x1680,0x0000,0x0024,0xf400,0x4004,
+ 0x0000,0x3dc1,0x6412,0x0024,0x0008,0x0490,0x2800,0x6a85,
+ 0x0000,0x0000,0x0000,0x0400,0x2800,0x7480,0x3800,0x0024,
+ 0x0008,0x04d0,0x3001,0x4024,0xa50a,0x0024,0x0000,0x03c0,
+ 0xb50a,0x0024,0x0000,0x0300,0x6500,0x0024,0x0000,0x0024,
+ 0x2900,0x1488,0x0000,0x6f48,0x0000,0x0380,0x6500,0x0024,
+ 0x0000,0x0024,0x2800,0x7195,0x0000,0x0024,0x2900,0x1480,
+ 0x0000,0x0024,0x4080,0x03cc,0x0000,0x0080,0x2800,0x70d5,
+ 0x0000,0x0024,0x2800,0x7480,0x3800,0x0024,0x2900,0x1680,
+ 0x0000,0x0024,0x408a,0x0024,0x0008,0x0510,0x3613,0x0024,
+ 0x3e11,0x4024,0x30f0,0x0024,0x3e10,0x0024,0x3000,0x4024,
+ 0x2931,0xe080,0x3e00,0x4024,0x36d3,0x0024,0x0000,0x0000,
+ 0x0008,0x0490,0x3800,0x0024,0x36f1,0x5810,0x36f0,0x9804,
+ 0x36f0,0x1801,0x3405,0x9014,0x36f3,0x0024,0x36f2,0x1815,
+ 0x2000,0x0000,0x36f2,0x9817,0x0005,0xbe51,0x0001,0x0010,
+ 0x3613,0x0024,0x3e05,0xb814,0x3635,0x0024,0x0000,0x800a,
+ 0xb880,0x104c,0xb882,0x33c0,0x2914,0xbec0,0x0004,0xc580,
+ 0x0019,0x98c0,0x0004,0x4e90,0x3800,0x0024,0x001f,0xff00,
+ 0x2931,0x6c40,0x3900,0x0024,0x2931,0x6640,0x0000,0x0024,
+ 0x2900,0x5500,0x0000,0x8001,0x2912,0x0d00,0x3613,0x0024,
+ 0x6012,0x0024,0x0000,0x8005,0x2800,0x7b18,0x0004,0x4d50,
+ 0x2912,0x0d00,0x3613,0x108c,0x2934,0x4180,0x3ce0,0x0024,
+ 0x0000,0x1000,0x3423,0x0024,0x2900,0x0a80,0x34e1,0x0024,
+ 0xb882,0x0042,0x30f0,0xc024,0x4dc2,0x0024,0x3810,0x0024,
+ 0x2800,0x7b00,0x38f0,0x4024,0x3e12,0xb817,0x3e12,0x3815,
+ 0x3e05,0xb814,0x3615,0x0024,0x0000,0x800a,0x3e10,0x3801,
+ 0x0000,0x0081,0xb880,0xb811,0x0030,0x0291,0x3e14,0x0024,
+ 0x0030,0x0690,0x3e14,0xb813,0x0030,0x00d3,0x0007,0x9252,
+ 0x3800,0x0024,0x3910,0x0024,0x3a00,0x0024,0x0000,0xc0c0,
+ 0x3900,0x0024,0x0030,0x0000,0x0006,0x0051,0x2908,0x6400,
+ 0x3b00,0x0024,0xb880,0x008c,0x3800,0x0024,0x3800,0x0024,
+ 0x0003,0x0d40,0x0006,0xc490,0x2908,0x7f80,0x3009,0x2000,
+ 0x0030,0x0ad0,0x3800,0x184c,0x002b,0x1100,0x3e10,0x0024,
+ 0x2909,0xa9c0,0x3e10,0x4024,0x000a,0x8001,0x2908,0x7f80,
+ 0x36e3,0x0024,0xb880,0x2000,0x0006,0x0010,0x3009,0x2410,
+ 0x0006,0x0011,0x3009,0x2410,0x0008,0x0490,0x3810,0x0024,
+ 0x3800,0x0024,0x0000,0x0890,0x290f,0xfcc0,0x0006,0x8380,
+ 0x000a,0x8001,0x0000,0x0950,0x290f,0xfcc0,0x0006,0xb380,
+ 0x0000,0x09c0,0x0030,0x0690,0x6890,0x2000,0x0030,0x1310,
+ 0x6890,0x2000,0x0030,0x0490,0x2900,0x1e00,0x3800,0x0024,
+ 0x36f4,0x9813,0x36f4,0x1811,0x36f0,0x1801,0x3405,0x9014,
+ 0x36f3,0x0024,0x36f2,0x1815,0x2000,0x0000,0x36f2,0x9817,
+ 0x0007,0x0001, /*copy 1*/
+ 0x5800,
+ 0x0006,0x0004, /*copy 4*/
+ 0x1800,0x1800,0x98cc,0x7395,
+ 0x0007,0x0001, /*copy 1*/
+ 0x8025,
+ 0x0006,0x0002, /*copy 2*/
+ 0x2a00,0x1ace,
+ 0x0007,0x0001, /*copy 1*/
+ 0x8022,
+ 0x0006,0x0002, /*copy 2*/
+ 0x2a00,0x1a0e,
+#define MIDI1053_SIZE 1036
+#ifndef SKIP_PLUGIN_VARNAME
+};
+#endif
diff --git a/examples/Mp3PlayerDemo/Mp3PlayerDemo.ino b/examples/Mp3PlayerDemo/Mp3PlayerDemo.ino
index 4633bb4..702dde3 100644
--- a/examples/Mp3PlayerDemo/Mp3PlayerDemo.ino
+++ b/examples/Mp3PlayerDemo/Mp3PlayerDemo.ino
@@ -74,13 +74,13 @@ void setup() {
// initialize SPI
SPI.begin();
- Serial.println("Hello VS1053!\n");
+ Serial.println("Hello VS1003/53!");
// initialize a player
player.begin();
+ player.switchToMp3Mode(); // optional, some boards require this
if (player.getChipVersion() == 4) { // Only perform an update if we really are using a VS1053, not. eg. VS1003
player.loadDefaultVs1053Patches();
}
- player.switchToMp3Mode(); // optional, some boards require this
player.setVolume(VOLUME);
}
diff --git a/examples/WebRadioDemo/WebRadioDemo.ino b/examples/WebRadioDemo/WebRadioDemo.ino
index d9889f1..a5b7dc8 100644
--- a/examples/WebRadioDemo/WebRadioDemo.ino
+++ b/examples/WebRadioDemo/WebRadioDemo.ino
@@ -101,10 +101,10 @@ void setup() {
SPI.begin();
player.begin();
+ player.switchToMp3Mode();
if (player.getChipVersion() == 4) { // Only perform an update if we really are using a VS1053, not. eg. VS1003
player.loadDefaultVs1053Patches();
}
- player.switchToMp3Mode();
player.setVolume(VOLUME);
Serial.print("Connecting to SSID ");
diff --git a/src/VS1053.cpp b/src/VS1053.cpp
index 15fd575..3f9c000 100644
--- a/src/VS1053.cpp
+++ b/src/VS1053.cpp
@@ -244,6 +244,46 @@ void VS1053::playChunk(uint8_t *data, size_t len) {
sdi_send_buffer(data, len);
}
+
+/**
+ * send a MIDI message
+ *
+ * a MIDI message ranges from 1 byte to three bytes
+ * the first byte consists of 4 command bits and 4 channel bits
+ *
+ * based on talkMIDI function in MP3_Shield_RealtimeMIDI demo by Matthias Neeracher,
+ * which is based on Nathan Seidle's Sparkfun Electronics example
+ */
+
+void VS1053::sendMidiMessage(uint8_t cmd, uint8_t data1, uint8_t data2) {
+
+ digitalWrite(dcs_pin, LOW); //data_mode_on() does not seem to work here
+
+ // await_data_request() works for VS1053 and provides from overrunning the input buffer,
+ // which is unlikely to happen in RTMidi
+ // for VS1003 for some reason sometimes DREQ is ALWAYS down
+ // Hence, in case of running to an infinite loop, commenting await_data_request() is the solution
+ await_data_request();
+
+ SPI.write(0x00);
+ SPI.write(cmd);
+
+ // Some commands only have one data byte. All cmds less than 0xBn have 2 data bytes
+ // (sort of: http://253.ccarh.org/handout/midiprotocol/)
+ if( (cmd & 0xF0) <= 0xB0 || (cmd & 0xF0) >= 0xE0) {
+ SPI.write(0x00);
+ SPI.write(data1);
+ SPI.write(0x00);
+ SPI.write(data2);
+ } else {
+ SPI.write(0x00);
+ SPI.write(data1);
+ }
+
+ digitalWrite(dcs_pin, HIGH); //data_mode_off() does not seem to work here
+
+}
+
void VS1053::stopSong() {
uint16_t modereg; // Read from mode register
int i; // Loop control
diff --git a/src/VS1053.h b/src/VS1053.h
index 9faf7b6..1dc83a6 100644
--- a/src/VS1053.h
+++ b/src/VS1053.h
@@ -135,7 +135,10 @@ class VS1053 {
// Play a chunk of data. Copies the data to the chip. Blocks until complete
void playChunk(uint8_t *data, size_t len);
-
+
+ // performs a MIDI command
+ void sendMidiMessage(uint8_t cmd, uint8_t data1, uint8_t data2);
+
// Finish playing a song. Call this after the last playChunk call
void stopSong();
diff --git a/src/patches/rtmidi1003b.h b/src/patches/rtmidi1003b.h
new file mode 100644
index 0000000..0afcc5d
--- /dev/null
+++ b/src/patches/rtmidi1003b.h
@@ -0,0 +1,89 @@
+#ifndef SKIP_PLUGIN_VARNAME
+const unsigned short MIDI1003[] = { /* Compressed plugin */
+#endif
+ 0x0007,0x0001, /*copy 1*/
+ 0x8030,
+ 0x0006,0x01ee, /*copy 494*/
+ 0x2800,0x38c0,0x0006,0x2016,0x3613,0x0024,0x0006,0x0057,
+ 0x3e15,0x1c15,0x0020,0x1fd4,0x3580,0x3802,0xf204,0x3804,
+ 0x0fff,0xfe44,0xa244,0x1804,0xf400,0x4094,0x2800,0x0f85,
+ 0x3009,0x1bc2,0xf400,0x4500,0x2000,0x0000,0x36f5,0x3c15,
+ 0x3009,0x3857,0x0030,0x0a57,0x3e14,0xf806,0x3701,0x8024,
+ 0x0006,0x0017,0x3e04,0x9c13,0x0020,0x1fd2,0x3b81,0x8024,
+ 0x36f4,0xbc13,0x36f4,0xd806,0x0030,0x0717,0x2100,0x0000,
+ 0x3f05,0xdbd7,0x3613,0x0024,0x3e22,0xb815,0x3e05,0xb814,
+ 0x3615,0x0024,0x3405,0x9014,0x36e3,0x0024,0x2000,0x0000,
+ 0x36f2,0x9815,0x3613,0x0024,0x3e22,0xb815,0x3e05,0xb814,
+ 0x3615,0x0024,0x3405,0x9014,0x36e3,0x0024,0x2000,0x0000,
+ 0x36f2,0x9815,0x3613,0x0024,0x3e12,0xb817,0x3e12,0x3815,
+ 0x3e05,0xb814,0x3615,0x0024,0x0000,0x800a,0x3e10,0x3801,
+ 0x3e10,0xb804,0x3e01,0x7810,0x0030,0x00d0,0x2900,0x0400,
+ 0x3001,0x0024,0x4080,0x03cc,0x3000,0x0024,0x2800,0x36c5,
+ 0x4090,0x0024,0x0000,0x0024,0x2800,0x2485,0x0000,0x0024,
+ 0x0000,0x0081,0x3000,0x0024,0x6012,0x0024,0x0000,0x0401,
+ 0x2800,0x3305,0x0000,0x0024,0x6012,0x0024,0x0000,0x0024,
+ 0x2800,0x2885,0x0000,0x0024,0x2900,0x0c80,0x0000,0x0024,
+ 0x4088,0x008c,0x0000,0x2000,0x6400,0x0024,0x0000,0x3c00,
+ 0x2800,0x2118,0x0000,0x0024,0x2800,0x2540,0x3801,0x0024,
+ 0x6400,0x038c,0x0000,0x0024,0x2800,0x2558,0x0000,0x0024,
+ 0x3013,0x0024,0x2900,0x0400,0x3801,0x0024,0x4080,0x0024,
+ 0x0000,0x0024,0x2800,0x2495,0x0000,0x0024,0x6890,0x03cc,
+ 0x2800,0x36c0,0x3800,0x0024,0x2900,0x0c80,0x0030,0x0110,
+ 0x3800,0x0024,0x0000,0x3c00,0x6400,0x0024,0x003f,0xff00,
+ 0x2800,0x2d48,0x0000,0x0024,0x0000,0x3fc0,0x6400,0x0024,
+ 0x0000,0x3c00,0x2800,0x3605,0x6400,0x0024,0x0000,0x0024,
+ 0x2800,0x3615,0x0000,0x0024,0xb880,0x184c,0x2900,0x0400,
+ 0x3009,0x3800,0x4082,0x9bc0,0x6014,0x0024,0x0000,0x3c04,
+ 0x2800,0x2b81,0x0000,0x3dc1,0x2900,0x0c80,0x0000,0x0024,
+ 0xf400,0x4004,0x0000,0x3dc1,0x6412,0x0024,0x0030,0x0090,
+ 0x2800,0x2cc5,0x0000,0x0000,0x0000,0x0400,0x2800,0x36c0,
+ 0x3800,0x0024,0x0030,0x00d0,0x3001,0x4024,0xa50a,0x0024,
+ 0x0000,0x03c0,0xb50a,0x0024,0x0000,0x0300,0x6500,0x0024,
+ 0x0000,0x0024,0x2900,0x0408,0x0000,0x3188,0x0000,0x0380,
+ 0x6500,0x0024,0x0000,0x0024,0x2800,0x33d5,0x0000,0x0024,
+ 0x2900,0x0400,0x0000,0x0024,0x4080,0x03cc,0x0000,0x0080,
+ 0x2800,0x3315,0x0000,0x0024,0x2800,0x36c0,0x3800,0x0024,
+ 0x2900,0x0c80,0x0000,0x0024,0x408a,0x0024,0x0030,0x0110,
+ 0x3613,0x0024,0x3e11,0x4024,0x30f0,0x0024,0x3e10,0x0024,
+ 0x3000,0x4024,0x2926,0xa140,0x3e00,0x4024,0x36d3,0x0024,
+ 0x0000,0x0000,0x0030,0x0090,0x3800,0x0024,0x36f1,0x5810,
+ 0x36f0,0x9804,0x36f0,0x1801,0x3405,0x9014,0x36f3,0x0024,
+ 0x36f2,0x1815,0x2000,0x0000,0x36f2,0x9817,0x002b,0x1105,
+ 0x0030,0x00d2,0x0030,0x0690,0x0030,0x0291,0x0000,0x0084,
+ 0x0006,0x6853,0x3e05,0xb814,0x3635,0x0024,0x0000,0x800a,
+ 0xb880,0x0024,0x3800,0x0024,0x3910,0x0024,0x0000,0xc0c0,
+ 0x3900,0x0024,0x0006,0x0051,0x0030,0x0000,0x2910,0x3740,
+ 0x3a00,0x0024,0xb880,0x010c,0x38e0,0x184c,0x3800,0x0024,
+ 0x3800,0x0024,0x0000,0x0f00,0x0006,0x0010,0x3009,0x2c00,
+ 0x0003,0x1e40,0x3009,0x2410,0x0006,0x0011,0x3009,0x2410,
+ 0x0030,0x0ad0,0x3800,0x0024,0x0000,0x09c0,0x0030,0x0690,
+ 0x2910,0x7780,0x3800,0x0024,0x0001,0x0010,0xb882,0x0024,
+ 0x291d,0x5800,0x0002,0xdc00,0x001f,0xff00,0x0003,0xda90,
+ 0x2926,0x1440,0x3800,0x0024,0x2926,0x0e40,0x0030,0x0490,
+ 0x6890,0x0024,0x3800,0x0024,0x2900,0x1740,0x0000,0x8001,
+ 0x2919,0x8180,0x3613,0x0024,0x6012,0x0024,0x0003,0xd950,
+ 0x2800,0x4498,0x0000,0x0024,0x2919,0x8180,0x3613,0x104c,
+ 0x2928,0xce40,0x3c00,0x0024,0x0000,0x1000,0x2900,0x0a80,
+ 0x34f1,0x0024,0xb882,0x0042,0x30f0,0xc024,0x4dc2,0x0024,
+ 0x3810,0x0024,0x2800,0x4480,0x38f0,0x4024,
+ 0x0007,0x0001, /*copy 1*/
+ 0x5800,
+ 0x0006, 0x8002, 0x1800, /*Rle(2)*/
+ 0x0007,0x0001, /*copy 1*/
+ 0x8010,
+ 0x0006,0x0016, /*copy 22*/
+ 0xf400,0x4095,0x0006,0x0017,0x3009,0x1c40,0x3009,0x1fc2,
+ 0x6020,0x0024,0x0000,0x1fc2,0x2000,0x0000,0xb020,0x4542,
+ 0x3009,0x3857,0x2800,0x1080,0x0030,0x0457,
+ 0x0007,0x0001, /*copy 1*/
+ 0x8025,
+ 0x0006,0x0002, /*copy 2*/
+ 0x2a00,0x100e,
+ 0x0007,0x0001, /*copy 1*/
+ 0x8022,
+ 0x0006,0x0002, /*copy 2*/
+ 0x2a00,0x060e,
+#define MIDI1003_SIZE 546
+#ifndef SKIP_PLUGIN_VARNAME
+};
+#endif
diff --git a/src/patches/rtmidi1053b.h b/src/patches/rtmidi1053b.h
new file mode 100644
index 0000000..8f19eda
--- /dev/null
+++ b/src/patches/rtmidi1053b.h
@@ -0,0 +1,148 @@
+#ifndef SKIP_PLUGIN_VARNAME
+const unsigned short MIDI1053[] = { /* Compressed plugin */
+#endif
+ 0x0007,0x0001, /*copy 1*/
+ 0x8050,
+ 0x0006,0x03f0, /*copy 1008*/
+ 0x2800,0x8080,0x0006,0x2016,0xf400,0x4095,0x0006,0x0017,
+ 0x3009,0x1c40,0x3009,0x1fc2,0x6020,0x0024,0x0000,0x1fc2,
+ 0x2000,0x0000,0xb020,0x4542,0x3613,0x0024,0x0006,0x0057,
+ 0x3e15,0x1c15,0x0020,0x1fd4,0x3580,0x3802,0xf204,0x3804,
+ 0x0fff,0xfe44,0xa244,0x1804,0xf400,0x4094,0x2800,0x1985,
+ 0x3009,0x1bc2,0xf400,0x4500,0x2000,0x0000,0x36f5,0x3c15,
+ 0x3009,0x3857,0x2800,0x1b40,0x0030,0x0457,0x3009,0x3857,
+ 0x0030,0x0a57,0x3e14,0xf806,0x3701,0x8024,0x0006,0x0017,
+ 0x3e04,0x9c13,0x0020,0x1fd2,0x3b81,0x8024,0x36f4,0xbc13,
+ 0x36f4,0xd806,0x0030,0x0717,0x2100,0x0000,0x3f05,0xdbd7,
+ 0x0030,0xf80f,0x0000,0x1f0e,0x2800,0x7680,0x0000,0x004d,
+ 0xf400,0x4595,0x3e00,0x17cc,0x3505,0xf802,0x3773,0x0024,
+ 0x3763,0x0024,0x3700,0x0024,0x0000,0x09c2,0x6024,0x0024,
+ 0x3600,0x1802,0x2830,0xf855,0x0000,0x004d,0x2800,0x2240,
+ 0x36f3,0x0024,0x3613,0x0024,0x3e12,0xb817,0x3e12,0x3815,
+ 0x3e05,0xb814,0x3625,0x0024,0x0000,0x800a,0x3e10,0x3801,
+ 0x3e10,0xb803,0x3e11,0x3810,0x3e04,0x7812,0x34c3,0x0024,
+ 0x3440,0x0024,0x4080,0x0024,0x001b,0x3301,0x2800,0x2c85,
+ 0x0000,0x0180,0x0000,0x0551,0x0000,0xaf02,0x293c,0x1f40,
+ 0x0007,0xffc1,0xb010,0x134c,0x0018,0x0001,0x4010,0x10d0,
+ 0x0007,0xffc1,0xfe20,0x020c,0x0000,0x0591,0x48b6,0x0024,
+ 0x4dd6,0x0024,0x0001,0x2202,0x293c,0x1f40,0x4380,0x2003,
+ 0xb010,0x134c,0x0018,0x0001,0x4010,0x1010,0xfe20,0x020c,
+ 0x48b6,0x844c,0x4dd6,0x0024,0xb880,0x2003,0x3434,0x0024,
+ 0x2800,0x5280,0x3083,0x0024,0x001c,0xccc2,0x0000,0x05d1,
+ 0x34d3,0x0024,0x3404,0x0024,0x3404,0x420c,0x3001,0x05cc,
+ 0xa408,0x044c,0x3100,0x0024,0x6010,0x0024,0xfe20,0x0024,
+ 0x48b6,0x0024,0x4dd6,0x0024,0x4310,0x0024,0x4488,0x2400,
+ 0x0000,0x0551,0x2800,0x3295,0x3404,0x0024,0xf290,0x00cc,
+ 0x3800,0x0024,0x3434,0x0024,0x3073,0x0024,0x3013,0x0024,
+ 0x2800,0x4340,0x3800,0x0024,0x3083,0x0024,0x3000,0x0024,
+ 0x6402,0x0024,0x0000,0x1001,0x2800,0x3618,0x0018,0x0002,
+ 0x3434,0x4024,0x3133,0x0024,0x3100,0x0024,0xfe20,0x0024,
+ 0x48b6,0x0024,0x4dd6,0x0024,0x2800,0x4340,0x3900,0xc024,
+ 0x4010,0x1011,0x6402,0x0024,0x0000,0x0590,0x2800,0x3918,
+ 0x0000,0x0024,0xf290,0x04cc,0x3900,0x0024,0x3434,0x0024,
+ 0x3073,0x0024,0x3013,0x0024,0x2800,0x4340,0x3800,0x0024,
+ 0x3183,0x0024,0x3100,0x0024,0x6402,0x0024,0x0000,0x1001,
+ 0x2800,0x3c98,0x0019,0x9982,0x3434,0x0024,0x3033,0x0024,
+ 0x3000,0x0024,0xfe20,0x0024,0x48b6,0x0024,0x4dd6,0x0024,
+ 0x2800,0x4340,0x3800,0xc024,0x4010,0x0024,0x6402,0x0024,
+ 0x001d,0x7082,0x2800,0x4198,0x0000,0x0024,0xf290,0x1010,
+ 0x3033,0x0024,0x3800,0x0024,0x3404,0x0024,0x3073,0x0024,
+ 0x3013,0x0024,0x3800,0x0024,0x0004,0x4d50,0x3010,0x0024,
+ 0x30f0,0x4024,0x3434,0x4024,0x3143,0x0024,0x3910,0x0024,
+ 0x2800,0x4340,0x39f0,0x4024,0x3434,0x0024,0x3033,0x0024,
+ 0x3000,0x0024,0xfe20,0x0024,0x48b6,0x0024,0x4dd6,0x0024,
+ 0x3800,0xc024,0x001e,0x9982,0x0001,0x1012,0x0000,0x0381,
+ 0x34d3,0x184c,0x3444,0x0024,0x3073,0x0024,0x3013,0x0024,
+ 0x3000,0x0024,0xfe20,0x0024,0x48b6,0x0024,0x4dd6,0x0024,
+ 0x4380,0x3003,0x3400,0x0024,0x293d,0x2900,0x3e00,0x0024,
+ 0x3009,0x33c0,0x293b,0xc540,0x0010,0x0004,0x34d3,0x184c,
+ 0x3444,0x0024,0x3073,0x13c0,0x3073,0x0024,0x293b,0xf880,
+ 0x0001,0x1011,0x0001,0x0010,0x0001,0x1011,0x34d3,0x184c,
+ 0x3430,0x0024,0x4010,0x0024,0x0000,0x05c1,0x3e10,0x0024,
+ 0x293b,0xac80,0x0006,0x0092,0x0000,0x05d1,0x36f3,0x134c,
+ 0x3404,0x0024,0x3083,0x0024,0x3000,0x0024,0x6012,0x0024,
+ 0x0013,0x3304,0x2800,0x5198,0x0001,0xc682,0x0000,0x0500,
+ 0x0001,0x0012,0x3404,0x584c,0x3133,0x0024,0x3100,0x4024,
+ 0x0000,0x05d1,0xfe22,0x0024,0x48b6,0x0024,0x4dd6,0x0024,
+ 0x3e10,0xc024,0x3430,0x8024,0x4204,0x0024,0x293b,0xb580,
+ 0x3e00,0x8024,0x36e3,0x134c,0x3434,0x0024,0x3083,0x0024,
+ 0x3000,0x0024,0x6090,0x0024,0x3800,0x1812,0x36f4,0x4024,
+ 0x36f1,0x1810,0x36f0,0x9803,0x36f0,0x1801,0x3405,0x9014,
+ 0x36f3,0x0024,0x36f2,0x1815,0x2000,0x0000,0x36f2,0x9817,
+ 0x3613,0x0024,0x3e12,0xb817,0x3e12,0x3815,0x3e05,0xb814,
+ 0x3615,0x0024,0x0000,0x800a,0x3e10,0x3801,0x3e10,0xb804,
+ 0x3e01,0x7810,0x0008,0x04d0,0x2900,0x1480,0x3001,0x0024,
+ 0x4080,0x03cc,0x3000,0x0024,0x2800,0x7485,0x4090,0x0024,
+ 0x0000,0x0024,0x2800,0x6245,0x0000,0x0024,0x0000,0x0081,
+ 0x3000,0x0024,0x6012,0x0024,0x0000,0x0401,0x2800,0x70c5,
+ 0x0000,0x0024,0x6012,0x0024,0x0000,0x0024,0x2800,0x6645,
+ 0x0000,0x0024,0x2900,0x1680,0x0000,0x0024,0x4088,0x008c,
+ 0x0000,0x2000,0x6400,0x0024,0x0000,0x3c00,0x2800,0x5ed8,
+ 0x0000,0x0024,0x2800,0x6300,0x3801,0x0024,0x6400,0x038c,
+ 0x0000,0x0024,0x2800,0x6318,0x0000,0x0024,0x3013,0x0024,
+ 0x2900,0x1480,0x3801,0x0024,0x4080,0x0024,0x0000,0x0024,
+ 0x2800,0x6255,0x0000,0x0024,0x6890,0x03cc,0x2800,0x7480,
+ 0x3800,0x0024,0x2900,0x1680,0x0008,0x0510,0x3800,0x0024,
+ 0x0000,0x3c00,0x6400,0x0024,0x003f,0xff00,0x2800,0x6b08,
+ 0x0000,0x0024,0x0000,0x3fc0,0x6400,0x0024,0x0000,0x3c00,
+ 0x2800,0x73c5,0x6400,0x0024,0x0000,0x0024,0x2800,0x73d5,
+ 0x0000,0x0024,0xb880,0x184c,0x2900,0x1480,0x3009,0x3800,
+ 0x4082,0x9bc0,0x6014,0x0024,0x0000,0x3c04,0x2800,0x6941,
+ 0x0000,0x3dc1,0x2900,0x1680,0x0000,0x0024,0xf400,0x4004,
+ 0x0000,0x3dc1,0x6412,0x0024,0x0008,0x0490,0x2800,0x6a85,
+ 0x0000,0x0000,0x0000,0x0400,0x2800,0x7480,0x3800,0x0024,
+ 0x0008,0x04d0,0x3001,0x4024,0xa50a,0x0024,0x0000,0x03c0,
+ 0xb50a,0x0024,0x0000,0x0300,0x6500,0x0024,0x0000,0x0024,
+ 0x2900,0x1488,0x0000,0x6f48,0x0000,0x0380,0x6500,0x0024,
+ 0x0000,0x0024,0x2800,0x7195,0x0000,0x0024,0x2900,0x1480,
+ 0x0000,0x0024,0x4080,0x03cc,0x0000,0x0080,0x2800,0x70d5,
+ 0x0000,0x0024,0x2800,0x7480,0x3800,0x0024,0x2900,0x1680,
+ 0x0000,0x0024,0x408a,0x0024,0x0008,0x0510,0x3613,0x0024,
+ 0x3e11,0x4024,0x30f0,0x0024,0x3e10,0x0024,0x3000,0x4024,
+ 0x2931,0xe080,0x3e00,0x4024,0x36d3,0x0024,0x0000,0x0000,
+ 0x0008,0x0490,0x3800,0x0024,0x36f1,0x5810,0x36f0,0x9804,
+ 0x36f0,0x1801,0x3405,0x9014,0x36f3,0x0024,0x36f2,0x1815,
+ 0x2000,0x0000,0x36f2,0x9817,0x0005,0xbe51,0x0001,0x0010,
+ 0x3613,0x0024,0x3e05,0xb814,0x3635,0x0024,0x0000,0x800a,
+ 0xb880,0x104c,0xb882,0x33c0,0x2914,0xbec0,0x0004,0xc580,
+ 0x0019,0x98c0,0x0004,0x4e90,0x3800,0x0024,0x001f,0xff00,
+ 0x2931,0x6c40,0x3900,0x0024,0x2931,0x6640,0x0000,0x0024,
+ 0x2900,0x5500,0x0000,0x8001,0x2912,0x0d00,0x3613,0x0024,
+ 0x6012,0x0024,0x0000,0x8005,0x2800,0x7b18,0x0004,0x4d50,
+ 0x2912,0x0d00,0x3613,0x108c,0x2934,0x4180,0x3ce0,0x0024,
+ 0x0000,0x1000,0x3423,0x0024,0x2900,0x0a80,0x34e1,0x0024,
+ 0xb882,0x0042,0x30f0,0xc024,0x4dc2,0x0024,0x3810,0x0024,
+ 0x2800,0x7b00,0x38f0,0x4024,0x3e12,0xb817,0x3e12,0x3815,
+ 0x3e05,0xb814,0x3615,0x0024,0x0000,0x800a,0x3e10,0x3801,
+ 0x0000,0x0081,0xb880,0xb811,0x0030,0x0291,0x3e14,0x0024,
+ 0x0030,0x0690,0x3e14,0xb813,0x0030,0x00d3,0x0007,0x9252,
+ 0x3800,0x0024,0x3910,0x0024,0x3a00,0x0024,0x0000,0xc0c0,
+ 0x3900,0x0024,0x0030,0x0000,0x0006,0x0051,0x2908,0x6400,
+ 0x3b00,0x0024,0xb880,0x008c,0x3800,0x0024,0x3800,0x0024,
+ 0x0003,0x0d40,0x0006,0xc490,0x2908,0x7f80,0x3009,0x2000,
+ 0x0030,0x0ad0,0x3800,0x184c,0x002b,0x1100,0x3e10,0x0024,
+ 0x2909,0xa9c0,0x3e10,0x4024,0x000a,0x8001,0x2908,0x7f80,
+ 0x36e3,0x0024,0xb880,0x2000,0x0006,0x0010,0x3009,0x2410,
+ 0x0006,0x0011,0x3009,0x2410,0x0008,0x0490,0x3810,0x0024,
+ 0x3800,0x0024,0x0000,0x0890,0x290f,0xfcc0,0x0006,0x8380,
+ 0x000a,0x8001,0x0000,0x0950,0x290f,0xfcc0,0x0006,0xb380,
+ 0x0000,0x09c0,0x0030,0x0690,0x6890,0x2000,0x0030,0x1310,
+ 0x6890,0x2000,0x0030,0x0490,0x2900,0x1e00,0x3800,0x0024,
+ 0x36f4,0x9813,0x36f4,0x1811,0x36f0,0x1801,0x3405,0x9014,
+ 0x36f3,0x0024,0x36f2,0x1815,0x2000,0x0000,0x36f2,0x9817,
+ 0x0007,0x0001, /*copy 1*/
+ 0x5800,
+ 0x0006,0x0004, /*copy 4*/
+ 0x1800,0x1800,0x98cc,0x7395,
+ 0x0007,0x0001, /*copy 1*/
+ 0x8025,
+ 0x0006,0x0002, /*copy 2*/
+ 0x2a00,0x1ace,
+ 0x0007,0x0001, /*copy 1*/
+ 0x8022,
+ 0x0006,0x0002, /*copy 2*/
+ 0x2a00,0x1a0e,
+#define MIDI1053_SIZE 1036
+#ifndef SKIP_PLUGIN_VARNAME
+};
+#endif