Utility class for MIDI over Bluetooth LE
Dependencies: BLE_API mbed nRF51822
Using MIDI over Bluetooth LE
This class enables sending and receiving MIDI packets.
Set up an "BLEMIDI" class instance
Create an instance, and set up to start using it.
Initialization
#include "mbed.h" #include "BLEDevice.h" #include "BLEMIDI.h" BLEDevice device; BLEMIDI bleMidi(&device); void disconnectionCallback(Gap::Handle_t handle, Gap::DisconnectionReason_t reason) { bleMidi.onBleDisconnection(handle, reason); } void connectionCallback(Gap::Handle_t handle, Gap::addr_type_t type, const Gap::address_t addr, const Gap::ConnectionParams_t *params) { bleMidi.onBleConnection(handle, type, addr, params); } int main(void) { device.onConnection(connectionCallback); device.onDisconnection(disconnectionCallback); for (;;) { device.waitForEvent(); } }
Changing the device name
The default device name is 'MIDI'.
If the another name is preferred, use this constructor. The maximum length of device name is 4 bytes.
Constructor with device name
BLEDevice device; // BLEMIDI bleMidi(&device); BLEMIDI bleMidi(&device, "NAME");
Sending MIDI events
For example, send a note on event:
send a note on event
bleMidi.sendNoteOn(0, 63, 127);
About other events, see the BLEMIDI class reference.
Receiving MIDI events
For example, receive note on events:
receive note on events
void onNoteOn(uint8_t channel, uint8_t note, uint8_t velocity) { // do something with Note On event } bleMidi.attachNoteOn(onNoteOn);
About other events, see the BLEMIDI class reference.
main.cpp
- Committer:
- kshoji
- Date:
- 2015-04-02
- Revision:
- 0:83889dc90473
- Child:
- 1:cba2eba64f5c
File content as of revision 0:83889dc90473:
#include "mbed.h" #include "BLEDevice.h" #include "BLEMIDI.h" BLEDevice device; BLEMIDI bleMidi(&device); DigitalOut led1(P0_0); void disconnectionCallback(Gap::Handle_t handle, Gap::DisconnectionReason_t reason) { bleMidi.onBleDisconnection(handle, reason); } void connectionCallback(Gap::Handle_t handle, Gap::addr_type_t type, const Gap::address_t addr, const Gap::ConnectionParams_t *params) { bleMidi.onBleConnection(handle, type, addr, params); } void onNoteOn(uint8_t channel, uint8_t note, uint8_t velocity) { led1 = 1; // if (bleMidi.connected()) { // bleMidi.sendNoteOn(channel, note, velocity); // } } void onNoteOff(uint8_t channel, uint8_t note, uint8_t velocity) { led1 = 0; // if (bleMidi.connected()) { // bleMidi.sendNoteOff(channel, note, velocity); // } } int main(void) { device.onConnection(connectionCallback); device.onDisconnection(disconnectionCallback); bleMidi.attachNoteOn(onNoteOn); bleMidi.attachNoteOff(onNoteOff); for (;;) { device.waitForEvent(); } }