Skip to content

Releases: sauloverissimo/ESP32_Host_MIDI

Release 2.0.0

07 Mar 03:02
Compare
Choose a tag to compare

🚀 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() and println() 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?

  1. Download the updated library files and replace the old ones.
  2. Check your code:
    • If you were using onMidiMessage() directly, now you should override onMidiDataReceived() in USB_Conexion or BLE_Conexion.
    • To display MIDI messages on ST7789, use print() and println() in ST7789_Handler.
    • To manage event history, enable PSRAM storage via enableHistory() in MIDI_Handler.

🛠️ 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

12 Feb 02:02
Compare
Choose a tag to compare

🎵 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 to keywords.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 inside examples/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

  1. Remove any previous versions of the library from your Arduino libraries folder.
  2. Download the latest ESP32_Host_MIDI v1.0.3 release ZIP.
  3. Extract and add it to your Arduino libraries folder.
  4. 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

10 Feb 10:27
4da8f21
Compare
Choose a tag to compare

🎉 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

  1. 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.
  2. 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

  1. 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).
  2. User-Friendly Interface

    • Clean and intuitive layout designed with LovyanGFX.
    • Provides real-time visual feedback for received MIDI data.

Integration with PCM5102A DAC

  1. MIDI Audio Output
    • Converts MIDI messages into audio signals via the PCM5102A DAC.
    • Supports basic sound synthesis capabilities.

Advanced MIDI Handling

  1. Automatic MIDI Routing

    • Routes MIDI messages between USB and BLE.
    • Functions as a bridge for MIDI communication across devices.
  2. Message Filtering and Processing

    • Customizable filtering and processing of incoming MIDI messages for advanced applications.

Ease of Use

  1. 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.
  2. Comprehensive Documentation

    • Updated README.md with step-by-step instructions.
    • Clear explanation of library components and how to use them.

📄 How to Update

  1. Download the latest ZIP file attached to this release.
  2. Extract the contents and add the folder to your Arduino libraries directory.
  3. Restart the Arduino IDE and access the examples to get started.

Let me know if you'd like further adjustments! 😊

1st Version

10 Feb 02:35
Compare
Choose a tag to compare

🎉 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

  1. 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.
  2. 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

  1. 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).
  2. User-Friendly Interface

    • Clean and intuitive layout designed with LovyanGFX.
    • Provides real-time visual feedback for received MIDI data.

Integration with PCM5102A DAC

  1. MIDI Audio Output
    • Converts MIDI messages into audio signals via the PCM5102A DAC.
    • Supports basic sound synthesis capabilities.

Advanced MIDI Handling

  1. Automatic MIDI Routing

    • Routes MIDI messages between USB and BLE.
    • Functions as a bridge for MIDI communication across devices.
  2. Message Filtering and Processing

    • Customizable filtering and processing of incoming MIDI messages for advanced applications.

Ease of Use

  1. 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.
  2. Comprehensive Documentation

    • Updated README.md with step-by-step instructions.
    • Clear explanation of library components and how to use them.

📄 How to Update

  1. Download the latest ZIP file attached to this release.
  2. Extract the contents and add the folder to your Arduino libraries directory.
  3. Restart the Arduino IDE and access the examples to get started.

Let me know if you'd like further adjustments! 😊