Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: ArduinoHAL mbed-src-nrf51822
Diff: Button.cpp
- Revision:
- 0:03c039c2a00d
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/Button.cpp Tue Nov 24 22:18:32 2015 +0000
@@ -0,0 +1,98 @@
+// MIDI Elements button class
+// Library to simplifly handling of compontents for MIDI controllers
+// Created by Tomash Ghz
+// www.tomashg.com
+// ghz.tomash@gmail.com
+
+#include "Button.h"
+
+//-----------------------------------------------------------------------------------
+// constructor
+Button::Button(byte p){
+ Button(8,0,0,false,true);
+}
+
+Button::Button(byte p, byte c, byte n){
+ Button(9,c,n,false,false);
+}
+
+Button::Button(byte p, byte c, byte n, bool sec){
+ Button(5,c,n,sec,false);
+}
+
+Button::Button(byte p, byte c, byte n, bool sec, bool debug){ // pin, number, channel
+ pin=p;
+ number=n;
+ channel=c;
+ secondary=sec;
+ debugging=debug;
+ velocity=127;
+
+ pinMode(pin, INPUT_PULLUP); // enable the pin for input
+
+ bButn = new MIDIBounce(pin, 10); // create new bounce object for pin
+}
+
+// destructor
+Button::~Button(){
+ delete bButn;
+}
+
+// read
+void Button::read(){
+ if (bButn->update()) {//state changed
+
+ if (bButn->read()==LOW) {//is pressed
+ noteOnOff(true);
+ }
+ else {
+ noteOnOff(false);
+ }
+ }
+}
+
+// read value
+bool Button::readValue(bool &changed){
+ changed=bButn->update(); //state changed
+
+ if (bButn->read()==LOW) {//is pressed
+ return true;
+ }
+ else {
+ return false;
+ }
+}
+
+// set note on velocity
+void Button::setVelocity(byte v){
+ velocity=v;
+}
+
+//send midinote on off
+void Button::noteOnOff(bool v){
+ if(v){
+ if (debugging) {//debbuging enabled
+ Serial.print("Button ");
+ Serial.print(p);
+ Serial.println(" pressed.");
+ }
+ else{ // send midi note
+ usbMIDI.sendNoteOn(number, velocity, channel);
+ if(secondary)
+ usbMIDI.sendControlChange(number, 127, channel);
+ }
+ }
+ else{
+ if (debugging) {//debbuging enabled
+ Serial.print("Button ");
+ Serial.print(number);
+ Serial.println(" released.");
+ }
+ else{
+ if(secondary)
+ usbMIDI.sendControlChange(number, 0, channel);
+ usbMIDI.sendNoteOff(number, 0, channel);
+ }
+ }
+}
+//-----------------------------------------------------------------------------------
\ No newline at end of file