MIDI Cube #
MIDI Cube is a multi-transport MIDI Interface built on the ESP32-S3 platform. It bridges the gap between MIDI 1.0 devices and the modern MIDI 2.0 ecosystem.
The project seamlessly routes and translates MIDI messages between:
- USB (Device Mode via TinyUSB)
- UART (Classic DIN-5 MIDI 1.0)
- Network (MIDI 2.0 UMP over UDP via WiFi or Ethernet)
Features #
- USB MIDI: Acts as a standard USB MIDI Class compliant device.
- Serial MIDI: Classic 31.250 baud MIDI over UART.
- Network MIDI 2.0: UMP (Universal MIDI Packet) transport over UDP with session management and mDNS discovery (
_midi2._udp). - Ethernet: Low-latency wired connection support using W5500.
- WiFi: Wireless MIDI support for portable setups.
- Bi-directional Translation: Automatically converts between MIDI 1.0 byte streams and MIDI 2.0 UMP packets.
Hardware Requirements #
- MCU: Espressif ESP32-S3
- Ethernet: WIZnet W5500
Configuration #
Use the ESP-IDF configuration menu to set up your environment:
idf.py menuconfigKey Configuration Options: #
- MIDI WiFi Configuration:
- Set
SSIDandPasswordfor your network.
- MIDI Ethernet Configuration:
- Choose between
DHCPorStatic IP.
- MIDI UART Configuration:
- Default TX Pin:
GPIO 17 - Default RX Pin:
GPIO 16 - Baud Rate:
31250
- MIDI Network:
- Default Port:
5004
Build and Flash #
This project requires ESP-IDF v6.0.0.
- Build the project:
idf.py build- Flash to ESP32-S3:
idf.py -p (PORT) flash- Monitor Output:
idf.py monitorTODO #
-
Code Style: Refactor and standardize code style.
-
Latency: Optimization for critical paths.
-
MIDI Core:
-
Add Active Sensing support.
-
Robust System Exclusive (SysEx) support.
-
Network:
-
Add authentication to MIDI 2.0 sessions.
-
IPv6 support.
-
Forward Error Correction (FEC).