Advertisement
robertpfeifer

Midi controller

Jul 24th, 2019
252
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.83 KB | None | 0 0
  1. #include <Adafruit_MCP23017.h>
  2. #include <Adafruit_MCP3008.h>
  3. #include "MIDIUSB.h"
  4.  
  5. Adafruit_MCP3008 adc1;
  6. Adafruit_MCP3008 adc2;
  7.  
  8. Adafruit_MCP23017 mcp1;
  9. Adafruit_MCP23017 mcp2;
  10. Adafruit_MCP23017 mcp3;
  11. Adafruit_MCP23017 mcp4;
  12.  
  13. void setup(){
  14. mcp1.begin(0);
  15. for(int i = 0;i<=16;i++){
  16. mcp1.pinMode(i, INPUT);
  17. mcp1.pullUp(i, HIGH);
  18.  
  19.  
  20. mcp2.begin(1);
  21. for(int i = 0;i<=16;i++){
  22. mcp2.pinMode(i, INPUT);
  23. mcp2.pullUp(i, HIGH);
  24.  
  25.  
  26. mcp3.begin(2);
  27. for(int i = 0;i<=16;i++){
  28. mcp3.pinMode(i, INPUT);
  29. mcp3.pullUp(i, HIGH);
  30.  
  31.  
  32. mcp4.begin(3);
  33. for(int i = 0;i<=16;i++){
  34. mcp4.pinMode(i, INPUT);
  35. mcp4.pullUp(i, HIGH);
  36.  
  37.  
  38. adc1.begin(9);
  39. adc2.begin(8);
  40.  
  41. }
  42.  
  43. void noteOn(byte channel, byte pitch, byte velocity) {
  44. midiEventPacket_t noteOn = {0x09, 0x90 | channel, pitch, velocity};
  45. MidiUSB.sendMIDI(noteOn);
  46. }
  47.  
  48. void noteOff(byte channel, byte pitch, byte velocity) {
  49. midiEventPacket_t noteOff = {0x08, 0x80 | channel, pitch, velocity};
  50. MidiUSB.sendMIDI(noteOff);
  51. }
  52.  
  53. void taster(int mcpNR, int tasterNR, int midinote){
  54. switch (mcpNR) {
  55. case 1:
  56. if (mcp1.digitalRead(tasterNR) == LOW) {
  57. noteOn(0,midinote,127);
  58. MidiUSB.flush();
  59. }
  60. else {
  61. noteOff(0,midinote,127);
  62. MidiUSB.flush();
  63.  
  64. break;
  65.  
  66. case 2:
  67. if (mcp2.digitalRead(tasterNR) == LOW) {
  68. noteOn(0,midinote,127);
  69. MidiUSB.flush();
  70. }
  71. else {
  72. noteOff(0,midinote,127);
  73. MidiUSB.flush();
  74.  
  75. break;
  76.  
  77. case 3:
  78. if (mcp3.digitalRead(tasterNR) == LOW) {
  79. noteOn(0,midinote,127);
  80. MidiUSB.flush();
  81. }
  82. else {
  83. noteOff(0,midinote,127);
  84. MidiUSB.flush();
  85.  
  86. break;
  87.  
  88. case 4:
  89. if (mcp4.digitalRead(tasterNR) == LOW) {
  90. noteOn(0,midinote,127);
  91. MidiUSB.flush();
  92. }
  93. else {
  94. noteOff(0,midinote,127);
  95. MidiUSB.flush();
  96.  
  97. break;
  98. default:
  99. break;
  100.  
  101. }
  102.  
  103. void fader(int adcNR, char faderNR, int midinote){
  104. switch (adcNR){
  105. case 1:
  106. noteOn(0,midinote,map(adc1.readADC(faderNR),0,1023,0,127));
  107. MidiUSB.flush();
  108. break;
  109.  
  110. case 2:
  111. noteOn(0,midinote,map(adc2.readADC(faderNR),0,1023,0,127));
  112. MidiUSB.flush();
  113. break;
  114.  
  115. }
  116.  
  117.  
  118. void loop() {
  119. delay(10);
  120. fader(1,0,1); //Fader links
  121. fader(1,1,2);
  122. fader(1,2,3);
  123. fader(1,3,4);
  124. fader(1,4,5);
  125. fader(1,5,6);
  126. fader(1,6,7);
  127. fader(1,7,8);
  128.  
  129. fader(2,2,9); //Fader rechts
  130. fader(2,3,10);
  131. fader(2,4,11);
  132. fader(2,5,12);
  133. fader(2,6,13);
  134. fader(2,7,14);
  135.  
  136. taster(2,0,15); //Buttons links unten
  137. taster(2,1,16);
  138. taster(2,2,17);
  139. taster(2,3,18);
  140. taster(2,4,19);
  141. taster(2,5,20);
  142. taster(2,6,15);
  143. taster(2,7,22);
  144. taster(2,8,23);
  145. taster(2,9,24);
  146. taster(2,10,25);
  147. taster(2,11,26);
  148. taster(2,12,27);
  149. taster(2,13,28);
  150. taster(2,14,29);
  151. taster(2,15,30);
  152.  
  153. taster(4,7,31); //Buttons rechts unten
  154. taster(4,9,32);
  155. taster(4,8,33);
  156. taster(4,7,34);
  157. taster(4,8,35);
  158. taster(4,7,36);
  159. taster(4,9,37);
  160. taster(4,8,38);
  161. taster(4,7,39);
  162. taster(4,9,40);
  163. taster(4,8,41);
  164. taster(4,7,42);
  165.  
  166. taster(1,0,57); //Buttons links oben
  167. taster(1,1,53);
  168. taster(1,2,51);
  169. taster(1,3,55);
  170. taster(1,4,47);
  171. taster(1,5,49);
  172. taster(1,6,43);
  173. taster(1,7,45);
  174. taster(1,8,46);
  175. taster(1,9,44);
  176. taster(1,10,50);
  177. taster(1,11,48);
  178. taster(1,12,56);
  179. taster(1,13,52);
  180. taster(1,14,54);
  181. taster(1,15,58);
  182.  
  183. taster(3,7,59); //Buttons rechts oben
  184. taster(3,9,60);
  185. taster(3,8,61);
  186. taster(3,7,62);
  187. taster(3,8,63);
  188. taster(3,7,64);
  189. taster(3,9,65);
  190. taster(3,8,66);
  191. taster(3,7,67);
  192. taster(3,9,68);
  193. taster(3,8,69);
  194. taster(3,7,70);
  195. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement