Releases: sauloverissimo/ESP32_Host_MIDI
Release 2.0.0
🚀 ESP32_Host_MIDI - Release 2.0 🎹📡
Welcome to version 2.0 of the ESP32_Host_MIDI library! This update brings significant improvements over the previous version, including performance optimizations, new features, and enhanced stability for MIDI communication via USB and BLE on the ESP32-S3 with T-Display S3.
🔥 Key Updates and Improvements
🏗️ Enhanced Modular Architecture
- Improved code structure for easier maintenance and expansion.
- Clear separation between USB MIDI, BLE MIDI, Display Output, and MIDI Processing modules.
🎛️ New MIDI Processing Queue
- The MIDI_Handler now uses a dynamic queue (
std::deque<MIDIEventData>
) to store MIDI events, providing more flexibility and better control over data flow. - Added an adjustable event limit to prevent overloading.
- Implemented PSRAM storage for MIDI event history to maintain a larger event buffer without impacting SRAM usage.
📡 Improved USB MIDI Host
- Reworked USB MIDI packet processing ensures that only the first 4 relevant bytes are used, reducing latency.
- Optimized USB message queue, increasing efficiency in handling received MIDI packets.
- New callback system for USB MIDI device connection and disconnection events.
- Optimized USB polling mechanism, improving real-time response and reducing CPU overhead.
📲 Enhanced BLE MIDI Support
- The ESP32 now functions as a stable and reliable BLE MIDI server.
- Direct callback for processing received BLE MIDI messages.
- Optimized BLE advertising for better compatibility with mobile MIDI apps.
- Enhanced BLE reconnection stability to minimize connection drops during extended use.
🎨 Improved MIDI Display Output
- Uses LovyanGFX for optimized rendering on the ST7789.
- New
print()
andprintln()
methods in ST7789_Handler:- Displays multi-line messages.
- Automatically highlights the last line for better separation of MIDI events.
- Reduces flickering by avoiding unnecessary screen refreshes.
🏎️ Performance Boost
- Better use of USB interrupts, reducing the load on the main loop.
- Removal of unnecessary delays, improving real-time MIDI event processing.
- Optimized chord and sequence detection, refining how simultaneous MIDI notes are classified.
- Faster event queuing and processing, reducing lag in MIDI visualization and response.
📂 Code Structure in Version 2.0
The new file structure is designed for modularity and clarity:
📁 /src/
USB_Conexion.h / USB_Conexion.cpp
→ Manages USB MIDI communication.BLE_Conexion.h / BLE_Conexion.cpp
→ Manages BLE MIDI communication.MIDI_Handler.h / MIDI_Handler.cpp
→ Interprets and organizes MIDI events.ESP32_Pin_Config.h
→ Defines ESP32 pin configurations.ST7789_Handler.h / ST7789_Handler.cpp
→ Manages display output.
📁 /examples/
- Complete example for T-Display S3, showcasing MIDI USB + BLE + Display integration.
⚡ How to Upgrade to Version 2.0?
- Download the updated library files and replace the old ones.
- Check your code:
- If you were using
onMidiMessage()
directly, now you should overrideonMidiDataReceived()
in USB_Conexion or BLE_Conexion. - To display MIDI messages on ST7789, use
print()
andprintln()
in ST7789_Handler. - To manage event history, enable PSRAM storage via
enableHistory()
in MIDI_Handler.
- If you were using
🛠️ How to Use the New Version?
1️⃣ Initialize USB MIDI Communication:
USB_Conexion usbMIDI;
usbMIDI.begin();
2️⃣ Initialize BLE MIDI Communication:
BLE_Conexion bleMIDI;
bleMIDI.begin();
3️⃣ Process MIDI in the Main Loop:
void loop() {
usbMIDI.task();
bleMIDI.task();
}
4️⃣ Display MIDI Messages on the Screen:
ST7789_Handler display;
display.init();
display.print("MIDI Active!");
🏆 Conclusion
This update significantly improves the stability, efficiency, and functionality of ESP32_Host_MIDI. If you were using the previous version, we highly recommend upgrading to take full advantage of all the new features and optimizations!
Thanks to the community for the feedback and suggestions! 🎶💙
📌 ESP32_Host_MIDI 2.0 - Faster, More Stable, More Complete! 🚀🎵
Release 1.0.3
🎵 ESP32_Host_MIDI v1.0.3 - Compliance Adjustments
🚀 What's New in This Release
This release includes minor adjustments to ensure compliance with Arduino Library Manager requirements.
🔧 Improvements & Fixes
- ✅ Renamed
keywords.txt.txt
tokeywords.txt
to follow the expected filename format. - ✅ Verified and confirmed
library.properties
structure for compatibility with Arduino's guidelines. - ✅ Ensured proper naming of the example sketch (
T-Display-S3.ino
insideexamples/T-Display-S3/
). - ✅ Checked and confirmed
LICENSE.txt
for correct licensing reference.
📜 Arduino Library Manager Compliance
These changes were made following suggestions from Arduino Lint to ensure that ESP32_Host_MIDI meets all Arduino Library Manager standards.
🛠 How to Update
- Remove any previous versions of the library from your Arduino libraries folder.
- Download the latest ESP32_Host_MIDI v1.0.3 release ZIP.
- Extract and add it to your Arduino libraries folder.
- Restart the Arduino IDE and access the examples.
This release ensures that the library remains stable and properly indexed in the Arduino Library Manager.
🚀 Thank you for your support and contributions! If you encounter any issues, feel free to open an issue in the GitHub repository.
Release 1.0.2
🎉 ESP32_Host_MIDI Release Notes
🚀 What's New in This Release
-
Added Full BLE MIDI Support
- The ESP32 now functions as a BLE MIDI server, enabling seamless wireless communication with Bluetooth MIDI devices.
- Supports sending and receiving MIDI messages over BLE.
-
Enhanced T-Display S3 Integration
- Improved display rendering using the LovyanGFX library.
- MIDI messages (e.g., notes, channels, and types) are displayed clearly on the screen for easy monitoring.
- New visual elements added for a user-friendly experience.
-
Fixed USB Host MIDI Management
- Resolved a bug causing instability with USB-connected MIDI devices.
- Improved reliability of USB MIDI detection and message routing.
✨ Features
MIDI Communication
-
USB MIDI Host
- Acts as a USB host for connected MIDI devices.
- Supports bidirectional MIDI communication (sending and receiving).
- Compatible with a variety of USB MIDI devices.
-
BLE MIDI Server
- Enables wireless MIDI communication via Bluetooth Low Energy (BLE).
- Send and receive MIDI messages between BLE MIDI devices.
- Automatically switches between BLE and USB MIDI as needed.
T-Display S3 Integration
-
Graphical Display of MIDI Messages
- Displays MIDI messages in real-time, organized by:
- Pitch (note played)
- Velocity
- MIDI Channel
- Message Type (e.g., Note ON/OFF, Program Change).
- Displays MIDI messages in real-time, organized by:
-
User-Friendly Interface
- Clean and intuitive layout designed with LovyanGFX.
- Provides real-time visual feedback for received MIDI data.
Integration with PCM5102A DAC
- MIDI Audio Output
- Converts MIDI messages into audio signals via the PCM5102A DAC.
- Supports basic sound synthesis capabilities.
Advanced MIDI Handling
-
Automatic MIDI Routing
- Routes MIDI messages between USB and BLE.
- Functions as a bridge for MIDI communication across devices.
-
Message Filtering and Processing
- Customizable filtering and processing of incoming MIDI messages for advanced applications.
Ease of Use
-
Examples Included
- Pre-built example for the T-Display S3, demonstrating full integration with the library.
- Ready-to-use sketches for testing in the Arduino IDE.
-
Comprehensive Documentation
- Updated
README.md
with step-by-step instructions. - Clear explanation of library components and how to use them.
- Updated
📄 How to Update
- Download the latest ZIP file attached to this release.
- Extract the contents and add the folder to your Arduino libraries directory.
- Restart the Arduino IDE and access the examples to get started.
Let me know if you'd like further adjustments! 😊
1st Version
🎉 ESP32_Host_MIDI Release Notes
🚀 What's New in This Release
-
Added Full BLE MIDI Support
- The ESP32 now functions as a BLE MIDI server, enabling seamless wireless communication with Bluetooth MIDI devices.
- Supports sending and receiving MIDI messages over BLE.
-
Enhanced T-Display S3 Integration
- Improved display rendering using the LovyanGFX library.
- MIDI messages (e.g., notes, channels, and types) are displayed clearly on the screen for easy monitoring.
- New visual elements added for a user-friendly experience.
-
Fixed USB Host MIDI Management
- Resolved a bug causing instability with USB-connected MIDI devices.
- Improved reliability of USB MIDI detection and message routing.
✨ Features
MIDI Communication
-
USB MIDI Host
- Acts as a USB host for connected MIDI devices.
- Supports bidirectional MIDI communication (sending and receiving).
- Compatible with a variety of USB MIDI devices.
-
BLE MIDI Server
- Enables wireless MIDI communication via Bluetooth Low Energy (BLE).
- Send and receive MIDI messages between BLE MIDI devices.
- Automatically switches between BLE and USB MIDI as needed.
T-Display S3 Integration
-
Graphical Display of MIDI Messages
- Displays MIDI messages in real-time, organized by:
- Pitch (note played)
- Velocity
- MIDI Channel
- Message Type (e.g., Note ON/OFF, Program Change).
- Displays MIDI messages in real-time, organized by:
-
User-Friendly Interface
- Clean and intuitive layout designed with LovyanGFX.
- Provides real-time visual feedback for received MIDI data.
Integration with PCM5102A DAC
- MIDI Audio Output
- Converts MIDI messages into audio signals via the PCM5102A DAC.
- Supports basic sound synthesis capabilities.
Advanced MIDI Handling
-
Automatic MIDI Routing
- Routes MIDI messages between USB and BLE.
- Functions as a bridge for MIDI communication across devices.
-
Message Filtering and Processing
- Customizable filtering and processing of incoming MIDI messages for advanced applications.
Ease of Use
-
Examples Included
- Pre-built example for the T-Display S3, demonstrating full integration with the library.
- Ready-to-use sketches for testing in the Arduino IDE.
-
Comprehensive Documentation
- Updated
README.md
with step-by-step instructions. - Clear explanation of library components and how to use them.
- Updated
📄 How to Update
- Download the latest ZIP file attached to this release.
- Extract the contents and add the folder to your Arduino libraries directory.
- Restart the Arduino IDE and access the examples to get started.
Let me know if you'd like further adjustments! 😊