#pragma once #include #include #include "midi_transport.h" class BleMidiTransport { public: BleMidiTransport(); ~BleMidiTransport(); bool begin(); void update(); void on_midi_receive(std::function callback); void send_note_on(uint8_t channel, uint8_t note, uint8_t velocity); void send_note_off(uint8_t channel, uint8_t note, uint8_t velocity); void send_cc(uint8_t channel, uint8_t cc, uint8_t value); bool is_connected(); 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 receive_callback; bool initialized; bool client_connected; };