Switch from NimBLE-Arduino to ESP32-BLE-MIDI library

Replace direct NimBLE-Arduino dependency with max22/ESP32-BLE-MIDI
wrapper library (v0.3.2). Rewrite ble_midi_transport to use
BLEMidiServer API instead of raw NimBLEDevice calls.

Removes patch_nimble_device() from pre_build.py — no longer needed
since BT controller init is managed by the library internally.

The library uses NimBLE v1.4.1 internally and configures advertising
without setScanResponse() or setName(), which may resolve the invisible
BLE advertising issue on ESP32-S3.
This commit is contained in:
ash
2026-07-01 06:34:36 +00:00
parent 1517eda13e
commit 62d1e430d5
4 changed files with 67 additions and 276 deletions
+6 -4
View File
@@ -20,11 +20,13 @@ public:
bool is_connected();
void send_midi_packet(const uint8_t* data, uint8_t len);
void on_receive(const uint8_t* data, size_t len);
size_t parse_ble_midi(uint8_t status, const uint8_t* data, size_t len, size_t offset, MidiEvent& event);
private:
static void on_control_change(uint8_t channel, uint8_t controller, uint8_t value, uint16_t timestamp);
static void on_note_on(uint8_t channel, uint8_t note, uint8_t velocity, uint16_t timestamp);
static void on_note_off(uint8_t channel, uint8_t note, uint8_t velocity, uint16_t timestamp);
static void on_connect();
static void on_disconnect();
std::function<void(const MidiEvent&)> receive_callback;
bool initialized;
bool client_connected;