I tried to create a USB MIDI Controller using an ESP32-S3 and Platform.io as my environment instead of Arduino IDE.
While I followed the docs for the USB MIDI implementation of arduino-esp32, I realized that it does not exist (at least in the docs examples) on platform-espressif32. No Midi Controller Example there
https://github.com/espressif/arduino-esp32/blob/master/libraries/USB/examples/MIDI/MidiController/MidiController.ino
I also tried using Adafruit_TinyUSB, but when compiling, it seems it is already implemented somewhere else, leading to this error:
c:/users/marcus universe/.platformio/packages/toolchain-xtensa-esp32s3/bin/../lib/gcc/xtensa-esp32s3-elf/8.4.0/../../../../xtensa-esp32s3-elf/bin/ld.exe: .pio\build\esp32s3box\lib57d\libAdafruit TinyUSB Library.a(dcd_dwc2.c.o): in function `dcd_int_enable': H:\Projects\Coding\ESP32\ESP32_Reciever/.pio/libdeps/esp32s3box/Adafruit TinyUSB Library/src/portable/synopsys/dwc2/dcd_dwc2.c:739: multiple definition of `dcd_int_enable'; C:\Users\Marcus Universe\.platformio\packages\framework-arduinoespressif32\tools\sdk\esp32s3\lib\libarduino_tinyusb.a(dcd_esp32sx.c.obj):/home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/components/arduino_tinyusb/src/dcd_esp32sx.c:911: first defined here c:/users/marcus universe/.platformio/packages/toolchain-xtensa-esp32s3/bin/../lib/gcc/xtensa-esp32s3-elf/8.4.0/../../../../xtensa-esp32s3-elf/bin/ld.exe: .pio\build\esp32s3box\lib57d\libAdafruit TinyUSB Library.a(dcd_dwc2.c.o): in function `dcd_int_disable': H:\Projects\Coding\ESP32\ESP32_Reciever/.pio/libdeps/esp32s3box/Adafruit TinyUSB Library/src/portable/synopsys/dwc2/dcd_dwc2.c:743: multiple definition of `dcd_int_disable'; C:\Users\Marcus Universe\.platformio\packages\framework-arduinoespressif32\tools\sdk\esp32s3\lib\libarduino_tinyusb.a(dcd_esp32sx.c.obj):/home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/components/arduino_tinyusb/src/dcd_esp32sx.c:917: first defined here c:/users/marcus universe/.platformio/packages/toolchain-xtensa-esp32s3/bin/../lib/gcc/xtensa-esp32s3-elf/8.4.0/../../../../xtensa-esp32s3-elf/bin/ld.exe: .pio\build\esp32s3box\lib57d\libAdafruit TinyUSB Library.a(dcd_dwc2.c.o): in function `dcd_remote_wakeup': H:\Projects\Coding\ESP32\ESP32_Reciever/.pio/libdeps/esp32s3box/Adafruit TinyUSB Library/src/portable/synopsys/dwc2/dcd_dwc2.c:755: multiple definition of `dcd_remote_wakeup'; C:\Users\Marcus Universe\.platformio\packages\framework-arduinoespressif32\tools\sdk\esp32s3\lib\libarduino_tinyusb.a(dcd_esp32sx.c.obj):/home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/components/arduino_tinyusb/src/dcd_esp32sx.c:257: first defined here c:/users/marcus universe/.platformio/packages/toolchain-xtensa-esp32s3/bin/../lib/gcc/xtensa-esp32s3-elf/8.4.0/../../../../xtensa-esp32s3-elf/bin/ld.exe: .pio\build\esp32s3box\lib57d\libAdafruit TinyUSB Library.a(dcd_dwc2.c.o): in function `dcd_init': H:\Projects\Coding\ESP32\ESP32_Reciever/.pio/libdeps/esp32s3box/Adafruit TinyUSB Library/src/portable/synopsys/dwc2/dcd_dwc2.c:658: multiple definition of `dcd_init'; C:\Users\Marcus Universe\.platformio\packages\framework-arduinoespressif32\tools\sdk\esp32s3\lib\libarduino_tinyusb.a(dcd_esp32sx.c.obj):/home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/components/arduino_tinyusb/src/dcd_esp32sx.c:165: first defined here c:/users/marcus universe/.platformio/packages/toolchain-xtensa-esp32s3/bin/../lib/gcc/xtensa-esp32s3-elf/8.4.0/../../../../xtensa-esp32s3-elf/bin/ld.exe: .pio\build\esp32s3box\lib57d\libAdafruit TinyUSB Library.a(dcd_dwc2.c.o): in function `dcd_edpt_open': H:\Projects\Coding\ESP32\ESP32_Reciever/.pio/libdeps/esp32s3box/Adafruit TinyUSB Library/src/portable/synopsys/dwc2/dcd_dwc2.c:826: multiple definition of `dcd_edpt_open'; C:\Users\Marcus Universe\.platformio\packages\framework-arduinoespressif32\tools\sdk\esp32s3\lib\libarduino_tinyusb.a(dcd_esp32sx.c.obj):/home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/components/arduino_tinyusb/src/dcd_esp32sx.c:292: first defined here c:/users/marcus universe/.platformio/packages/toolchain-xtensa-esp32s3/bin/../lib/gcc/xtensa-esp32s3-elf/8.4.0/../../../../xtensa-esp32s3-elf/bin/ld.exe: .pio\build\esp32s3box\lib57d\libAdafruit TinyUSB Library.a(dcd_dwc2.c.o): in function `dcd_edpt_close_all': H:\Projects\Coding\ESP32\ESP32_Reciever/.pio/libdeps/esp32s3box/Adafruit TinyUSB Library/src/portable/synopsys/dwc2/dcd_dwc2.c:833: multiple definition of `dcd_edpt_close_all'; C:\Users\Marcus Universe\.platformio\packages\framework-arduinoespressif32\tools\sdk\esp32s3\lib\libarduino_tinyusb.a(dcd_esp32sx.c.obj):/home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/components/arduino_tinyusb/src/dcd_esp32sx.c:370: first defined here c:/users/marcus universe/.platformio/packages/toolchain-xtensa-esp32s3/bin/../lib/gcc/xtensa-esp32s3-elf/8.4.0/../../../../xtensa-esp32s3-elf/bin/ld.exe: .pio\build\esp32s3box\lib57d\libAdafruit TinyUSB Library.a(dcd_dwc2.c.o): in function `dcd_edpt_xfer': H:\Projects\Coding\ESP32\ESP32_Reciever/.pio/libdeps/esp32s3box/Adafruit TinyUSB Library/src/portable/synopsys/dwc2/dcd_dwc2.c:870: multiple definition of `dcd_edpt_xfer'; C:\Users\Marcus Universe\.platformio\packages\framework-arduinoespressif32\tools\sdk\esp32s3\lib\libarduino_tinyusb.a(dcd_esp32sx.c.obj):/home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/components/arduino_tinyusb/src/dcd_esp32sx.c:394: first defined here c:/users/marcus universe/.platformio/packages/toolchain-xtensa-esp32s3/bin/../lib/gcc/xtensa-esp32s3-elf/8.4.0/../../../../xtensa-esp32s3-elf/bin/ld.exe: .pio\build\esp32s3box\lib57d\libAdafruit TinyUSB Library.a(dcd_dwc2.c.o): in function `dcd_set_address': H:\Projects\Coding\ESP32\ESP32_Reciever/.pio/libdeps/esp32s3box/Adafruit TinyUSB Library/src/portable/synopsys/dwc2/dcd_dwc2.c:747: multiple definition of `dcd_set_address'; C:\Users\Marcus Universe\.platformio\packages\framework-arduinoespressif32\tools\sdk\esp32s3\lib\libarduino_tinyusb.a(dcd_esp32sx.c.obj):/home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/components/arduino_tinyusb/src/dcd_esp32sx.c:248: first defined here c:/users/marcus universe/.platformio/packages/toolchain-xtensa-esp32s3/bin/../lib/gcc/xtensa-esp32s3-elf/8.4.0/../../../../xtensa-esp32s3-elf/bin/ld.exe: .pio\build\esp32s3box\lib57d\libAdafruit TinyUSB Library.a(dcd_dwc2.c.o): in function `dcd_edpt_stall': H:\Projects\Coding\ESP32\ESP32_Reciever/.pio/libdeps/esp32s3box/Adafruit TinyUSB Library/src/portable/synopsys/dwc2/dcd_dwc2.c:933: multiple definition of `dcd_edpt_stall'; C:\Users\Marcus Universe\.platformio\packages\framework-arduinoespressif32\tools\sdk\esp32s3\lib\libarduino_tinyusb.a(dcd_esp32sx.c.obj):/home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/components/arduino_tinyusb/src/dcd_esp32sx.c:446: first defined here c:/users/marcus universe/.platformio/packages/toolchain-xtensa-esp32s3/bin/../lib/gcc/xtensa-esp32s3-elf/8.4.0/../../../../xtensa-esp32s3-elf/bin/ld.exe: .pio\build\esp32s3box\lib57d\libAdafruit TinyUSB Library.a(dcd_dwc2.c.o): in function `dcd_edpt_clear_stall': H:\Projects\Coding\ESP32\ESP32_Reciever/.pio/libdeps/esp32s3box/Adafruit TinyUSB Library/src/portable/synopsys/dwc2/dcd_dwc2.c:940: multiple definition of `dcd_edpt_clear_stall'; C:\Users\Marcus Universe\.platformio\packages\framework-arduinoespressif32\tools\sdk\esp32s3\lib\libarduino_tinyusb.a(dcd_esp32sx.c.obj):/home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/components/arduino_tinyusb/src/dcd_esp32sx.c:500: first defined here collect2.exe: error: ld returned 1 exit status *** [.pio\build\esp32s3box\firmware.elf] Error 1`
My plattformio.ini:
[env:esp32-s3-devkitc-1]
platform = espressif32
board = esp32-s3-devkitc-1
framework = arduino
monitor_speed = 115200
upload_port = COM10
build_flags = -DARDUINO_USB_CDC_ON_BOOT=1
-DCORE_DEBUG_LEVEL=1
-DARDUINO_USB_MODE=0
lib_archive = no
lib_deps =
adafruit/Adafruit NeoPixel@^1.10.4
adafruit/Adafruit SSD1306@^2.5.11
adafruit/Adafruit TinyUSB Library @ ^3.4.2
My current code main.ino
#include <Arduino.h>
#include <esp_now.h>
#include <WiFi.h>
#include <USB.h>
#include <USBHIDKeyboard.h>
#include <USBHIDMouse.h>
#include <Adafruit_TinyUSB.h>
#include <MIDI.h>
#include <Wire.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_RESET -1
Adafruit_SSD1306 display1(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
USBHIDKeyboard Keyboard;
USBHIDMouse Mouse;
Adafruit_USBD_MIDI usb_midi;
MIDI_CREATE_INSTANCE(Adafruit_USBD_MIDI, usb_midi, MIDI);
// Adafruit_USBD_MIDI usb_midi;
// MIDI_CREATE_INSTANCE(Adafruit_USBD_MIDI, usb_midi, MIDI);
uint8_t midiChannel = 0;
void OnDataRecv(const uint8_t *mac, const uint8_t *incomingData, int len) {
printf("Data: %d\n", *incomingData);
switch (*incomingData)
{
case 2:
// mouse click
Mouse.press(MOUSE_BUTTON_LEFT);
Mouse.release(MOUSE_BUTTON_LEFT);
printf("mouse click\n");
break;
case 3:
MIDI.sendControlChange(16, 127, 1);
break;
default:
break;
}
}
#define FRAME_DELAY (42)
#define FRAME_WIDTH (48)
#define FRAME_HEIGHT (48)
#define FRAME_COUNT (sizeof(frames) / sizeof(frames[0]))
const byte PROGMEM frames[][288] = {
{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,127,254,0,0,0,3,255,255,224,0,0,31,0,1,248,0,0,120,0,0,30,0,1,224,0,0,7,128,7,128,0,0,1,224,14,0,127,254,0,112,28,3,252,63,192,56,48,15,0,1,240,12,224,56,0,0,28,7,96,240,0,0,15,6,49,192,3,224,3,140,31,128,127,254,0,248,14,1,240,15,128,112,4,7,0,0,224,32,0,28,0,0,56,0,0,56,0,0,28,0,0,112,7,240,6,0,0,96,63,254,7,0,0,48,240,15,14,0,0,27,128,1,220,0,0,15,0,0,248,0,0,6,0,0,48,0,0,0,15,240,0,0,0,0,31,248,0,0,0,0,112,14,0,0,0,0,224,7,0,0,0,0,112,14,0,0,0,0,56,28,0,0,0,0,28,56,0,0,0,0,14,112,0,0,0,0,7,224,0,0,0,0,3,192,0,0,0,0,1,128,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},
{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,127,254,0,0,0,3,255,255,224,0,0,31,0,1,248,0,0,120,0,0,30,0,1,224,0,0,7,128,7,128,0,0,1,224,14,0,127,254,0,112,28,3,252,63,192,56,48,15,0,1,240,12,224,56,0,0,28,7,96,240,0,0,15,6,49,192,3,224,3,140,31,128,127,254,0,248,14,1,240,15,128,112,4,7,0,0,224,32,0,28,0,0,56,0,0,56,0,0,28,0,0,112,7,240,6,0,0,96,63,254,7,0,0,48,240,15,14,0,0,27,128,1,220,0,0,15,0,0,248,0,0,6,0,0,48,0,0,0,15,240,0,0,0,0,31,248,0,0,0,0,112,14,0,0,0,0,224,7,0,0,0,0,112,14,0,0,0,0,56,28,0,0,0,0,28,56,0,0,0,0,14,112,0,0,0,0,7,224,0,0,0,0,3,192,0,0,0,0,1,128,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},
{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,127,254,0,0,0,3,255,255,224,0,0,31,0,1,248,0,0,120,0,0,30,0,1,224,0,0,7,128,7,128,0,0,1,224,14,0,127,254,0,112,28,3,252,63,192,56,48,15,0,1,240,12,224,56,0,0,28,7,96,240,0,0,15,6,49,192,3,224,3,140,31,128,127,254,0,248,14,1,240,15,128,112,4,7,0,0,224,32,0,28,0,0,56,0,0,56,0,0,28,0,0,112,7,240,6,0,0,96,63,254,7,0,0,48,240,15,14,0,0,27,128,1,220,0,0,15,0,0,248,0,0,6,0,0,48,0,0,0,15,240,0,0,0,0,31,248,0,0,0,0,112,14,0,0,0,0,224,7,0,0,0,0,112,14,0,0,0,0,56,28,0,0,0,0,28,56,0,0,0,0,14,112,0,0,0,0,7,224,0,0,0,0,3,192,0,0,0,0,1,128,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},
{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,127,254,0,0,0,3,255,255,224,0,0,31,0,1,248,0,0,120,0,0,30,0,1,224,0,0,7,128,7,128,0,0,1,224,14,0,127,254,0,112,28,3,252,63,192,56,48,15,0,1,240,12,224,56,0,0,28,7,96,240,0,0,15,6,49,192,3,224,3,140,31,128,127,254,0,248,14,1,240,15,128,112,4,7,0,0,224,32,0,28,0,0,56,0,0,56,0,0,28,0,0,112,7,240,6,0,0,96,63,254,7,0,0,48,240,15,14,0,0,27,128,1,220,0,0,15,0,0,248,0,0,6,0,0,48,0,0,0,15,240,0,0,0,0,31,248,0,0,0,0,112,14,0,0,0,0,224,7,0,0,0,0,112,14,0,0,0,0,56,28,0,0,0,0,28,56,0,0,0,0,14,112,0,0,0,0,7,224,0,0,0,0,3,192,0,0,0,0,1,128,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},
{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,127,254,0,0,0,3,255,255,224,0,0,31,0,1,248,0,0,120,0,0,30,0,1,224,0,0,7,128,7,128,0,0,1,224,14,0,127,254,0,112,28,3,252,63,192,56,48,15,0,1,240,12,224,56,0,0,28,7,96,240,0,0,15,6,49,192,63,252,3,140,31,129,254,127,128,248,14,7,128,3,224,112,4,14,0,0,112,32,0,56,0,0,28,0,0,112,1,192,14,0,0,224,63,252,7,0,0,112,248,31,14,0,0,57,192,3,156,0,0,31,0,0,248,0,0,14,0,0,112,0,0,0,15,240,0,0,0,0,31,248,0,0,0,0,120,30,0,0,0,0,224,7,0,0,0,0,112,14,0,0,0,0,56,28,0,0,0,0,28,56,0,0,0,0,14,112,0,0,0,0,7,224,0,0,0,0,3,192,0,0,0,0,1,128,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,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,63,254,0,0,0,1,255,255,192,0,0,31,128,1,248,0,0,120,0,0,62,0,1,224,0,0,7,128,3,128,0,0,1,192,14,0,63,254,0,112,28,3,255,255,192,56,56,15,128,1,240,12,96,60,0,0,60,6,96,240,15,240,14,6,49,192,127,255,3,140,27,131,224,7,193,216,15,15,0,0,240,112,4,28,0,0,56,48,0,56,0,0,12,0,0,224,15,240,6,0,0,96,127,254,7,0,0,49,224,15,142,0,0,27,128,1,220,0,0,31,0,0,120,0,0,12,0,0,48,0,0,0,7,224,0,0,0,0,31,248,0,0,0,0,120,30,0,0,0,0,224,7,0,0,0,0,112,14,0,0,0,0,56,28,0,0,0,0,28,56,0,0,0,0,14,112,0,0,0,0,7,224,0,0,0,0,3,192,0,0,0,0,1,128,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,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,31,248,0,0,0,1,255,255,192,0,0,31,128,3,248,0,0,124,0,0,62,0,0,224,0,0,7,128,3,128,0,0,1,192,14,0,63,252,0,112,28,1,255,255,128,56,56,15,128,3,240,28,96,60,0,0,60,6,224,112,0,0,14,7,113,192,7,240,3,142,59,128,127,255,1,220,31,3,224,15,192,248,12,7,0,0,240,48,0,28,0,0,56,0,0,56,0,0,12,0,0,224,7,240,6,0,0,224,63,254,7,0,0,112,240,15,14,0,0,59,128,1,220,0,0,31,0,0,248,0,0,14,0,0,48,0,0,0,0,0,0,0,0,0,1,128,0,0,0,0,31,248,0,0,0,0,62,124,0,0,0,0,240,15,0,0,0,0,96,7,0,0,0,0,112,14,0,0,0,0,56,28,0,0,0,0,28,56,0,0,0,0,14,112,0,0,0,0,7,224,0,0,0,0,3,192,0,0,0,0,1,128,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,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,63,254,0,0,0,3,255,255,192,0,0,31,128,1,248,0,0,120,0,0,62,0,1,224,0,0,7,128,7,128,0,0,1,224,14,0,63,254,0,112,28,1,255,255,192,24,112,15,128,1,240,12,224,60,0,0,60,7,224,240,0,0,15,7,113,192,0,0,3,142,59,128,0,0,1,220,31,0,0,0,0,120,12,0,0,0,0,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,240,0,0,0,0,127,254,0,0,0,1,224,7,128,0,0,7,0,0,224,0,0,14,0,0,112,0,0,28,15,240,56,0,0,12,63,252,56,0,0,6,224,7,112,0,0,7,192,3,224,0,0,3,0,0,192,0,0,0,15,240,0,0,0,0,63,252,0,0,0,0,112,14,0,0,0,0,224,7,0,0,0,0,112,14,0,0,0,0,56,28,0,0,0,0,28,56,0,0,0,0,14,112,0,0,0,0,7,224,0,0,0,0,3,192,0,0,0,0,1,128,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},
{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,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,63,252,0,0,0,1,248,63,128,0,0,7,0,1,224,0,0,28,0,0,56,0,0,112,15,240,14,0,0,224,127,255,3,0,1,131,192,3,193,128,3,7,0,0,224,192,1,156,0,0,57,128,0,240,0,0,15,0,0,96,0,0,6,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,240,0,0,0,0,28,56,0,0,0,0,127,254,0,0,0,0,255,255,0,0,0,0,112,14,0,0,0,0,224,7,0,0,0,0,112,14,0,0,0,0,56,28,0,0,0,0,28,56,0,0,0,0,14,112,0,0,0,0,7,224,0,0,0,0,3,192,0,0,0,0,1,128,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,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,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,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,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,1,0,0,0,0,0,28,120,0,0,0,0,96,134,0,0,0,0,142,113,0,0,0,0,179,197,128,0,0,0,127,255,0,0,0,0,60,60,0,0,0,0,240,15,0,0,0,0,96,6,0,0,0,0,48,12,0,0,0,0,24,24,0,0,0,0,12,48,0,0,0,0,6,112,0,0,0,0,7,224,0,0,0,0,3,192,0,0,0,0,1,128,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,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,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,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,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,15,240,0,0,0,0,63,252,0,0,0,0,112,14,0,0,0,0,224,7,0,0,0,0,112,14,0,0,0,0,56,28,0,0,0,0,28,56,0,0,0,0,14,112,0,0,0,0,7,224,0,0,0,0,3,192,0,0,0,0,1,128,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,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,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,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,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,15,240,0,0,0,0,31,248,0,0,0,0,112,14,0,0,0,0,224,7,0,0,0,0,112,14,0,0,0,0,56,28,0,0,0,0,28,56,0,0,0,0,14,112,0,0,0,0,7,224,0,0,0,0,3,192,0,0,0,0,1,128,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},
{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,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,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,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,0,0,0,0,0,0,15,240,0,0,0,0,31,248,0,0,0,0,112,14,0,0,0,0,224,7,0,0,0,0,112,14,0,0,0,0,56,28,0,0,0,0,28,56,0,0,0,0,14,112,0,0,0,0,7,224,0,0,0,0,3,192,0,0,0,0,1,128,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},
{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,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,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,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,0,0,0,0,0,0,15,240,0,0,0,0,31,248,0,0,0,0,112,14,0,0,0,0,224,7,0,0,0,0,112,14,0,0,0,0,56,28,0,0,0,0,28,56,0,0,0,0,14,112,0,0,0,0,7,224,0,0,0,0,3,192,0,0,0,0,1,128,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},
{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,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,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,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,0,0,0,0,0,0,15,240,0,0,0,0,31,248,0,0,0,0,112,14,0,0,0,0,224,7,0,0,0,0,112,14,0,0,0,0,56,28,0,0,0,0,28,56,0,0,0,0,14,112,0,0,0,0,7,224,0,0,0,0,3,192,0,0,0,0,1,128,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},
{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,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,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,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,0,0,0,0,0,0,15,240,0,0,0,0,31,248,0,0,0,0,112,14,0,0,0,0,224,7,0,0,0,0,112,14,0,0,0,0,56,28,0,0,0,0,28,56,0,0,0,0,14,112,0,0,0,0,7,224,0,0,0,0,3,192,0,0,0,0,1,128,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},
{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,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,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,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,0,0,0,0,0,0,15,240,0,0,0,0,31,248,0,0,0,0,112,14,0,0,0,0,224,7,0,0,0,0,112,14,0,0,0,0,56,28,0,0,0,0,28,56,0,0,0,0,14,112,0,0,0,0,7,224,0,0,0,0,3,192,0,0,0,0,1,128,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},
{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,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,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,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,0,0,0,0,0,0,15,240,0,0,0,0,31,248,0,0,0,0,112,14,0,0,0,0,224,7,0,0,0,0,112,14,0,0,0,0,56,28,0,0,0,0,28,56,0,0,0,0,14,112,0,0,0,0,7,224,0,0,0,0,3,192,0,0,0,0,1,128,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},
{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,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,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,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,15,240,0,0,0,0,49,140,0,0,0,0,95,250,0,0,0,0,255,255,0,0,0,0,112,14,0,0,0,0,224,7,0,0,0,0,112,14,0,0,0,0,56,28,0,0,0,0,28,56,0,0,0,0,14,112,0,0,0,0,7,224,0,0,0,0,3,192,0,0,0,0,1,128,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,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,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,248,0,0,0,0,255,255,0,0,0,3,192,3,192,0,0,7,0,128,224,0,0,28,31,252,56,0,0,56,240,31,12,0,0,115,128,1,206,0,0,55,0,0,252,0,0,28,0,0,56,0,0,8,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,240,0,0,0,0,63,252,0,0,0,0,124,62,0,0,0,0,240,15,0,0,0,0,96,6,0,0,0,0,48,12,0,0,0,0,24,24,0,0,0,0,12,48,0,0,0,0,6,112,0,0,0,0,7,224,0,0,0,0,3,192,0,0,0,0,1,128,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,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,127,254,0,0,0,3,254,127,224,0,0,31,0,0,248,0,0,120,0,0,30,0,0,224,0,0,7,0,3,128,63,252,1,192,7,1,255,255,128,224,14,7,128,3,224,112,28,30,0,0,120,56,12,120,0,0,28,56,6,224,0,0,7,112,7,192,0,0,3,224,3,128,0,0,0,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,128,0,0,0,0,63,252,0,0,0,0,248,31,0,0,0,1,192,3,128,0,0,3,131,224,192,0,0,3,31,248,192,0,0,1,240,15,128,0,0,0,239,247,0,0,0,0,63,252,0,0,0,0,112,14,0,0,0,0,224,7,0,0,0,0,112,14,0,0,0,0,56,28,0,0,0,0,28,56,0,0,0,0,14,112,0,0,0,0,7,224,0,0,0,0,3,192,0,0,0,0,1,128,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,254,0,0,0,3,255,255,192,0,0,31,128,1,248,0,0,120,0,0,62,0,1,224,0,0,7,128,7,128,0,0,1,224,14,0,63,254,0,112,28,1,255,255,192,24,112,15,128,1,240,12,224,60,0,0,60,7,224,240,0,0,15,7,113,192,0,0,3,142,59,128,0,0,1,220,31,0,0,0,0,120,12,0,0,0,0,48,0,0,15,248,0,0,0,0,255,255,0,0,0,1,224,7,192,0,0,7,0,0,224,0,0,28,0,0,48,0,0,56,7,224,28,0,0,56,63,252,12,0,0,24,252,63,24,0,0,15,192,3,248,0,0,7,128,1,240,0,0,2,0,0,96,0,0,0,0,0,0,0,0,0,15,240,0,0,0,0,63,252,0,0,0,0,112,14,0,0,0,0,224,7,0,0,0,0,112,14,0,0,0,0,56,28,0,0,0,0,28,56,0,0,0,0,14,112,0,0,0,0,7,224,0,0,0,0,3,192,0,0,0,0,1,128,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},
{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,31,248,0,0,0,1,255,255,192,0,0,31,128,3,248,0,0,124,0,0,62,0,0,224,0,0,7,128,3,128,0,0,1,192,14,0,63,252,0,112,28,1,255,255,128,56,56,15,128,3,240,28,96,60,0,0,60,6,224,112,0,0,14,7,113,192,7,240,3,142,59,128,127,255,1,220,31,3,224,15,192,248,12,7,0,0,240,48,0,28,0,0,56,0,0,56,0,0,12,0,0,224,7,240,6,0,0,224,63,254,7,0,0,112,240,15,14,0,0,59,128,1,220,0,0,31,0,0,248,0,0,14,0,0,48,0,0,0,0,0,0,0,0,0,1,128,0,0,0,0,31,248,0,0,0,0,62,124,0,0,0,0,240,15,0,0,0,0,96,7,0,0,0,0,112,14,0,0,0,0,56,28,0,0,0,0,28,56,0,0,0,0,14,112,0,0,0,0,7,224,0,0,0,0,3,192,0,0,0,0,1,128,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,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,63,254,0,0,0,1,255,255,192,0,0,31,128,1,248,0,0,120,0,0,62,0,1,224,0,0,7,128,3,128,0,0,1,192,14,0,63,254,0,112,28,3,255,255,192,56,56,15,128,1,240,12,96,60,0,0,60,6,96,240,15,240,14,6,49,192,127,255,3,140,27,131,224,7,193,216,15,15,0,0,240,112,4,28,0,0,56,48,0,56,0,0,12,0,0,224,15,240,6,0,0,96,127,254,7,0,0,49,224,15,142,0,0,27,128,1,220,0,0,31,0,0,120,0,0,12,0,0,48,0,0,0,7,224,0,0,0,0,31,248,0,0,0,0,120,30,0,0,0,0,224,7,0,0,0,0,112,14,0,0,0,0,56,28,0,0,0,0,28,56,0,0,0,0,14,112,0,0,0,0,7,224,0,0,0,0,3,192,0,0,0,0,1,128,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,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,0,0,0,0,0,0,0,0,0,0,0,0,127,254,0,0,0,3,255,255,224,0,0,31,0,1,248,0,0,120,0,0,30,0,1,224,0,0,7,128,7,128,0,0,1,224,14,0,127,254,0,112,28,3,252,63,192,56,48,15,0,1,240,12,224,56,0,0,28,7,96,240,0,0,15,6,49,192,63,252,3,140,31,129,254,127,128,248,14,7,128,3,224,112,4,14,0,0,112,32,0,56,0,0,28,0,0,112,1,192,14,0,0,224,63,252,7,0,0,112,248,31,14,0,0,57,192,3,156,0,0,31,0,0,248,0,0,14,0,0,112,0,0,0,15,240,0,0,0,0,31,248,0,0,0,0,120,30,0,0,0,0,224,7,0,0,0,0,112,14,0,0,0,0,56,28,0,0,0,0,28,56,0,0,0,0,14,112,0,0,0,0,7,224,0,0,0,0,3,192,0,0,0,0,1,128,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,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,0,0,0,0,0,0,127,254,0,0,0,3,255,255,224,0,0,31,0,1,248,0,0,120,0,0,30,0,1,224,0,0,7,128,7,128,0,0,1,224,14,0,127,254,0,112,28,3,252,63,192,56,48,15,0,1,240,12,224,56,0,0,28,7,96,240,0,0,15,6,49,192,3,224,3,140,31,128,127,254,0,248,14,1,240,15,128,112,4,7,0,0,224,32,0,28,0,0,56,0,0,56,0,0,28,0,0,112,7,240,6,0,0,96,63,254,7,0,0,48,240,15,14,0,0,27,128,1,220,0,0,15,0,0,248,0,0,6,0,0,48,0,0,0,15,240,0,0,0,0,31,248,0,0,0,0,112,14,0,0,0,0,224,7,0,0,0,0,112,14,0,0,0,0,56,28,0,0,0,0,28,56,0,0,0,0,14,112,0,0,0,0,7,224,0,0,0,0,3,192,0,0,0,0,1,128,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},
{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,127,254,0,0,0,3,255,255,224,0,0,31,0,1,248,0,0,120,0,0,30,0,1,224,0,0,7,128,7,128,0,0,1,224,14,0,127,254,0,112,28,3,252,63,192,56,48,15,0,1,240,12,224,56,0,0,28,7,96,240,0,0,15,6,49,192,3,224,3,140,31,128,127,254,0,248,14,1,240,15,128,112,4,7,0,0,224,32,0,28,0,0,56,0,0,56,0,0,28,0,0,112,7,240,6,0,0,96,63,254,7,0,0,48,240,15,14,0,0,27,128,1,220,0,0,15,0,0,248,0,0,6,0,0,48,0,0,0,15,240,0,0,0,0,31,248,0,0,0,0,112,14,0,0,0,0,224,7,0,0,0,0,112,14,0,0,0,0,56,28,0,0,0,0,28,56,0,0,0,0,14,112,0,0,0,0,7,224,0,0,0,0,3,192,0,0,0,0,1,128,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},
{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,127,254,0,0,0,3,255,255,224,0,0,31,0,1,248,0,0,120,0,0,30,0,1,224,0,0,7,128,7,128,0,0,1,224,14,0,127,254,0,112,28,3,252,63,192,56,48,15,0,1,240,12,224,56,0,0,28,7,96,240,0,0,15,6,49,192,3,224,3,140,31,128,127,254,0,248,14,1,240,15,128,112,4,7,0,0,224,32,0,28,0,0,56,0,0,56,0,0,28,0,0,112,7,240,6,0,0,96,63,254,7,0,0,48,240,15,14,0,0,27,128,1,220,0,0,15,0,0,248,0,0,6,0,0,48,0,0,0,15,240,0,0,0,0,31,248,0,0,0,0,112,14,0,0,0,0,224,7,0,0,0,0,112,14,0,0,0,0,56,28,0,0,0,0,28,56,0,0,0,0,14,112,0,0,0,0,7,224,0,0,0,0,3,192,0,0,0,0,1,128,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}
};
void setup() {
Serial.begin(115200);
Wire.begin(8, 9);
WiFi.mode(WIFI_STA);
if (esp_now_init() != ESP_OK) {
Serial.println("Error initializing ESP-NOW");
return;
}
if (!display1.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("Error: SSD1306 allocation failed."));
for (;;);
}
esp_now_register_recv_cb(OnDataRecv);
if (!TinyUSBDevice.isInitialized()) {
TinyUSBDevice.begin(0);
}
usb_midi.setStringDescriptor("TinyUSB MIDI");
MIDI.begin(MIDI_CHANNEL_OMNI);
if (TinyUSBDevice.mounted()) {
TinyUSBDevice.detach();
delay(10);
TinyUSBDevice.attach();
}
USB.begin();
Keyboard.begin();
Mouse.begin();
Serial.println("USB HID Keyboard ready");
display1.clearDisplay();
display1.display();
}
int frame = 0;
void loop() {
display1.clearDisplay();
display1.drawBitmap(40, 8, frames[frame], FRAME_WIDTH, FRAME_HEIGHT, 1);
display1.display();
frame = (frame + 1) % FRAME_COUNT;
delay(FRAME_DELAY);
}
I also tried using an older version of TinyUSB but nothing wanted to compile.
Is it possible to use USB MIDI on an ESP32-S3 with Platformio?