104 std::function<void(
const std::string& peripheral_id,
141 virtual bool connect(
const std::string& peripheral_id) = 0;
142 virtual void disconnect(
const std::string& peripheral_id) = 0;
171 "03B80E5A-EDE8-4B33-A751-6CE34EC4C700";
173 "7772E5DB-3868-4112-A1A9-F2669D106BF3";
182 std::function<void(
const std::vector<uint8_t>& bytes,
183 uint32_t timestamp_ms)>;
191 bool decode(
const uint8_t* data, std::size_t size);
200 uint8_t last_status_ = 0;
203 std::vector<uint8_t> sysex_buffer_;
205 uint8_t last_header_ts_ = 0;
214 uint32_t timestamp_ms);
Cross-platform BLE MIDI central.
Definition ble_midi.hpp:112
virtual ~BleMidiCentral()=default
virtual std::string midi_input_port_for(const std::string &peripheral_id) const =0
MIDI port-id that MidiSystem::enumerate_inputs() returns once the peripheral is Connected.
virtual bool connect(const std::string &peripheral_id)=0
Begin a connection.
virtual void disconnect(const std::string &peripheral_id)=0
virtual std::string midi_output_port_for(const std::string &peripheral_id) const =0
virtual bool start_scan(BleMidiScanCallback callback)=0
Start scanning.
virtual bool is_scanning() const =0
virtual void stop_scan()=0
virtual bool is_available() const =0
True if the running platform has a BLE MIDI backend compiled in AND the user/system has granted Bluet...
virtual void set_state_callback(BleMidiStateCallback callback)=0
virtual std::vector< BleMidiPeripheral > known_peripherals() const =0
Snapshot of peripherals currently known to the central.
Stateful decoder.
Definition ble_midi.hpp:179
void reset()
Reset running status + the in-flight sysex buffer.
void set_message_callback(MessageCallback cb)
Definition ble_midi.hpp:185
std::function< void(const std::vector< uint8_t > &bytes, uint32_t timestamp_ms)> MessageCallback
Definition ble_midi.hpp:181
bool decode(const uint8_t *data, std::size_t size)
Feed one notification packet.
Definition custom_node_events.hpp:26
BleMidiError
Backend-reported error code.
Definition ble_midi.hpp:85
@ ConnectFailed
Scan never produced the requested id.
Definition ble_midi.hpp:91
@ PermissionDenied
Definition ble_midi.hpp:87
@ PeripheralNotFound
Platform has no BLE MIDI backend wired.
Definition ble_midi.hpp:90
@ ServiceNotFound
CB / GATT connect attempt failed.
Definition ble_midi.hpp:92
@ None
Definition ble_midi.hpp:86
@ BluetoothOff
User declined Bluetooth permission.
Definition ble_midi.hpp:88
@ Unsupported
Adapter is off / unavailable.
Definition ble_midi.hpp:89
@ Timeout
Peripheral does not expose BLE-MIDI service.
Definition ble_midi.hpp:93
std::function< void(const std::string &peripheral_id, BleMidiConnectionState state, BleMidiError error)> BleMidiStateCallback
Callback for connection-state changes against a specific peripheral id.
Definition ble_midi.hpp:103
std::function< void(const BleMidiPeripheral &)> BleMidiScanCallback
Callback fired each time the scanner observes a peripheral that advertises the BLE-MIDI service UUID.
Definition ble_midi.hpp:99
BleMidiConnectionState
Connection state for an attempted BLE pairing.
Definition ble_midi.hpp:72
@ Connected
Definition ble_midi.hpp:76
@ Scanning
Definition ble_midi.hpp:74
@ Failed
Definition ble_midi.hpp:78
@ Connecting
Definition ble_midi.hpp:75
@ Idle
Definition ble_midi.hpp:73
@ Disconnected
Definition ble_midi.hpp:77
std::vector< uint8_t > encode_ble_midi_packet(const uint8_t *msg, std::size_t size, uint32_t timestamp_ms)
Encode a single MIDI message into a BLE-MIDI packet using timestamp timestamp_ms (truncated to 13 bit...
std::unique_ptr< BleMidiCentral > create_ble_midi_central()
Create the BLE MIDI central for the current platform.
SequencerStateChannel is the audio-safe transport for a plugin's structured NON-parameter state: the ...
Definition audio_device_manager.hpp:48
One BLE peripheral that advertises the BLE-MIDI service.
Definition ble_midi.hpp:55
std::string name
Definition ble_midi.hpp:57
bool is_paired
True if the OS already has a bond/pairing for this peripheral.
Definition ble_midi.hpp:67
std::chrono::steady_clock::time_point last_seen
Monotonic time the peripheral was last seen in a scan response.
Definition ble_midi.hpp:63
std::string id
Definition ble_midi.hpp:56
int rssi
Last-seen RSSI in dBm. 0 if the backend doesn't report it.
Definition ble_midi.hpp:59
The well-known service / characteristic UUIDs (16-byte big-endian).
Definition ble_midi.hpp:169
static constexpr const char * kCharacteristic
Definition ble_midi.hpp:172
static constexpr const char * kService
Definition ble_midi.hpp:170