po

Dependencies:   ArduinoHAL mbed-src-nrf51822

Committer:
siridjen
Date:
Tue Nov 24 22:18:32 2015 +0000
Revision:
0:03c039c2a00d
potonciometer1

Who changed what in which revision?

UserRevisionLine numberNew contents of line
siridjen 0:03c039c2a00d 1 // MIDI Elements button class
siridjen 0:03c039c2a00d 2 // Library to simplifly handling of compontents for MIDI controllers
siridjen 0:03c039c2a00d 3 // Created by Tomash Ghz
siridjen 0:03c039c2a00d 4 // www.tomashg.com
siridjen 0:03c039c2a00d 5 // ghz.tomash@gmail.com
siridjen 0:03c039c2a00d 6
siridjen 0:03c039c2a00d 7 #include "Button.h"
siridjen 0:03c039c2a00d 8
siridjen 0:03c039c2a00d 9 //-----------------------------------------------------------------------------------
siridjen 0:03c039c2a00d 10 // constructor
siridjen 0:03c039c2a00d 11 Button::Button(byte p){
siridjen 0:03c039c2a00d 12 Button(8,0,0,false,true);
siridjen 0:03c039c2a00d 13 }
siridjen 0:03c039c2a00d 14
siridjen 0:03c039c2a00d 15 Button::Button(byte p, byte c, byte n){
siridjen 0:03c039c2a00d 16 Button(9,c,n,false,false);
siridjen 0:03c039c2a00d 17 }
siridjen 0:03c039c2a00d 18
siridjen 0:03c039c2a00d 19 Button::Button(byte p, byte c, byte n, bool sec){
siridjen 0:03c039c2a00d 20 Button(5,c,n,sec,false);
siridjen 0:03c039c2a00d 21 }
siridjen 0:03c039c2a00d 22
siridjen 0:03c039c2a00d 23 Button::Button(byte p, byte c, byte n, bool sec, bool debug){ // pin, number, channel
siridjen 0:03c039c2a00d 24 pin=p;
siridjen 0:03c039c2a00d 25 number=n;
siridjen 0:03c039c2a00d 26 channel=c;
siridjen 0:03c039c2a00d 27 secondary=sec;
siridjen 0:03c039c2a00d 28 debugging=debug;
siridjen 0:03c039c2a00d 29 velocity=127;
siridjen 0:03c039c2a00d 30
siridjen 0:03c039c2a00d 31 pinMode(pin, INPUT_PULLUP); // enable the pin for input
siridjen 0:03c039c2a00d 32
siridjen 0:03c039c2a00d 33 bButn = new MIDIBounce(pin, 10); // create new bounce object for pin
siridjen 0:03c039c2a00d 34 }
siridjen 0:03c039c2a00d 35
siridjen 0:03c039c2a00d 36 // destructor
siridjen 0:03c039c2a00d 37 Button::~Button(){
siridjen 0:03c039c2a00d 38 delete bButn;
siridjen 0:03c039c2a00d 39 }
siridjen 0:03c039c2a00d 40
siridjen 0:03c039c2a00d 41 // read
siridjen 0:03c039c2a00d 42 void Button::read(){
siridjen 0:03c039c2a00d 43 if (bButn->update()) {//state changed
siridjen 0:03c039c2a00d 44
siridjen 0:03c039c2a00d 45 if (bButn->read()==LOW) {//is pressed
siridjen 0:03c039c2a00d 46 noteOnOff(true);
siridjen 0:03c039c2a00d 47 }
siridjen 0:03c039c2a00d 48 else {
siridjen 0:03c039c2a00d 49 noteOnOff(false);
siridjen 0:03c039c2a00d 50 }
siridjen 0:03c039c2a00d 51 }
siridjen 0:03c039c2a00d 52 }
siridjen 0:03c039c2a00d 53
siridjen 0:03c039c2a00d 54 // read value
siridjen 0:03c039c2a00d 55 bool Button::readValue(bool &changed){
siridjen 0:03c039c2a00d 56 changed=bButn->update(); //state changed
siridjen 0:03c039c2a00d 57
siridjen 0:03c039c2a00d 58 if (bButn->read()==LOW) {//is pressed
siridjen 0:03c039c2a00d 59 return true;
siridjen 0:03c039c2a00d 60 }
siridjen 0:03c039c2a00d 61 else {
siridjen 0:03c039c2a00d 62 return false;
siridjen 0:03c039c2a00d 63 }
siridjen 0:03c039c2a00d 64 }
siridjen 0:03c039c2a00d 65
siridjen 0:03c039c2a00d 66 // set note on velocity
siridjen 0:03c039c2a00d 67 void Button::setVelocity(byte v){
siridjen 0:03c039c2a00d 68 velocity=v;
siridjen 0:03c039c2a00d 69 }
siridjen 0:03c039c2a00d 70
siridjen 0:03c039c2a00d 71 //send midinote on off
siridjen 0:03c039c2a00d 72 void Button::noteOnOff(bool v){
siridjen 0:03c039c2a00d 73 if(v){
siridjen 0:03c039c2a00d 74 if (debugging) {//debbuging enabled
siridjen 0:03c039c2a00d 75 Serial.print("Button ");
siridjen 0:03c039c2a00d 76 Serial.print(p);
siridjen 0:03c039c2a00d 77 Serial.println(" pressed.");
siridjen 0:03c039c2a00d 78 }
siridjen 0:03c039c2a00d 79 else{ // send midi note
siridjen 0:03c039c2a00d 80 usbMIDI.sendNoteOn(number, velocity, channel);
siridjen 0:03c039c2a00d 81 if(secondary)
siridjen 0:03c039c2a00d 82 usbMIDI.sendControlChange(number, 127, channel);
siridjen 0:03c039c2a00d 83 }
siridjen 0:03c039c2a00d 84 }
siridjen 0:03c039c2a00d 85 else{
siridjen 0:03c039c2a00d 86 if (debugging) {//debbuging enabled
siridjen 0:03c039c2a00d 87 Serial.print("Button ");
siridjen 0:03c039c2a00d 88 Serial.print(number);
siridjen 0:03c039c2a00d 89 Serial.println(" released.");
siridjen 0:03c039c2a00d 90 }
siridjen 0:03c039c2a00d 91 else{
siridjen 0:03c039c2a00d 92 if(secondary)
siridjen 0:03c039c2a00d 93 usbMIDI.sendControlChange(number, 0, channel);
siridjen 0:03c039c2a00d 94 usbMIDI.sendNoteOff(number, 0, channel);
siridjen 0:03c039c2a00d 95 }
siridjen 0:03c039c2a00d 96 }
siridjen 0:03c039c2a00d 97 }
siridjen 0:03c039c2a00d 98 //-----------------------------------------------------------------------------------