daily pastebin goal
26%
SHARE
TWEET

Buttons...

a guest Dec 7th, 2017 60 in 21 hours
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <MIDI.h>
  2. MIDI_CREATE_DEFAULT_INSTANCE();
  3.  
  4.  
  5. const int latchPin = 24;
  6. const int dataPin = 22;
  7. const int clockPin = 26;
  8.  
  9. int note0 = 0;
  10. int note1 = 0;
  11. int note2 = 0;
  12. int note3 = 0;
  13. int note4 = 0;
  14. int note5 = 0;
  15. int note6 = 0;
  16. int note7 = 0;
  17.  
  18. int note8 = 0;
  19. int note9 = 0;
  20. int note10 = 0;
  21. int note11 = 0;
  22. int note12 = 0;
  23. int note13 = 0;
  24. int note14 = 0;
  25. int note15 = 0;
  26.  
  27. int note16 = 0;
  28. int note17 = 0;
  29. int note18 = 0;
  30. int note19 = 0;
  31. int note20 = 0;
  32. int note21 = 0;
  33. int note22 = 0;
  34. int note23 = 0;
  35.  
  36.  
  37. byte switchVar1 = 72;  //01001000
  38. byte switchVar2 = 159; //10011111
  39. byte switchVar3 = 246; //????????
  40.  
  41. char note1sing[] = {
  42.   'C', 'd', 'e', 'f', 'g', 'a', 'b', 'c'
  43. };
  44.  
  45. char note2sing[] = {
  46.   'C', 'd', 'e', 'f', 'g', 'a', 'b', 'c'
  47. };
  48.  
  49. char note3sing[] = {
  50.   'C', 'd', 'e', 'f', 'g', 'a', 'b', 'c'
  51. };
  52.  
  53.  
  54. void setup() {
  55.  
  56.   Serial.begin(115200);
  57.     //Shift Buttons////////////////
  58.  
  59.   pinMode(latchPin, OUTPUT);
  60.   pinMode(clockPin, OUTPUT);
  61.   pinMode(dataPin, INPUT);
  62.  
  63. }
  64.  
  65. void loop (){
  66.  
  67.    //Shift Buttons//////////////////////////////////////////////
  68.  
  69.   digitalWrite(latchPin, 1);
  70.   delayMicroseconds(10);
  71.   digitalWrite(latchPin, 0);
  72.  
  73.   switchVar1 = shiftIn(dataPin, clockPin);
  74.   switchVar2 = shiftIn(dataPin, clockPin);
  75.   switchVar3 = shiftIn(dataPin, clockPin);
  76.  
  77.  
  78.  
  79.    for (int n = 0; n <= 7; n++)
  80.   {
  81.  
  82.     if (switchVar1 & (1 << n) ) {
  83.       if (note2sing[n] == 'f') {
  84.        
  85.        
  86.         if (note2 == 0) {
  87.           MIDI.sendNoteOn (2, 127, 6);
  88.           note2 = 1;
  89.         }
  90.       }
  91.     }
  92.     else {
  93.       if (note2sing[n] == 'f') {
  94.         if (note2 == 1) {
  95.           MIDI.sendNoteOff (2, 0, 6);
  96.           note2 = 0;
  97.         }
  98.       }
  99.     }
  100.  
  101.  
  102.  
  103.     if (switchVar1 & (1 << n) ) {
  104.       if (note2sing[n] == 'b') {
  105.         if (note1 == 0) {
  106.           MIDI.sendNoteOn (1, 127, 6);
  107.           note1 = 1;
  108.         }
  109.       }
  110.     }
  111.     else {
  112.       if (note2sing[n] == 'b') {
  113.         if (note1 == 1) {
  114.           MIDI.sendNoteOff (1, 0, 6);
  115.           note1 = 0;
  116.         }
  117.       }
  118.     }
  119.  
  120.     if (switchVar1 & (1 << n) ) {
  121.       if (note2sing[n] == 'c') {
  122.         if (note0 == 0) {
  123.           MIDI.sendNoteOn (0, 127, 6);
  124.           note0 = 1;
  125.         }
  126.       }
  127.     }
  128.     else {
  129.       if (note2sing[n] == 'c') {
  130.         if (note0 == 1) {
  131.           MIDI.sendNoteOff (0, 0, 6);
  132.           note0 = 0;
  133.         }
  134.       }
  135.     }
  136.  
  137.  
  138.  
  139.     if (switchVar1 & (1 << n) ) {
  140.       if (note2sing[n] == 'a') {
  141.         if (note3 == 0) {
  142.           MIDI.sendNoteOn (3, 127, 6);
  143.           note3 = 1;
  144.         }
  145.       }
  146.     }
  147.     else {
  148.       if (note2sing[n] == 'a') {
  149.         if (note3 == 1) {
  150.           MIDI.sendNoteOff (3, 0, 6);
  151.           note3 = 0;
  152.         }
  153.       }
  154.     }
  155.  
  156.     if (switchVar1 & (1 << n) ) {
  157.       if (note2sing[n] == 'e') {
  158.         if (note4 == 0) {
  159.           MIDI.sendNoteOn (4, 127, 6);
  160.           note4 = 1;
  161.         }
  162.       }
  163.     }
  164.     else {
  165.       if (note2sing[n] == 'e') {
  166.         if (note4 == 1) {
  167.           MIDI.sendNoteOff (4, 0, 6);
  168.           note4 = 0;
  169.         }
  170.       }
  171.     }
  172.  
  173.     if (switchVar1 & (1 << n) ) {
  174.       if (note2sing[n] == 'g') {
  175.         if (note5 == 0) {
  176.           MIDI.sendNoteOn (5, 127, 6);
  177.           note5 = 1;
  178.         }
  179.       }
  180.     }
  181.     else {
  182.       if (note2sing[n] == 'g') {
  183.         if (note5 == 1) {
  184.           MIDI.sendNoteOff (5, 0, 6);
  185.           note5 = 0;
  186.         }
  187.       }
  188.     }
  189.  
  190.  
  191.     if (switchVar1 & (1 << n) ) {
  192.       if (note2sing[n] == 'C') {
  193.         if (note6 == 0) {
  194.           MIDI.sendNoteOn (6, 127, 6);
  195.           note6 = 1;
  196.         }
  197.       }
  198.     }
  199.     else {
  200.       if (note2sing[n] == 'C') {
  201.         if (note6 == 1) {
  202.           MIDI.sendNoteOff (6, 0, 6);
  203.           note6 = 0;
  204.         }
  205.       }
  206.     }
  207.  
  208.     if (switchVar1 & (1 << n) ) {
  209.       if (note2sing[n] == 'd') {
  210.         if (note7 == 0) {
  211.           MIDI.sendNoteOn (7, 127, 6);
  212.           note7 = 1;
  213.         }
  214.       }
  215.     }
  216.     else {
  217.       if (note2sing[n] == 'd') {
  218.         if (note7 == 1) {
  219.           MIDI.sendNoteOff (7, 0, 6);
  220.           note7 = 0;
  221.         }
  222.       }
  223.     }
  224.  
  225.  
  226.   // 'C', 'd', 'e', 'f', 'g', 'a', 'b', 'c'
  227.  
  228.  
  229.  
  230.     if (switchVar2 & (1 << n) ) {
  231.       if (note1sing[n] == 'e') {
  232.         if (note8 == 0) {
  233.  
  234.  
  235.           if (buttonPushCounter % 4 == 0) {
  236.             MIDI.sendNoteOn (6, 127, 1);
  237.             note8 = 1;
  238.           }
  239.           else if (buttonPushCounter % 4 == 1) {
  240.             MIDI.sendNoteOn (6, 127, 2);
  241.             note8 = 1;
  242.           }
  243.  
  244.           else if (buttonPushCounter % 4 == 2) {
  245.             MIDI.sendNoteOn (6, 127, 3);
  246.             note8 = 1;
  247.           }
  248.  
  249.           else if (buttonPushCounter % 4 == 3) {
  250.             MIDI.sendNoteOn (6, 127, 4);
  251.             note8 = 1;
  252.           }
  253.  
  254.  
  255.         }
  256.       }
  257.     }
  258.     else {
  259.       if (note1sing[n] == 'e') {
  260.         if (note8 == 1) {
  261.  
  262.           if (buttonPushCounter % 4 == 0) {
  263.             MIDI.sendNoteOff (6, 0, 1);
  264.             note8 = 0;
  265.           }
  266.  
  267.           else if (buttonPushCounter % 4 == 1) {
  268.             MIDI.sendNoteOff (6, 0, 2);
  269.             note8 = 0;
  270.           }
  271.  
  272.           else if (buttonPushCounter % 4 == 2) {
  273.             MIDI.sendNoteOff (6, 0, 3);
  274.             note8 = 0;
  275.           }
  276.  
  277.           else if (buttonPushCounter % 4 == 3) {
  278.             MIDI.sendNoteOff (6, 0, 4);
  279.             note8 = 0;
  280.           }
  281.  
  282.  
  283.         }
  284.       }
  285.     }
  286.  
  287.  
  288.  
  289.  
  290.     if (switchVar2 & (1 << n) ) {
  291.       if (note1sing[n] == 'd') {
  292.         if (note9 == 0) {
  293.  
  294.           if (buttonPushCounter2 % 4 == 0) {
  295.             MIDI.sendNoteOn (6, 127, 2);
  296.             note9 = 1;
  297.           }
  298.  
  299.           else if (buttonPushCounter2 % 4 == 1) {
  300.             MIDI.sendNoteOn (6, 127, 3);
  301.             note9 = 1;
  302.           }
  303.  
  304.           else if (buttonPushCounter2 % 4 == 2) {
  305.             MIDI.sendNoteOn (6, 127, 4);
  306.             note9 = 1;
  307.           }
  308.  
  309.           else if (buttonPushCounter2 % 4 == 3) {
  310.             MIDI.sendNoteOn (6, 127, 1);
  311.             note9 = 1;
  312.           }
  313.  
  314.         }
  315.       }
  316.     }
  317.  
  318.     else {
  319.       if (note1sing[n] == 'd') {
  320.         if (note9 == 1) {
  321.  
  322.           if (buttonPushCounter2 % 4 == 0) {
  323.             MIDI.sendNoteOff (6, 0, 2);
  324.             note9 = 0;
  325.           }
  326.  
  327.           else if (buttonPushCounter2 % 4 == 1) {
  328.             MIDI.sendNoteOff (6, 0, 3);
  329.             note9 = 0;
  330.           }
  331.  
  332.           else if (buttonPushCounter2 % 4 == 2) {
  333.             MIDI.sendNoteOff (6, 0, 4);
  334.             note9 = 0;
  335.           }
  336.  
  337.           else if (buttonPushCounter2 % 4 == 3) {
  338.             MIDI.sendNoteOff (6, 0, 1);
  339.             note9 = 0;
  340.           }
  341.  
  342.  
  343.  
  344.         }
  345.       }
  346.     }
  347.  
  348.  
  349.     if (switchVar2 & (1 << n) ) {
  350.       if (note1sing[n] == 'c') {
  351.         if (note10 == 0) {
  352.           MIDI.sendNoteOn (8, 127, 6);
  353.           note10 = 1;
  354.         }
  355.       }
  356.     }
  357.     else {
  358.       if (note1sing[n] == 'c') {
  359.         if (note10 == 1) {
  360.           MIDI.sendNoteOff (8, 0, 6);
  361.           note10 = 0;
  362.         }
  363.       }
  364.     }
  365.  
  366.     if (switchVar2 & (1 << n) ) {
  367.       if (note1sing[n] == 'b') {
  368.         if (note11 == 0) {
  369.           MIDI.sendNoteOn (6, 127, 4);
  370.           note11 = 1;
  371.         }
  372.       }
  373.     }
  374.     else {
  375.       if (note1sing[n] == 'b') {
  376.         if (note11 == 1) {
  377.           MIDI.sendNoteOff (6, 0, 4);
  378.           note11 = 0;
  379.         }
  380.       }
  381.     }
  382.  
  383.     if (switchVar2 & (1 << n) ) {
  384.       if (note1sing[n] == 'C') {
  385.         if (note12 == 0) {
  386.           MIDI.sendNoteOn (6, 127, 3);
  387.           note12 = 1;
  388.         }
  389.       }
  390.     }
  391.     else {
  392.       if (note1sing[n] == 'C') {
  393.         if (note12 == 1) {
  394.           MIDI.sendNoteOff (6, 0, 3);
  395.           note12 = 0;
  396.         }
  397.       }
  398.     }
  399.  
  400.     if (switchVar2 & (1 << n) ) {
  401.       if (note1sing[n] == 'f') {
  402.         if (note13 == 0) {
  403.           MIDI.sendNoteOn (9, 127, 6);
  404.           note13 = 1;
  405.         }
  406.       }
  407.     }
  408.     else {
  409.       if (note1sing[n] == 'f') {
  410.         if (note13 == 1) {
  411.           MIDI.sendNoteOff (9, 0, 6);
  412.           note13 = 0;
  413.         }
  414.       }
  415.     }
  416.  
  417.  
  418.  
  419.    
  420.  
  421.     //these two notes stay for note14 and note 15 'g' 'a'
  422.   }
  423.  
  424.   //delay(1);
  425. //  writeRegisters();
  426.   MIDI.read();
  427.  
  428. }
  429.  
  430.  
  431.  
  432.  
  433.  
  434.  
  435.  
  436.  
  437.  
  438.  
  439.  
  440.  
  441.  
  442. //Shift Buttons/////////////////////////////////////////////////
  443.  
  444. byte shiftIn(int myDataPin, int myClockPin) {
  445.   int i;
  446.   int temp = 0;
  447.   int pinState;
  448.   byte myDataIn = 0;
  449.  
  450.   pinMode(myClockPin, OUTPUT);
  451.   pinMode(myDataPin, INPUT);
  452.  
  453.   for (i = 7; i >= 0; i--)
  454.   {
  455.     digitalWrite(myClockPin, 0);
  456.     delayMicroseconds(0.1);
  457.     temp = digitalRead(myDataPin);
  458.     if (temp) {
  459.       pinState = 1;
  460.       myDataIn = myDataIn | (1 << i);
  461.     }
  462.     else {
  463.  
  464.       pinState = 0;
  465.     }
  466.  
  467.  
  468.     digitalWrite(myClockPin, 1);
  469.  
  470.   }
  471.  
  472.   return myDataIn;
  473. }
RAW Paste Data
Top