/ESP32-BLE-MIDI

An Arduino library to use Midi over BLE (Bluetooth Low Energy), on ESP32 boards

Primary LanguageC++MIT LicenseMIT

ESP32-BLE-MIDI

An Arduino library to use Midi over Bluetooth Low Energy (BLE) on ESP32 boards.

Quick start

#include <Arduino.h>
#include <BLEMidi.h>

void setup() {
  Serial.begin(115200);
  Serial.println("Initializing bluetooth");
  BLEMidiServer.begin("Basic MIDI device");
  Serial.println("Waiting for connections...");
  //BLEMidiServer.enableDebugging();  // Uncomment if you want to see some debugging output from the library
}

void loop() {
  if(BLEMidiServer.isConnected()) {             // If we've got a connection, we send an A4 during one second, at full velocity (127)
      BLEMidiServer.noteOn(0, 69, 127);
      delay(1000);
      BLEMidiServer.noteOff(0, 69, 127);        // Then we stop the note and make a delay of one second before returning to the beginning of the loop
      delay(1000);
  }
}

Check the header file here to view all available MIDI commands and callbacks.

Changes

  • 2022-01-23

  • v0.2.2

    • 2021-09-20
      • Bug corrections : connection/disconnection callbacks weren't called when they where set up after BLEMidiServer.begin(), and no more connection were accepted after a disconnection. Thanks to Kim for the information provided.
  • v0.2.1

    • 2021-03-16
      • Bug correction : the WDT used to reset the ESP32 when lots of messages were received, because the IDLE task didn't have time to call esp_task_wdt_reset
  • v0.2.0

    • 2021-03-12
      • Implemented support for running status messages
    • 2021-03-13
      • After touch support
  • v0.1.2

    • 2021-03-02
      • Added pitch bend callback
      • Added a range parameter for pitch bend sending
    • 2021-03-11
      • Added an a new overload for pitch bend sending
  • v0.1.1

    • 2020-12-29
    • 2020-12-30
      • Implemented packet timestamps

Future work

  • Add some more examples

  • Add documentation, with Doxygen ?

  • Add keywords.txt for Arduino IDE

  • Add support for realtime messages ?

  • Add debugging messages in BLEMidiServer ?

  • Better debug function

Thanks

Thanks to the authors of those pages / pieces of code :

Message to users

If you make some noise with it, I would be glad to see your projects ! Don't hesitate to drop me an e-mail.