main.cpp@0:99a8a5ec3e56, 2017-08-10 (annotated)
- Committer:
- mistery
- Date:
- Thu Aug 10 14:22:05 2017 +0000
- Revision:
- 0:99a8a5ec3e56
Who changed what in which revision?
User | Revision | Line number | New 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(¬e, 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 | } |