Dependencies:   BLE_MIDI

Committer:
mistery
Date:
Thu Aug 10 14:22:05 2017 +0000
Revision:
0:99a8a5ec3e56

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mistery 0:99a8a5ec3e56 1 #include "mbed.h"
mistery 0:99a8a5ec3e56 2 #include "BLEDevice.h"
mistery 0:99a8a5ec3e56 3 #include "BLEMIDI.h"
mistery 0:99a8a5ec3e56 4 #include "math.h"
mistery 0:99a8a5ec3e56 5
mistery 0:99a8a5ec3e56 6 BLEDevice device;
mistery 0:99a8a5ec3e56 7 BLEMIDI bleMidi(&device);
mistery 0:99a8a5ec3e56 8
mistery 0:99a8a5ec3e56 9 PwmOut sound(P0_6);
mistery 0:99a8a5ec3e56 10
mistery 0:99a8a5ec3e56 11 Ticker midinote;
mistery 0:99a8a5ec3e56 12
mistery 0:99a8a5ec3e56 13 void disconnectionCallback(Gap::Handle_t handle, Gap::DisconnectionReason_t reason) {
mistery 0:99a8a5ec3e56 14 bleMidi.onBleDisconnection(handle, reason);
mistery 0:99a8a5ec3e56 15 }
mistery 0:99a8a5ec3e56 16
mistery 0:99a8a5ec3e56 17 void connectionCallback(Gap::Handle_t handle, Gap::addr_type_t type, const Gap::address_t addr, const Gap::ConnectionParams_t *params) {
mistery 0:99a8a5ec3e56 18 bleMidi.onBleConnection(handle, type, addr, params);
mistery 0:99a8a5ec3e56 19 }
mistery 0:99a8a5ec3e56 20
mistery 0:99a8a5ec3e56 21 void onNoteOn(uint8_t channel, uint8_t note, uint8_t velocity) {
mistery 0:99a8a5ec3e56 22 sound.write(0.5f);
mistery 0:99a8a5ec3e56 23 sound.period(1.0f / (440.0f * (float)pow(2.0, (note - 69.0) / 12.0)));
mistery 0:99a8a5ec3e56 24 }
mistery 0:99a8a5ec3e56 25
mistery 0:99a8a5ec3e56 26 void onNoteOff(uint8_t channel, uint8_t note, uint8_t velocity) {
mistery 0:99a8a5ec3e56 27 sound.pulsewidth(0);
mistery 0:99a8a5ec3e56 28 }
mistery 0:99a8a5ec3e56 29
mistery 0:99a8a5ec3e56 30 void note(){
mistery 0:99a8a5ec3e56 31 bleMidi.sendNoteOn(0, 63, 127);
mistery 0:99a8a5ec3e56 32 }
mistery 0:99a8a5ec3e56 33
mistery 0:99a8a5ec3e56 34 int main(void) {
mistery 0:99a8a5ec3e56 35 device.onConnection(connectionCallback);
mistery 0:99a8a5ec3e56 36 device.onDisconnection(disconnectionCallback);
mistery 0:99a8a5ec3e56 37
mistery 0:99a8a5ec3e56 38 bleMidi.attachNoteOn(onNoteOn);
mistery 0:99a8a5ec3e56 39 bleMidi.attachNoteOff(onNoteOff);
mistery 0:99a8a5ec3e56 40 midinote.attach(&note, 2.0); // the address of the function to be attached (flip) and the interval (2 seconds)
mistery 0:99a8a5ec3e56 41
mistery 0:99a8a5ec3e56 42 for (;;) {
mistery 0:99a8a5ec3e56 43 device.waitForEvent();
mistery 0:99a8a5ec3e56 44
mistery 0:99a8a5ec3e56 45 }
mistery 0:99a8a5ec3e56 46 }