diff --git a/NuEVI.ino b/NuEVI.ino index 2bcf4da..1fc8d71 100644 --- a/NuEVI.ino +++ b/NuEVI.ino @@ -7,6 +7,7 @@ #include #include // for the breath signal LP filtering, https://github.com/edgar-bonet/Filters +#include "hardware.h" #include "midi.h" /* @@ -27,99 +28,9 @@ PROGRAMME FUNCTION: EVI Wind Controller using the Freescale MP3V5004GP breath #define FIRMWARE_VERSION "1.3.2" // FIRMWARE VERSION NUMBER HERE <<<<<<<<<<<<<<<<<<<<<<< -#define REVB //#define CASSIDY -//Comment out the following line if you have Teensyduino 1.4.0 or earlier, to make pitch bend over USB-MIDI work. -#define NEWTEENSYDUINO - - -// Pin definitions - -// Teensy pins - -#define specialKeyPin 0 // SK or S2 -#define halfPitchBendKeyPin 1 // PD or S1 - -#define bitePin 17 -#define extraPin 16 -#define pbUpPin 23 -#define pbDnPin 22 -#define vibratoPin 15 - -#define breathSensorPin A0 - -#define dPin 3 -#define ePin 4 -#define uPin 5 -#define mPin 6 - -#define bLedPin 10 -#define pLedPin 9 -#define statusLedPin 13 - -#define vMeterPin A11 - -#define PBD 12 -#define UPWD 1 -#define DNWD 0 - -#if defined(REVB) - -// MPR121 pins Rev B (angled pins at top edge for main keys and rollers) - -#define R1Pin 0 -#define R2Pin 2 -#define R3Pin 4 -#define R4Pin 6 -#define R5Pin 8 - -#define K4Pin 10 -#define K1Pin 1 -#define K2Pin 3 -#define K3Pin 5 -#define K5Pin 7 -#define K6Pin 9 -#define K7Pin 11 - -/* - * PINOUT ON PCB vs PINS ON MPR121 - Rev. B - * - * (R1) (R2) (R3/6) (R4) (R5) (K4) <-> (00) (02) (04) (06) (08) (10) - * - * (K1) (K2) (K3) (K5) (K6) (K7) <-> (01) (03) (05) (07) (09) (11) - * - */ - -# else - -// MPR121 pins Rev A (upright pins below MPR121 for main keys and rollers) - -#define R1Pin 10 -#define R2Pin 11 -#define R3Pin 8 -#define R4Pin 9 -#define R5Pin 6 - -#define K4Pin 7 -#define K1Pin 4 -#define K2Pin 5 -#define K3Pin 2 -#define K5Pin 3 -#define K6Pin 0 -#define K7Pin 1 - -/* - * PINOUT ON PCB vs PINS ON MPR121 - Rev. A - * - * (R2) (R4) (K4) (K2) (K5) (K7) <-> (11) (09) (07) (05) (03) (01) - * - * (R1) (R3/6) (R5) (K1) (K3) (K6) <-> (10) (08) (06) (04) (02) (00) - * - */ - -#endif #define ON_Delay 20 // Set Delay after ON threshold before velocity is checked (wait for tounging peak) //#define touch_Thr 1200 // sensitivity for Teensy touch sensors @@ -820,35 +731,35 @@ void loop() { if (exSensor >= ((extracThrVal+extracMaxVal)/2)){ // instant midi setting if ((fingeredNoteUntransposed >= 73) && (fingeredNoteUntransposed <= 88)) { MIDIchannel = fingeredNoteUntransposed - 72; // Mid C and up - digitalWrite(13,LOW); + digitalWrite(statusLedPin, LOW); delay(150); - digitalWrite(13,HIGH); + digitalWrite(statusLedPin, HIGH); } } else { if (!pinkyKey){ // note number to patch number if (patch != fingeredNoteUntransposed){ patch = fingeredNoteUntransposed; doPatchUpdate = 1; - digitalWrite(13,LOW); + digitalWrite(statusLedPin, LOW); delay(150); - digitalWrite(13,HIGH); + digitalWrite(statusLedPin, HIGH); } } else { // hi and lo patch numbers if (fingeredNoteUntransposed > 75){ if (patch != patchLimit(fingeredNoteUntransposed + 24)){ patch = patchLimit(fingeredNoteUntransposed + 24); // add 24 to get high numbers 108 to 127 doPatchUpdate = 1; - digitalWrite(13,LOW); + digitalWrite(statusLedPin, LOW); delay(150); - digitalWrite(13,HIGH); + digitalWrite(statusLedPin, HIGH); } } else { if (patch != patchLimit(fingeredNoteUntransposed - 36)){ patch = patchLimit(fingeredNoteUntransposed - 36); // subtract 36 to get low numbers 0 to 36 doPatchUpdate = 1; - digitalWrite(13,LOW); + digitalWrite(statusLedPin, LOW); delay(150); - digitalWrite(13,HIGH); + digitalWrite(statusLedPin, HIGH); } } } diff --git a/hardware.h b/hardware.h new file mode 100644 index 0000000..1f8b222 --- /dev/null +++ b/hardware.h @@ -0,0 +1,100 @@ +#ifndef __HARDWARE_H +#define __HARDWARE_H + +#define REVB + +//Comment out the following line if you have Teensyduino 1.4.0 or earlier, to make pitch bend over USB-MIDI work. +#define NEWTEENSYDUINO + + +// Pin definitions + +// Teensy pins + +#define specialKeyPin 0 // SK or S2 +#define halfPitchBendKeyPin 1 // PD or S1 + +#define bitePin 17 +#define extraPin 16 +#define pbUpPin 23 +#define pbDnPin 22 +#define vibratoPin 15 + +#define breathSensorPin A0 + +#define dPin 3 +#define ePin 4 +#define uPin 5 +#define mPin 6 + +#define bLedPin 10 +#define pLedPin 9 +#define statusLedPin 13 + +#define vMeterPin A11 + +#define PBD 12 +#define UPWD 1 +#define DNWD 0 + +//Which serial port to use for MIDI +#define MIDI_SERIAL Serial3 + +#if defined(REVB) + +// MPR121 pins Rev B (angled pins at top edge for main keys and rollers) + +#define R1Pin 0 +#define R2Pin 2 +#define R3Pin 4 +#define R4Pin 6 +#define R5Pin 8 + +#define K4Pin 10 +#define K1Pin 1 +#define K2Pin 3 +#define K3Pin 5 +#define K5Pin 7 +#define K6Pin 9 +#define K7Pin 11 + +/* + * PINOUT ON PCB vs PINS ON MPR121 - Rev. B + * + * (R1) (R2) (R3/6) (R4) (R5) (K4) <-> (00) (02) (04) (06) (08) (10) + * + * (K1) (K2) (K3) (K5) (K6) (K7) <-> (01) (03) (05) (07) (09) (11) + * + */ + +# else + +// MPR121 pins Rev A (upright pins below MPR121 for main keys and rollers) + +#define R1Pin 10 +#define R2Pin 11 +#define R3Pin 8 +#define R4Pin 9 +#define R5Pin 6 + +#define K4Pin 7 +#define K1Pin 4 +#define K2Pin 5 +#define K3Pin 2 +#define K5Pin 3 +#define K6Pin 0 +#define K7Pin 1 + +/* + * PINOUT ON PCB vs PINS ON MPR121 - Rev. A + * + * (R2) (R4) (K4) (K2) (K5) (K7) <-> (11) (09) (07) (05) (03) (01) + * + * (R1) (R3/6) (R5) (K1) (K3) (K6) <-> (10) (08) (06) (04) (02) (00) + * + */ + +#endif + + +#endif \ No newline at end of file diff --git a/midi.ino b/midi.ino index 543706f..933076a 100644 --- a/midi.ino +++ b/midi.ino @@ -1,7 +1,5 @@ #include "midi.h" - -//Need this define here for now -#define NEWTEENSYDUINO +#include "hardware.h" int midiChannel = 1; @@ -71,17 +69,17 @@ void midiPanic() { // all notes off // Send a three byte din midi message void midiSend3B(byte midistatus, byte data1, byte data2) { - MidiSerial.write(midistatus); - MidiSerial.write(data1); - MidiSerial.write(data2); + MIDI_SERIAL.write(midistatus); + MIDI_SERIAL.write(data1); + MIDI_SERIAL.write(data2); } //************************************************************** // Send a two byte din midi message void midiSend2B(byte midistatus, byte data) { - MidiSerial.write(midistatus); - MidiSerial.write(data); + MIDI_SERIAL.write(midistatus); + MIDI_SERIAL.write(data); } //**************************************************************