Project tutorial
MIDI for Digital Organs

MIDI for Digital Organs © CC BY-NC

Turn an old organ console into a MIDI controller to use with desktop organ software like Hauptwerk or Grandorgue.

  • 2,170 views
  • 9 comments
  • 8 respects

Components and supplies

Necessary tools and machines

Apps and online services

About this project

This project shows how to convert an old organ console so that it can be used to send out hardware MIDI messages from the manuals and pedals using a single Arduino Mega.

The project started as an attempt to send out midi messages while the original sound generation was still intact, however the original circuits proved quite difficult to reverse engineer. After spending some time with the code, I developed code for both bussed type manuals, and matrixed type ones.

Notes:

  • This project modifies the organ so that the original keyboard switching no longer works.
  • Inside an old organ, there are electrical components that can be dangerous. Always work with the organ unplugged, and be sure you have the experience and skills to work on this project safely. If in doubt, consult with a qualified local electronics technician before attempting this project.
  • The components inside old organs are often quite old and on the verge of malfunctioning, so any modifications may result in damage to the organ. Following the instructions provided here is done at the user's own risk, and the author of this article assumes no responsibility for any damage that occurs to an organ, any equipment, or persons as a result of attempting to follow these instructions.

Step 1: Examine organ

  • My first posted code assumed that the organ you are wishing to modify already has a matrixed keyboard, with discrete switches and diodes already in place. Since posting that first version, I have also developed code that will work with bussed keyboard designs. Simply follow the instructions and use the code for the version that applies to you (Matrixed vs. Bussed). For both designs, however, you will need diodes attached to every switch. These can be obtained cheaply. However, the code uploaded to the Arduino Mega is different with matrixed vs. a bussed design.
  • The particular organ which was midified in this example has normally open (NO) switches for the keyboards, and normally closed switches (NC) for the pedals. Using a multimeter, you can check what kind of switches the organ you are planning to convert has. If the switch type is different than what was done for this organ, you will have to modify the code to suit the switch type (examples given in the code)
  • Figure out how to open up the organ to access the keyboards and pedalboard contacts, and look for a suitable place to attach the Arduino inside the organ. You may have to drill holes or install plugs to provide power to the Arduino, and to mount the Midi plug. In this example, a 3 prong power plug was wired to a small power box inside the organ to provide power to the Arduino, and a hole was drilled, and a Midi DIN plug was attached to the hole.
  • The particular organ shown here had two keyboards with 6x11 matrixes, and a pedalboard with a 6x7 matrix. If you plan to go the matrix route, and the particular organ already has a 8x8 matrix, either the code and wiring will need to be modified to suit an 8x8 matrix, or the original matrix will have to be rewired to support a 6x11 matrix.

Step 2: Attach Arduino

-My Arduino Mega came with a small plastic plate to mount it to the wood of the organ. I attached it with small #4 wood screws, and #4 machine screws to attach the Arduino to the plate. It is a good idea to place the Arduino first, so that you will be able to estimate how long each cable needs to be. At this point, you can also find a way to supply power to the Arduino.

Step 3: Prepare cables

Matrixed Keyboard:

Each keyboard will have 61 switches. In the example used here, each keyboard had 6 rows, with a wire going from the first terminal of every switch to the first terminal of every other switch 6 switches away. The second terminal of the switch then went to a diode, then to the columns, of which the switches were divided into 11 columns for the manuals, and 7 columns for the pedals. For each manual and the pedals then, two lengths of the AWM wire recommended need to be cut so that they reach from each division to the Arduino board, preferably following a path that can be neatly organized, and always leaving more leeway than is needed. For the columns, it is preferable to have the cable extend the length of the keyboard or pedalboard before going to the Arduino. Measure each length of cable, and cut to size. Using the small nippers, separate the individual strands of the cable at the ends, and strip the plastic covering off the wire ends using the wire strippers.

Bussed Keyboard:

The keyboard can be divided up into 6 AWM cables, with an ordinary wire for the 61st switch. Separate the individual strands of the cable at the ends, then strip the plastic covering off the ends using the wire strippers.

Step 4: Solder cable ends to male headers

Both Matrixed and Bussed Keyboards: Either solder the appropriate cable ends to the male header pins, or if using the screw terminal board, attach the appropriate cables to the screw terminals.

Step 5: Solder the other end of the cable to the switches

Matrixed Keyboard:

-If the organ already has each contact wired, you will have to desolder or clip the original wires in order for this project to work. If the organ has a 6x11 matrix, it makes sense to preserve the row wires that go from each switch to the next switch 6 up. So, remove the row wires going from the first set of six to the original computer, and solder the 6 row wires to the position where the other 6 used to be. For the columns, if they already have diodes in place, then clip or desolder the lead going from the other end of the diodes to the original computer, then solder the column lead going to your Arduino in its place. Using plastic cable ties, you can organize the cables so they run neatly along where the other cables in the organ run. For the pedalboard on the organ pictured above, the panel on the front of the organ containing the reed switches had to be removed by removing the screws holding it on, and the cables routed through the small hole in the centre of the front panel of the organ.

Bussed Keyboard:

In the bussed keyboard code, it is necessary to solder a diode to the non bussed side of each switch, then solder this to one of the 10 wires in the cable, then repeat for each of the 6 cables, then repeat for the last wire (#61)

Step 6: Solder the resistor to the MIDI plug, and solder the other leads to the Arduino.

Step 7: Connect headers to Arduino

-Plug all of the headers into the Arduino as shown in the schematic.

-An alternative solution to soldering wires onto the male headers is to buy some ten pin IDC sockets, and connect these to the ends of the AWM cables, then use male to male jumpers to connect to the Arduino. While this solution isn't as permanent as soldering, it is advisable if you intend to try modifying the posted code, in case rewiring is necessary.

Step 8: Upload software to Arduino

-Connect a USB cable from the Arduino to your computer, and ensure you have the Arduino software installed on your computer. Select the version of the code that applies to you (Matrixed vs. Bussed). Run the Arduino software, and copy and paste the provided code into a new blank sketch. Make sure the Arduino is connected via USB serial, and Click the "Upload" button at the top of the sketch.

Step 9: Test

  • If not done already, connect your MIDI adapter to the computer, and connect the organ MIDI out to the MIDI adapter.
  • Using a software to monitor midi signals, make sure each key and pedal sends the appropriate MIDI message when you press the key, and depress each key.
  • If you plan to use without being attached to your computer, you can attach a small 5v power supply to the power port of the Arduino, or attach a USB power plug to the end of the USB cable you used, and plug that into a wall outlet to power the Arduino.

Notes:

  • The code posted for bussed keyboards has not yet been tested, however it is expected to work. Please post in the comments if you have tried the bussed code and found some problem with it.
  • Note that for the bussed version of the code, diodes are necessary for it to work properly. Also, when soldering the diodes onto the switches, it is important to solder the diode with the negative pole towards the switch. For the matrixed design, then negative pole of the diode should be away from the switch.
  • Aside from adding the bussed design, I have also updated the original design and code to include potentiometers, such as those used in expression pedals.
  • For the bussed design to work properly at pin 13, it is necessary to somehow disable the Arduino's built in LED. To do that, you can either remove it using two soldering irons, or use a pair of fine tipped pliers to carefully crush it.
  • While the bussed design will work for many organs with a bussed keyboard, it may not work reliably if the bus is made of "phosphor bronze" material. Wiring all of the busses for a single manual together, and wiring all of the contacts for a single key together will help prevent intermittent contact, but for phosphor bronze bus bars, it is recommended to use 12V keying (which this project would not be able to do).

Expression Pedal Hardware for Potentiometers

In the future, I hope to add more details about this, but for now I will briefly explain the design seen above. The connection to the expression pedal is an inexpensive "L" bracket available from a local hardware store. It is connected to an existing bracket here, but a second L bracket attached directly to the pedal can also be used. It articulates on a machine screw that is kept slightly loose by using a lock nut, and two washers. In the picture, I used a very long machine screw, but such a long one isn't needed, it just happened to be what I had on hand. For the metal rod, I used "JB weld" to attach an eye bolt to one end, and used an appropriate sized machine screw to attach it to the "L" bracket on the other end.

For the potentiometer mount itself, I purchased some clear acrylic sheets, scored them with a hobby knife, then broke them off along the line using pliers and clamps. To attach the potentiometer, I made a small piece of acrylic to elevate it off the larger piece, sanded the surface of the smaller piece of acrylic, and also sanded the surface of the potentiometer to be mounted, and the surface of the larger piece to which everything would be attached, then applied JB weld, and used a small clamp to hold everything together until the JB weld dried. The holes in the acrylic pieces were drilled with an electric drill and standard drill bits.

The bottom of the larger piece of acrylic is fastened to a small furniture hinge using #4 machine screws, and the other end of the furniture hinge is attached to the bottom of the organ using short #4 wood screws. I made an acrylic bracket to hold the furniture hinge off the wood floor, but depending on the design of the furniture hinge, that might not be necessary.

The white block that the rod slides through is a PFTE block that I bought from a robot parts supplier. The piece was cut off the larger piece using a hobby saw, and the three holes drilled using an electric drill and different size drill bits. The PFTE block was attached to the acrylic bracket using machine screws.

Final note:

Arduino Project Hub doesn't appear to have notification for posts and questions placed here. If you would like a speedier reply to your question, you can post it on this forum page, which will notify me.

Code

Matrixed Keyboard codeArduino
Code to upload to the Arduino when you are following Matrixed Keyboard schematic.
// Name: Arduino Mega Midi Controller v21
// Created: Feb 4, 2021
// Author: Larason2
// Acknowledgements: Bald Engineer, Amanda Ghassaei, jeffb42, GrumpyMike

byte keysA[11][6];
byte keysB[11][6];
byte keysC[7][6];

byte lastA[11][6];
byte lastB[11][6];
byte lastC[7][6];

int noteOn1 = 144;
int noteOff1 = 128;
int noteOn2 = 145;
int noteOff2 = 129;
int noteOn3 = 146;
int noteOff3 = 130;
int velocity = 100;
int chan6 = 181;
int chan7 = 182;
int Exp = 11;

int LastPot6 = 1;
int LastPot7 = 1;

void setup() {
  // Start Serial
  Serial.begin(31250);

  //Initialize Keyboard A
  pinMode(2, INPUT);
  pinMode(22, INPUT);
  pinMode(24, INPUT);
  pinMode(26, INPUT);
  pinMode(28, INPUT);
  pinMode(30, INPUT);

  pinMode(32, INPUT);
  pinMode(34, INPUT);
  pinMode(36, INPUT);
  pinMode(38, INPUT);
  pinMode(40, INPUT);
  pinMode(42, INPUT);
  pinMode(44, INPUT);
  pinMode(46, INPUT);
  pinMode(48, INPUT);
  pinMode(50, INPUT);
  pinMode(52, INPUT);

  //Initialize Keyboard B
  pinMode(3, INPUT);
  pinMode(23, INPUT);
  pinMode(25, INPUT);
  pinMode(27, INPUT);
  pinMode(29, INPUT);
  pinMode(31, INPUT);

  pinMode(33, INPUT);
  pinMode(35, INPUT);
  pinMode(37, INPUT);
  pinMode(39, INPUT);
  pinMode(41, INPUT);
  pinMode(43, INPUT);
  pinMode(45, INPUT);
  pinMode(47, INPUT);
  pinMode(49, INPUT);
  pinMode(51, INPUT);
  pinMode(52, INPUT);

  //Initialize Keyboard C
  pinMode(A2, INPUT);
  pinMode(A3, INPUT);
  pinMode(A4, INPUT);
  pinMode(A5, INPUT);
  pinMode(A6, INPUT);
  pinMode(A7, INPUT);

  pinMode(A8, INPUT);
  pinMode(A9, INPUT);
  pinMode(A10, INPUT);
  pinMode(A11, INPUT);
  pinMode(A12, INPUT);
  pinMode(A13, INPUT);
  pinMode(A14, INPUT);
}

void loop() {
  
  // Read Keyboard A

  pinMode(22, INPUT_PULLUP);
  pinMode(24, INPUT_PULLUP);
  pinMode(26, INPUT_PULLUP);
  pinMode(28, INPUT_PULLUP);
  pinMode(30, INPUT_PULLUP);
  pinMode(2, INPUT_PULLUP);

  pinMode(32, OUTPUT);
  digitalWrite(32, LOW);
    keysA[0][0] = digitalRead(2);
  pinMode(32, INPUT);

  pinMode(34, OUTPUT);
  digitalWrite(34, LOW);
    keysA[1][0] = digitalRead(22);
    keysA[1][1] = digitalRead(24);
    keysA[1][2] = digitalRead(26);
    keysA[1][3] = digitalRead(28);
    keysA[1][4] = digitalRead(30);
    keysA[1][5] = digitalRead(2);
  pinMode(34, INPUT);

  pinMode(36, OUTPUT);
  digitalWrite(36, LOW);
    keysA[2][0] = digitalRead(22);
    keysA[2][1] = digitalRead(24);
    keysA[2][2] = digitalRead(26);
    keysA[2][3] = digitalRead(28);
    keysA[2][4] = digitalRead(30);
    keysA[2][5] = digitalRead(2);
  pinMode(36, INPUT);

  pinMode(38, OUTPUT);
  digitalWrite(38, LOW);
    keysA[3][0] = digitalRead(22);
    keysA[3][1] = digitalRead(24);
    keysA[3][2] = digitalRead(26);
    keysA[3][3] = digitalRead(28);
    keysA[3][4] = digitalRead(30);
    keysA[3][5] = digitalRead(2);
  pinMode(38, INPUT);

  pinMode(40, OUTPUT);
  digitalWrite(40, LOW);
    keysA[4][0] = digitalRead(22);
    keysA[4][1] = digitalRead(24);
    keysA[4][2] = digitalRead(26);
    keysA[4][3] = digitalRead(28);
    keysA[4][4] = digitalRead(30);
    keysA[4][5] = digitalRead(2);
  pinMode(40, INPUT);

  pinMode(42, OUTPUT);
  digitalWrite(42, LOW);
    keysA[5][0] = digitalRead(22);
    keysA[5][1] = digitalRead(24);
    keysA[5][2] = digitalRead(26);
    keysA[5][3] = digitalRead(28);
    keysA[5][4] = digitalRead(30);
    keysA[5][5] = digitalRead(2);
  pinMode(42, INPUT);

  pinMode(44, OUTPUT);
  digitalWrite(44, LOW);
    keysA[6][0] = digitalRead(22);
    keysA[6][1] = digitalRead(24);
    keysA[6][2] = digitalRead(26);
    keysA[6][3] = digitalRead(28);
    keysA[6][4] = digitalRead(30);
    keysA[6][5] = digitalRead(2);
  pinMode(44, INPUT);

  pinMode(46, OUTPUT);
  digitalWrite(46, LOW);
    keysA[7][0] = digitalRead(22);
    keysA[7][1] = digitalRead(24);
    keysA[7][2] = digitalRead(26);
    keysA[7][3] = digitalRead(28);
    keysA[7][4] = digitalRead(30);
    keysA[7][5] = digitalRead(2);
  pinMode(46, INPUT);

  pinMode(48, OUTPUT);
  digitalWrite(48, LOW);
    keysA[8][0] = digitalRead(22);
    keysA[8][1] = digitalRead(24);
    keysA[8][2] = digitalRead(26);
    keysA[8][3] = digitalRead(28);
    keysA[8][4] = digitalRead(30);
    keysA[8][5] = digitalRead(2);
  pinMode(48, INPUT);

  pinMode(50, OUTPUT);
  digitalWrite(50, LOW);
    keysA[9][0] = digitalRead(22);
    keysA[9][1] = digitalRead(24);
    keysA[9][2] = digitalRead(26);
    keysA[9][3] = digitalRead(28);
    keysA[9][4] = digitalRead(30);
    keysA[9][5] = digitalRead(2);
  pinMode(50, INPUT);

  pinMode(52, OUTPUT);
  digitalWrite(52, LOW);
    keysA[10][0] = digitalRead(22);
    keysA[10][1] = digitalRead(24);
    keysA[10][2] = digitalRead(26);
    keysA[10][3] = digitalRead(28);
    keysA[10][4] = digitalRead(30);
    keysA[10][5] = digitalRead(2);
  pinMode(52, INPUT);

  pinMode(22, INPUT);
  pinMode(24, INPUT);
  pinMode(26, INPUT);
  pinMode(28, INPUT);
  pinMode(30, INPUT);
  pinMode(2, INPUT);

   // Read Keyboard B

  pinMode(23, INPUT_PULLUP);
  pinMode(25, INPUT_PULLUP);
  pinMode(27, INPUT_PULLUP);
  pinMode(29, INPUT_PULLUP);
  pinMode(31, INPUT_PULLUP);
  pinMode(3, INPUT_PULLUP);

  pinMode(33, OUTPUT);
  digitalWrite(33, LOW);
    keysB[0][0] = digitalRead(3);
  pinMode(33, INPUT);
  
  pinMode(35, OUTPUT);
  digitalWrite(35, LOW);
    keysB[1][0] = digitalRead(23);
    keysB[1][1] = digitalRead(25);
    keysB[1][2] = digitalRead(27);
    keysB[1][3] = digitalRead(29);
    keysB[1][4] = digitalRead(31);
    keysB[1][5] = digitalRead(3);
  pinMode(35, INPUT);

  pinMode(37, OUTPUT);
  digitalWrite(37, LOW);
    keysB[2][0] = digitalRead(23);
    keysB[2][1] = digitalRead(25);
    keysB[2][2] = digitalRead(27);
    keysB[2][3] = digitalRead(29);
    keysB[2][4] = digitalRead(31);
    keysB[2][5] = digitalRead(3);
  pinMode(37, INPUT);

  pinMode(39, OUTPUT);
  digitalWrite(39, LOW);
    keysB[3][0] = digitalRead(23);
    keysB[3][1] = digitalRead(25);
    keysB[3][2] = digitalRead(27);
    keysB[3][3] = digitalRead(29);
    keysB[3][4] = digitalRead(31);
    keysB[3][5] = digitalRead(3);
  pinMode(39, INPUT);

  pinMode(41, OUTPUT);
  digitalWrite(41, LOW);
    keysB[4][0] = digitalRead(23);
    keysB[4][1] = digitalRead(25);
    keysB[4][2] = digitalRead(27);
    keysB[4][3] = digitalRead(29);
    keysB[4][4] = digitalRead(31);
    keysB[4][5] = digitalRead(3);
  pinMode(41, INPUT);

  pinMode(43, OUTPUT);
  digitalWrite(43, LOW);
    keysB[5][0] = digitalRead(23);
    keysB[5][1] = digitalRead(25);
    keysB[5][2] = digitalRead(27);
    keysB[5][3] = digitalRead(29);
    keysB[5][4] = digitalRead(31);
    keysB[5][5] = digitalRead(3);
  pinMode(43, INPUT);

  pinMode(45, OUTPUT);
  digitalWrite(45, LOW);
    keysB[6][0] = digitalRead(23);
    keysB[6][1] = digitalRead(25);
    keysB[6][2] = digitalRead(27);
    keysB[6][3] = digitalRead(29);
    keysB[6][4] = digitalRead(31);
    keysB[6][5] = digitalRead(3);
  pinMode(45, INPUT);

  pinMode(47, OUTPUT);
  digitalWrite(47, LOW);
    keysB[7][0] = digitalRead(23);
    keysB[7][1] = digitalRead(25);
    keysB[7][2] = digitalRead(27);
    keysB[7][3] = digitalRead(29);
    keysB[7][4] = digitalRead(31);
    keysB[7][5] = digitalRead(3);
  pinMode(47, INPUT);

  pinMode(49, OUTPUT);
  digitalWrite(49, LOW);
    keysB[8][0] = digitalRead(23);
    keysB[8][1] = digitalRead(25);
    keysB[8][2] = digitalRead(27);
    keysB[8][3] = digitalRead(29);
    keysB[8][4] = digitalRead(31);
    keysB[8][5] = digitalRead(3);
  pinMode(49, INPUT);

  pinMode(51, OUTPUT);
  digitalWrite(51, LOW);
    keysB[9][0] = digitalRead(23);
    keysB[9][1] = digitalRead(25);
    keysB[9][2] = digitalRead(27);
    keysB[9][3] = digitalRead(29);
    keysB[9][4] = digitalRead(31);
    keysB[9][5] = digitalRead(3);
  pinMode(51, INPUT);

  pinMode(53, OUTPUT);
  digitalWrite(53, LOW);
    keysB[10][0] = digitalRead(23);
    keysB[10][1] = digitalRead(25);
    keysB[10][2] = digitalRead(27);
    keysB[10][3] = digitalRead(29);
    keysB[10][4] = digitalRead(31);
    keysB[10][5] = digitalRead(3);
  pinMode(53, INPUT);

  pinMode(23, INPUT);
  pinMode(25, INPUT);
  pinMode(27, INPUT);
  pinMode(29, INPUT);
  pinMode(31, INPUT);
  pinMode(3, INPUT);

  // Read Keyboard C

  //Set Row pins to read
  pinMode(A3, INPUT_PULLUP);
  pinMode(A4, INPUT_PULLUP);
  pinMode(A5, INPUT_PULLUP);
  pinMode(A6, INPUT_PULLUP);
  pinMode(A7, INPUT_PULLUP);
  pinMode(A2, INPUT_PULLUP);

  pinMode(A8, OUTPUT);
  digitalWrite(A8, LOW);
    keysC[0][0] = digitalRead(A2);
  pinMode(A8, INPUT);

  pinMode(A9, OUTPUT);
  digitalWrite(A9, LOW);
    keysC[1][0] = digitalRead(A3);
    keysC[1][1] = digitalRead(A4);
    keysC[1][2] = digitalRead(A5);
    keysC[1][3] = digitalRead(A6);
    keysC[1][4] = digitalRead(A7);
    keysC[1][5] = digitalRead(A2);
  pinMode(A9, INPUT);

  pinMode(A10, OUTPUT);
  digitalWrite(A10, LOW);
    keysC[2][0] = digitalRead(A3);
    keysC[2][1] = digitalRead(A4);
    keysC[2][2] = digitalRead(A5);
    keysC[2][3] = digitalRead(A6);
    keysC[2][4] = digitalRead(A7);
    keysC[2][5] = digitalRead(A2);
  pinMode(A10, INPUT);

  pinMode(A11, OUTPUT);
  digitalWrite(A11, LOW);
    keysC[3][0] = digitalRead(A3);
    keysC[3][1] = digitalRead(A4);
    keysC[3][2] = digitalRead(A5);
    keysC[3][3] = digitalRead(A6);
    keysC[3][4] = digitalRead(A7);
    keysC[3][5] = digitalRead(A2);
  pinMode(A11, INPUT);

  pinMode(A12, OUTPUT);
  digitalWrite(A12, LOW);
    keysC[4][0] = digitalRead(A3);
    keysC[4][1] = digitalRead(A4);
    keysC[4][2] = digitalRead(A5);
    keysC[4][3] = digitalRead(A6);
    keysC[4][4] = digitalRead(A7);
    keysC[4][5] = digitalRead(A2);
  pinMode(A12, INPUT);

  pinMode(A13, OUTPUT);
  digitalWrite(A13, LOW);
    keysC[5][0] = digitalRead(A3);
    keysC[5][1] = digitalRead(A4);
    keysC[5][2] = digitalRead(A5);
    keysC[5][3] = digitalRead(A6);
    keysC[5][4] = digitalRead(A7);
    keysC[5][5] = digitalRead(A2);
  pinMode(A13, INPUT);

  pinMode(A14, OUTPUT);
  digitalWrite(A14, LOW);
    keysC[6][0] = digitalRead(A3);
  pinMode(A14, INPUT);

  pinMode(A3, INPUT);
  pinMode(A4, INPUT);
  pinMode(A5, INPUT);
  pinMode(A6, INPUT);
  pinMode(A7, INPUT);
  pinMode(A2, INPUT);


  //Invert Keyboard C data 
  //(For switches that are Normally Closed)

  //Column 1

  if (keysC[0][0] == 0) {
    keysC[0][0] = 1;
  }
  else
  if (keysC[0][0] == 1) {
    keysC[0][0] = 0;
  }

  //Column 2
  
  if (keysC[1][0] == 0) {
    keysC[1][0] = 1;
  }
  else
  if (keysC[1][0] == 1) {
    keysC[1][0] = 0;
  }
  if (keysC[1][1] == 0) {
    keysC[1][1] = 1;
  }
  else
  if (keysC[1][1] == 1) {
    keysC[1][1] = 0;
  }  
  if (keysC[1][2] == 0) {
    keysC[1][2] = 1;
  }
  else
  if (keysC[1][2] == 1) {
    keysC[1][2] = 0;
  }
  if (keysC[1][3] == 0) {
    keysC[1][3] = 1;
  }
  else
  if (keysC[1][3] == 1) {
    keysC[1][3] = 0;
  }  
  if (keysC[1][4] == 0) {
    keysC[1][4] = 1;
  }
  else
  if (keysC[1][4] == 1) {
    keysC[1][4] = 0;
  }
  if (keysC[1][5] == 0) {
    keysC[1][5] = 1;
  }
  else
  if (keysC[1][5] == 1) {
    keysC[1][5] = 0;
  }  

  //Column 3

  if (keysC[2][0] == 0) {
    keysC[2][0] = 1;
  }
  else
  if (keysC[2][0] == 1) {
    keysC[2][0] = 0;
  }
  if (keysC[2][1] == 0) {
    keysC[2][1] = 1;
  }
  else
  if (keysC[2][1] == 1) {
    keysC[2][1] = 0;
  }  
  if (keysC[2][2] == 0) {
    keysC[2][2] = 1;
  }
  else
  if (keysC[2][2] == 1) {
    keysC[2][2] = 0;
  }
  if (keysC[2][3] == 0) {
    keysC[2][3] = 1;
  }
  else
  if (keysC[2][3] == 1) {
    keysC[2][3] = 0;
  }  
  if (keysC[2][4] == 0) {
    keysC[2][4] = 1;
  }
  else
  if (keysC[2][4] == 1) {
    keysC[2][4] = 0;
  }
  if (keysC[2][5] == 0) {
    keysC[2][5] = 1;
  }
  else
  if (keysC[2][5] == 1) {
    keysC[2][5] = 0;
  }  

  //Column 4

  if (keysC[3][0] == 0) {
    keysC[3][0] = 1;
  }
  else
  if (keysC[3][0] == 1) {
    keysC[3][0] = 0;
  }
  if (keysC[3][1] == 0) {
    keysC[3][1] = 1;
  }
  else
  if (keysC[3][1] == 1) {
    keysC[3][1] = 0;
  }  
  if (keysC[3][2] == 0) {
    keysC[3][2] = 1;
  }
  else
  if (keysC[3][2] == 1) {
    keysC[3][2] = 0;
  }
  if (keysC[3][3] == 0) {
    keysC[3][3] = 1;
  }
  else
  if (keysC[3][3] == 1) {
    keysC[3][3] = 0;
  }  
  if (keysC[3][4] == 0) {
    keysC[3][4] = 1;
  }
  else
  if (keysC[3][4] == 1) {
    keysC[3][4] = 0;
  }
  if (keysC[3][5] == 0) {
    keysC[3][5] = 1;
  }
  else
  if (keysC[3][5] == 1) {
    keysC[3][5] = 0;
  }  

  //Column 5

  if (keysC[4][0] == 0) {
    keysC[4][0] = 1;
  }
  else
  if (keysC[4][0] == 1) {
    keysC[4][0] = 0;
  }
  if (keysC[4][1] == 0) {
    keysC[4][1] = 1;
  }
  else
  if (keysC[4][1] == 1) {
    keysC[4][1] = 0;
  }  
  if (keysC[4][2] == 0) {
    keysC[4][2] = 1;
  }
  else
  if (keysC[4][2] == 1) {
    keysC[4][2] = 0;
  }
  if (keysC[4][3] == 0) {
    keysC[4][3] = 1;
  }
  else
  if (keysC[4][3] == 1) {
    keysC[4][3] = 0;
  }  
  if (keysC[4][4] == 0) {
    keysC[4][4] = 1;
  }
  else
  if (keysC[4][4] == 1) {
    keysC[4][4] = 0;
  }
  if (keysC[4][5] == 0) {
    keysC[4][5] = 1;
  }
  else
  if (keysC[4][5] == 1) {
    keysC[4][5] = 0;
  }  

  //Column 6

  if (keysC[5][0] == 0) {
    keysC[5][0] = 1;
  }
  else
  if (keysC[5][0] == 1) {
    keysC[5][0] = 0;
  }
  if (keysC[5][1] == 0) {
    keysC[5][1] = 1;
  }
  else
  if (keysC[5][1] == 1) {
    keysC[5][1] = 0;
  }  
  if (keysC[5][2] == 0) {
    keysC[5][2] = 1;
  }
  else
  if (keysC[5][2] == 1) {
    keysC[5][2] = 0;
  }
  if (keysC[5][3] == 0) {
    keysC[5][3] = 1;
  }
  else
  if (keysC[5][3] == 1) {
    keysC[5][3] = 0;
  }  
  if (keysC[5][4] == 0) {
    keysC[5][4] = 1;
  }
  else
  if (keysC[5][4] == 1) {
    keysC[5][4] = 0;
  }
  if (keysC[5][5] == 0) {
    keysC[5][5] = 1;
  }
  else
  if (keysC[5][5] == 1) {
    keysC[5][5] = 0;
  }  

  //Column 7

  if (keysC[6][0] == 0) {
    keysC[6][0] = 1;
  }
  else
  if (keysC[6][0] == 1) {
    keysC[6][0] = 0;
  }


  //Write Keyboard A

  //A36
  if ((keysA[0][0] == 0) and (lastA[0][0] == 0)) {
    MidiSend(noteOn1, 36, velocity);
    lastA[0][0] = 7;
  }
  if ((keysA[0][0] == 1) and (lastA[0][0] == 7)) {
    MidiSend(noteOff1, 36, velocity);
    lastA[0][0] = 0;
  }

  //A37
  if ((keysA[1][0] == 0) and (lastA[1][0] == 0)) {
    MidiSend(noteOn1, 37, velocity);
    lastA[1][0] = 7;
  }
  if ((keysA[1][0] == 1) and (lastA[1][0] == 7)) {
    MidiSend(noteOff1, 37, velocity);
    lastA[1][0] = 0;
  }

  //A38
  if ((keysA[1][1] == 0) and (lastA[1][1] == 0)) {
    MidiSend(noteOn1, 38, velocity);
    lastA[1][1] = 7;
  }
  //Write Midi Note Off
  if ((keysA[1][1] == 1) and (lastA[1][1] == 7)) {
    MidiSend(noteOff1, 38, velocity);
    lastA[1][1] = 0;
  }

  //A39
  if ((keysA[1][2] == 0) and (lastA[1][2] == 0)) {
    MidiSend(noteOn1, 39, velocity);
    lastA[1][2] = 7;
  }
  //Write Midi Note Off
  if ((keysA[1][2] == 1) and (lastA[1][2] == 7)) {
    MidiSend(noteOff1, 39, velocity);
    lastA[1][2] = 0;
  }

  //A40
  if ((keysA[1][3] == 0) and (lastA[1][3] == 0)) {
    MidiSend(noteOn1, 40, velocity);
    lastA[1][3] = 7;
  }
  //Write Midi Note Off
  if ((keysA[1][3] == 1) and (lastA[1][3] == 7)) {
    MidiSend(noteOff1, 40, velocity);
    lastA[1][3] = 0;
  }

  //A41
  if ((keysA[1][4] == 0) and (lastA[1][4] == 0)) {
    MidiSend(noteOn1, 41, velocity);
    lastA[1][4] = 7;
  }
  //Write Midi Note Off
  if ((keysA[1][4] == 1) and (lastA[1][4] == 7)) {
    MidiSend(noteOff1, 41, velocity);
    lastA[1][4] = 0;
  }

  //A42
  if ((keysA[1][5] == 0) and (lastA[1][5] == 0)) {
    MidiSend(noteOn1, 42, velocity);
    lastA[1][5] = 7;
  }
  //Write Midi Note Off
  if ((keysA[1][5] == 1) and (lastA[1][5] == 7)) {
    MidiSend(noteOff1, 42, velocity);
    lastA[1][5] = 0;
  }

  //A43
  if ((keysA[2][0] == 0) and (lastA[2][0] == 0)) {
    MidiSend(noteOn1, 43, velocity);
    lastA[2][0] = 7;
  }
  //Write Midi Note Off
  if ((keysA[2][0] == 1) and (lastA[2][0] == 7)) {
    MidiSend(noteOff1, 43, velocity);
    lastA[2][0] = 0;
  }

  //A44
  if ((keysA[2][1] == 0) and (lastA[2][1] == 0)) {
    MidiSend(noteOn1, 44, velocity);
    lastA[2][1] = 7;
  }
  //Write Midi Note Off
  if ((keysA[2][1] == 1) and (lastA[2][1] == 7)) {
    MidiSend(noteOff1, 44, velocity);
    lastA[2][1] = 0;
  }

  //A45
  if ((keysA[2][2] == 0) and (lastA[2][2] == 0)) {
    MidiSend(noteOn1, 45, velocity);
    lastA[2][2] = 7;
  }
  //Write Midi Note Off
  if ((keysA[2][2] == 1) and (lastA[2][2] == 7)) {
    MidiSend(noteOff1, 45, velocity);
    lastA[2][2] = 0;
  }

  //A46
  if ((keysA[2][3] == 0) and (lastA[2][3] == 0)) {
    MidiSend(noteOn1, 46, velocity);
    lastA[2][3] = 7;
  }
  //Write Midi Note Off
  if ((keysA[2][3] == 1) and (lastA[2][3] == 7)) {
    MidiSend(noteOff1, 46, velocity);
    lastA[2][3] = 0;
  }

  //A47
  if ((keysA[2][4] == 0) and (lastA[2][4] == 0)) {
    MidiSend(noteOn1, 47, velocity);
    lastA[2][4] = 7;
  }
  //Write Midi Note Off
  if ((keysA[2][4] == 1) and (lastA[2][4] == 7)) {
    MidiSend(noteOff1, 47, velocity);
    lastA[2][4] = 0;
  }

  //A48
  if ((keysA[2][5] == 0) and (lastA[2][5] == 0)) {
    MidiSend(noteOn1, 48, velocity);
    lastA[2][5] = 7;
  }
  //Write Midi Note Off
  if ((keysA[2][5] == 1) and (lastA[2][5] == 7)) {
    MidiSend(noteOff1, 48, velocity);
    lastA[2][5] = 0;
  }

  //A49
  if ((keysA[3][0] == 0) and (lastA[3][0] == 0)) {
    MidiSend(noteOn1, 49, velocity);
    lastA[3][0] = 7;
  }
  //Write Midi Note Off
  if ((keysA[3][0] == 1) and (lastA[3][0] == 7)) {
    MidiSend(noteOff1, 49, velocity);
    lastA[3][0] = 0;
  }

  //A50
  if ((keysA[3][1] == 0) and (lastA[3][1] == 0)) {
    MidiSend(noteOn1, 50, velocity);
    lastA[3][1] = 7;
  }
  //Write Midi Note Off
  if ((keysA[3][1] == 1) and (lastA[3][1] == 7)) {
    MidiSend(noteOff1, 50, velocity);
    lastA[3][1] = 0;
  }

  //A51
  if ((keysA[3][2] == 0) and (lastA[3][2] == 0)) {
    MidiSend(noteOn1, 51, velocity);
    lastA[3][2] = 7;
  }
  //Write Midi Note Off
  if ((keysA[3][2] == 1) and (lastA[3][2] == 7)) {
    MidiSend(noteOff1, 51, velocity);
    lastA[3][2] = 0;
  }

  //A52
  if ((keysA[3][3] == 0) and (lastA[3][3] == 0)) {
    MidiSend(noteOn1, 52, velocity);
    lastA[3][3] = 7;
  }
  //Write Midi Note Off
  if ((keysA[3][3] == 1) and (lastA[3][3] == 7)) {
    MidiSend(noteOff1, 52, velocity);
    lastA[3][3] = 0;
  }

  //A53
  if ((keysA[3][4] == 0) and (lastA[3][4] == 0)) {
    MidiSend(noteOn1, 53, velocity);
    lastA[3][4] = 7;
  }
  //Write Midi Note Off
  if ((keysA[3][4] == 1) and (lastA[3][4] == 7)) {
    MidiSend(noteOff1, 53, velocity);
    lastA[3][4] = 0;
  }

  //A54
  if ((keysA[3][5] == 0) and (lastA[3][5] == 0)) {
    MidiSend(noteOn1, 54, velocity);
    lastA[3][5] = 7;
  }
  //Write Midi Note Off
  if ((keysA[3][5] == 1) and (lastA[3][5] == 7)) {
    MidiSend(noteOff1, 54, velocity);
    lastA[3][5] = 0;
  }

  //A55
  if ((keysA[4][0] == 0) and (lastA[4][0] == 0)) {
    MidiSend(noteOn1, 55, velocity);
    lastA[4][0] = 7;
  }
  //Write Midi Note Off
  if ((keysA[4][0] == 1) and (lastA[4][0] == 7)) {
    MidiSend(noteOff1, 55, velocity);
    lastA[4][0] = 0;
  }

  //A56
  if ((keysA[4][1] == 0) and (lastA[4][1] == 0)) {
    MidiSend(noteOn1, 56, velocity);
    lastA[4][1] = 7;
  }
  //Write Midi Note Off
  if ((keysA[4][1] == 1) and (lastA[4][1] == 7)) {
    MidiSend(noteOff1, 56, velocity);
    lastA[4][1] = 0;
  }

  //A57
  if ((keysA[4][2] == 0) and (lastA[4][2] == 0)) {
    MidiSend(noteOn1, 57, velocity);
    lastA[4][2] = 7;
  }
  //Write Midi Note Off
  if ((keysA[4][2] == 1) and (lastA[4][2] == 7)) {
    MidiSend(noteOff1, 57, velocity);
    lastA[4][2] = 0;
  }

  //A58
  if ((keysA[4][3] == 0) and (lastA[4][3] == 0)) {
    MidiSend(noteOn1, 58, velocity);
    lastA[4][3] = 7;
  }
  //Write Midi Note Off
  if ((keysA[4][3] == 1) and (lastA[4][3] == 7)) {
    MidiSend(noteOff1, 58, velocity);
    lastA[4][3] = 0;
  }

  //59
  if ((keysA[4][4] == 0) and (lastA[4][4] == 0)) {
    MidiSend(noteOn1, 59, velocity);
    lastA[4][4] = 7;
  }
  //Write Midi Note Off
  if ((keysA[4][4] == 1) and (lastA[4][4] == 7)) {
    MidiSend(noteOff1, 59, velocity);
    lastA[4][4] = 0;
  }

  //A60
  if ((keysA[4][5] == 0) and (lastA[4][5] == 0)) {
    MidiSend(noteOn1, 60, velocity);
    lastA[4][5] = 7;
  }
  //Write Midi Note Off
  if ((keysA[4][5] == 1) and (lastA[4][5] == 7)) {
    MidiSend(noteOff1, 60, velocity);
    lastA[4][5] = 0;
  }

  //A61
  if ((keysA[5][0] == 0) and (lastA[5][0] == 0)) {
    MidiSend(noteOn1, 61, velocity);
    lastA[5][0] = 7;
  }
  //Write Midi Note Off
  if ((keysA[5][0] == 1) and (lastA[5][0] == 7)) {
    MidiSend(noteOff1, 61, velocity);
    lastA[5][0] = 0;
  }

  //A62
  if ((keysA[5][1] == 0) and (lastA[5][1] == 0)) {
    MidiSend(noteOn1, 62, velocity);
    lastA[5][1] = 7;
  }
  //Write Midi Note Off
  if ((keysA[5][1] == 1) and (lastA[5][1] == 7)) {
    MidiSend(noteOff1, 62, velocity);
    lastA[5][1] = 0;
  }

  //A63
  if ((keysA[5][2] == 0) and (lastA[5][2] == 0)) {
    MidiSend(noteOn1, 63, velocity);
    lastA[5][2] = 7;
  }
  //Write Midi Note Off
  if ((keysA[5][2] == 1) and (lastA[5][2] == 7)) {
    MidiSend(noteOff1, 63, velocity);
    lastA[5][2] = 0;
  }

  //A64
  if ((keysA[5][3] == 0) and (lastA[5][3] == 0)) {
    MidiSend(noteOn1, 64, velocity);
    lastA[5][3] = 7;
  }
  //Write Midi Note Off
  if ((keysA[5][3] == 1) and (lastA[5][3] == 7)) {
    MidiSend(noteOff1, 64, velocity);
    lastA[5][3] = 0;
  }

  //A65
  if ((keysA[5][4] == 0) and (lastA[5][4] == 0)) {
    MidiSend(noteOn1, 65, velocity);
    lastA[5][4] = 7;
  }
  //Write Midi Note Off
  if ((keysA[5][4] == 1) and (lastA[5][4] == 7)) {
    MidiSend(noteOff1, 65, velocity);
    lastA[5][4] = 0;
  }

  //A66
  if ((keysA[5][5] == 0) and (lastA[5][5] == 0)) {
    MidiSend(noteOn1, 66, velocity);
    lastA[5][5] = 7;
  }
  //Write Midi Note Off
  if ((keysA[5][5] == 1) and (lastA[5][5] == 7)) {
    MidiSend(noteOff1, 66, velocity);
    lastA[5][5] = 0;
  }

  //A67
  if ((keysA[6][0] == 0) and (lastA[6][0] == 0)) {
    MidiSend(noteOn1, 67, velocity);
    lastA[6][0] = 7;
  }
  //Write Midi Note Off
  if ((keysA[6][0] == 1) and (lastA[6][0] == 7)) {
    MidiSend(noteOff1, 67, velocity);
    lastA[6][0] = 0;
  }

  //A68
  if ((keysA[6][1] == 0) and (lastA[6][1] == 0)) {
    MidiSend(noteOn1, 68, velocity);
    lastA[6][1] = 7;
  }
  //Write Midi Note Off
  if ((keysA[6][1] == 1) and (lastA[6][1] == 7)) {
    MidiSend(noteOff1, 68, velocity);
    lastA[6][1] = 0;
  }

  //A69
  if ((keysA[6][2] == 0) and (lastA[6][2] == 0)) {
    MidiSend(noteOn1, 69, velocity);
    lastA[6][2] = 7;
  }
  //Write Midi Note Off
  if ((keysA[6][2] == 1) and (lastA[6][2] == 7)) {
    MidiSend(noteOff1, 69, velocity);
    lastA[6][2] = 0;
  }

  //A70
  if ((keysA[6][3] == 0) and (lastA[6][3] == 0)) {
    MidiSend(noteOn1, 70, velocity);
    lastA[6][3] = 7;
  }
  //Write Midi Note Off
  if ((keysA[6][3] == 1) and (lastA[6][3] == 7)) {
    MidiSend(noteOff1, 70, velocity);
    lastA[6][3] = 0;
  }

  //A71
  if ((keysA[6][4] == 0) and (lastA[6][4] == 0)) {
    MidiSend(noteOn1, 71, velocity);
    lastA[6][4] = 7;
  }
  //Write Midi Note Off
  if ((keysA[6][4] == 1) and (lastA[6][4] == 7)) {
    MidiSend(noteOff1, 71, velocity);
    lastA[6][4] = 0;
  }

  //A72
  if ((keysA[6][5] == 0) and (lastA[6][5] == 0)) {
    MidiSend(noteOn1, 72, velocity);
    lastA[6][5] = 7;
  }
  //Write Midi Note Off
  if ((keysA[6][5] == 1) and (lastA[6][5] == 7)) {
    MidiSend(noteOff1, 72, velocity);
    lastA[6][5] = 0;
  }

  //A73
  if ((keysA[7][0] == 0) and (lastA[7][0] == 0)) {
    MidiSend(noteOn1, 73, velocity);
    lastA[7][0] = 7;
  }
  //Write Midi Note Off
  if ((keysA[7][0] == 1) and (lastA[7][0] == 7)) {
    MidiSend(noteOff1, 73, velocity);
    lastA[7][0] = 0;
  }

  //A74
  if ((keysA[7][1] == 0) and (lastA[7][1] == 0)) {
    MidiSend(noteOn1, 74, velocity);
    lastA[7][1] = 7;
  }
  //Write Midi Note Off
  if ((keysA[7][1] == 1) and (lastA[7][1] == 7)) {
    MidiSend(noteOff1, 74, velocity);
    lastA[7][1] = 0;
  }

  //A75
  if ((keysA[7][2] == 0) and (lastA[7][2] == 0)) {
    MidiSend(noteOn1, 75, velocity);
    lastA[7][2] = 7;
  }
  //Write Midi Note Off
  if ((keysA[7][2] == 1) and (lastA[7][2] == 7)) {
    MidiSend(noteOff1, 75, velocity);
    lastA[7][2] = 0;
  }

  //A76
  if ((keysA[7][3] == 0) and (lastA[7][3] == 0)) {
    MidiSend(noteOn1, 76, velocity);
    lastA[7][3] = 7;
  }
  //Write Midi Note Off
  if ((keysA[7][3] == 1) and (lastA[7][3] == 7)) {
    MidiSend(noteOff1, 76, velocity);
    lastA[7][3] = 0;
  }

  //A77
  if ((keysA[7][4] == 0) and (lastA[7][4] == 0)) {
    MidiSend(noteOn1, 77, velocity);
    lastA[7][4] = 7;
  }
  //Write Midi Note Off
  if ((keysA[7][4] == 1) and (lastA[7][4] == 7)) {
    MidiSend(noteOff1, 77, velocity);
    lastA[7][4] = 0;
  }

  //A78
  if ((keysA[7][5] == 0) and (lastA[7][5] == 0)) {
    MidiSend(noteOn1, 78, velocity);
    lastA[7][5] = 7;
  }
  //Write Midi Note Off
  if ((keysA[7][5] == 1) and (lastA[7][5] == 7)) {
    MidiSend(noteOff1, 78, velocity);
    lastA[7][5] = 0;
  }

  //A79
  if ((keysA[8][0] == 0) and (lastA[8][0] == 0)) {
    MidiSend(noteOn1, 79, velocity);
    lastA[8][0] = 7;
  }
  //Write Midi Note Off
  if ((keysA[8][0] == 1) and (lastA[8][0] == 7)) {
    MidiSend(noteOff1, 79, velocity);
    lastA[8][0] = 0;
  }

  //A80
  if ((keysA[8][1] == 0) and (lastA[8][1] == 0)) {
    MidiSend(noteOn1, 80, velocity);
    lastA[8][1] = 7;
  }
  //Write Midi Note Off
  if ((keysA[8][1] == 1) and (lastA[8][1] == 7)) {
    MidiSend(noteOff1, 80, velocity);
    lastA[8][1] = 0;
  }

  //A81
  if ((keysA[8][2] == 0) and (lastA[8][2] == 0)) {
    MidiSend(noteOn1, 81, velocity);
    lastA[8][2] = 7;
  }
  //Write Midi Note Off
  if ((keysA[8][2] == 1) and (lastA[8][2] == 7)) {
    MidiSend(noteOff1, 81, velocity);
    lastA[8][2] = 0;
  }

  //A82
  if ((keysA[8][3] == 0) and (lastA[8][3] == 0)) {
    MidiSend(noteOn1, 82, velocity);
    lastA[8][3] = 7;
  }
  //Write Midi Note Off
  if ((keysA[8][3] == 1) and (lastA[8][3] == 7)) {
    MidiSend(noteOff1, 82, velocity);
    lastA[8][3] = 0;
  }

  //A83
  if ((keysA[8][4] == 0) and (lastA[8][4] == 0)) {
    MidiSend(noteOn1, 83, velocity);
    lastA[8][4] = 7;
  }
  //Write Midi Note Off
  if ((keysA[8][4] == 1) and (lastA[8][4] == 7)) {
    MidiSend(noteOff1, 83, velocity);
    lastA[8][4] = 0;
  }

  //A84
  if ((keysA[8][5] == 0) and (lastA[8][5] == 0)) {
    MidiSend(noteOn1, 84, velocity);
    lastA[8][5] = 7;
  }
  //Write Midi Note Off
  if ((keysA[8][5] == 1) and (lastA[8][5] == 7)) {
    MidiSend(noteOff1, 84, velocity);
    lastA[8][5] = 0;
  }

  //A85
  if ((keysA[9][0] == 0) and (lastA[9][0] == 0)) {
    MidiSend(noteOn1, 85, velocity);
    lastA[9][0] = 7;
  }
  //Write Midi Note Off
  if ((keysA[9][0] == 1) and (lastA[9][0] == 7)) {
    MidiSend(noteOff1, 85, velocity);
    lastA[9][0] = 0;
  }

  //A86
  if ((keysA[9][1] == 0) and (lastA[9][1] == 0)) {
    MidiSend(noteOn1, 86, velocity);
    lastA[9][1] = 7;
  }
  //Write Midi Note Off
  if ((keysA[9][1] == 1) and (lastA[9][1] == 7)) {
    MidiSend(noteOff1, 86, velocity);
    lastA[9][1] = 0;
  }

  //A87
  if ((keysA[9][2] == 0) and (lastA[9][2] == 0)) {
    MidiSend(noteOn1, 87, velocity);
    lastA[9][2] = 7;
  }
  //Write Midi Note Off
  if ((keysA[9][2] == 1) and (lastA[9][2] == 7)) {
    MidiSend(noteOff1, 87, velocity);
    lastA[9][2] = 0;
  }

  //A88
  if ((keysA[9][3] == 0) and (lastA[9][3] == 0)) {
    MidiSend(noteOn1, 88, velocity);
    lastA[9][3] = 7;
  }
  //Write Midi Note Off
  if ((keysA[9][3] == 1) and (lastA[9][3] == 7)) {
    MidiSend(noteOff1, 88, velocity);
    lastA[9][3] = 0;
  }

  //A89
  if ((keysA[9][4] == 0) and (lastA[9][4] == 0)) {
    MidiSend(noteOn1, 89, velocity);
    lastA[9][4] = 7;
  }
  //Write Midi Note Off
  if ((keysA[9][4] == 1) and (lastA[9][4] == 7)) {
    MidiSend(noteOff1, 89, velocity);
    lastA[9][4] = 0;
  }

  //A90
  if ((keysA[9][5] == 0) and (lastA[9][5] == 0)) {
    MidiSend(noteOn1, 90, velocity);
    lastA[9][5] = 7;
  }
  //Write Midi Note Off
  if ((keysA[9][5] == 1) and (lastA[9][5] == 7)) {
    MidiSend(noteOff1, 90, velocity);
    lastA[9][5] = 0;
  }

  //A91
  if ((keysA[10][0] == 0) and (lastA[10][0] == 0)) {
    MidiSend(noteOn1, 91, velocity);
    lastA[10][0] = 7;
  }
  //Write Midi Note Off
  if ((keysA[10][0] == 1) and (lastA[10][0] == 7)) {
    MidiSend(noteOff1, 91, velocity);
    lastA[10][0] = 0;
  }

  //A92
  if ((keysA[10][1] == 0) and (lastA[10][1] == 0)) {
    MidiSend(noteOn1, 92, velocity);
    lastA[10][1] = 7;
  }
  //Write Midi Note Off
  if ((keysA[10][1] == 1) and (lastA[10][1] == 7)) {
    MidiSend(noteOff1, 92, velocity);
    lastA[10][1] = 0;
  }

  //A93
  if ((keysA[10][2] == 0) and (lastA[10][2] == 0)) {
    MidiSend(noteOn1, 93, velocity);
    lastA[10][2] = 7;
  }
  //Write Midi Note Off
  if ((keysA[10][2] == 1) and (lastA[10][2] == 7)) {
    MidiSend(noteOff1, 93, velocity);
    lastA[10][2] = 0;
  }

  //A94
  if ((keysA[10][3] == 0) and (lastA[10][3] == 0)) {
    MidiSend(noteOn1, 94, velocity);
    lastA[10][3] = 7;
  }
  //Write Midi Note Off
  if ((keysA[10][3] == 1) and (lastA[10][3] == 7)) {
    MidiSend(noteOff1, 94, velocity);
    lastA[10][3] = 0;
  }

  //A95
  if ((keysA[10][4] == 0) and (lastA[10][4] == 0)) {
    MidiSend(noteOn1, 95, velocity);
    lastA[10][4] = 7;
  }
  //Write Midi Note Off
  if ((keysA[10][4] == 1) and (lastA[10][4] == 7)) {
    MidiSend(noteOff1, 95, velocity);
    lastA[10][4] = 0;
  }

  //A96
  if ((keysA[10][5] == 0) and (lastA[10][5] == 0)) {
    MidiSend(noteOn1, 96, velocity);
    lastA[10][5] = 7;
  }
  //Write Midi Note Off
  if ((keysA[10][5] == 1) and (lastA[10][5] == 7)) {
    MidiSend(noteOff1, 96, velocity);
    lastA[10][5] = 0;
  }

  //Write Keyboard B

  //B36
  if ((keysB[0][0] == 0) and (lastB[0][0] == 0)) {
    MidiSend(noteOn2, 36, velocity);
    lastB[0][0] = 7;
  }
  if ((keysB[0][0] == 1) and (lastB[0][0] == 7)) {
    MidiSend(noteOff2, 36, velocity);
    lastB[0][0] = 0;
  }

  //B37
  if ((keysB[1][0] == 0) and (lastB[1][0] == 0)) {
    MidiSend(noteOn2, 37, velocity);
    lastB[1][0] = 7;
  }
  if ((keysB[1][0] == 1) and (lastB[1][0] == 7)) {
    MidiSend(noteOff2, 37, velocity);
    lastB[1][0] = 0;
  }

  //B38
  if ((keysB[1][1] == 0) and (lastB[1][1] == 0)) {
    MidiSend(noteOn2, 38, velocity);
    lastB[1][1] = 7;
  }
  //Write Midi Note Off
  if ((keysB[1][1] == 1) and (lastB[1][1] == 7)) {
    MidiSend(noteOff2, 38, velocity);
    lastB[1][1] = 0;
  }

  //B39
  if ((keysB[1][2] == 0) and (lastB[1][2] == 0)) {
    MidiSend(noteOn2, 39, velocity);
    lastB[1][2] = 7;
  }
  //Write Midi Note Off
  if ((keysB[1][2] == 1) and (lastB[1][2] == 7)) {
    MidiSend(noteOff2, 39, velocity);
    lastB[1][2] = 0;
  }

  //B40
  if ((keysB[1][3] == 0) and (lastB[1][3] == 0)) {
    MidiSend(noteOn2, 40, velocity);
    lastB[1][3] = 7;
  }
  //Write Midi Note Off
  if ((keysB[1][3] == 1) and (lastB[1][3] == 7)) {
    MidiSend(noteOff2, 40, velocity);
    lastB[1][3] = 0;
  }

  //B41
  if ((keysB[1][4] == 0) and (lastB[1][4] == 0)) {
    MidiSend(noteOn2, 41, velocity);
    lastB[1][4] = 7;
  }
  //Write Midi Note Off
  if ((keysB[1][4] == 1) and (lastB[1][4] == 7)) {
    MidiSend(noteOff2, 41, velocity);
    lastB[1][4] = 0;
  }

  //B42
  if ((keysB[1][5] == 0) and (lastB[1][5] == 0)) {
    MidiSend(noteOn2, 42, velocity);
    lastB[1][5] = 7;
  }
  //Write Midi Note Off
  if ((keysB[1][5] == 1) and (lastB[1][5] == 7)) {
    MidiSend(noteOff2, 42, velocity);
    lastB[1][5] = 0;
  }

  //B43
  if ((keysB[2][0] == 0) and (lastB[2][0] == 0)) {
    MidiSend(noteOn2, 43, velocity);
    lastB[2][0] = 7;
  }
  //Write Midi Note Off
  if ((keysB[2][0] == 1) and (lastB[2][0] == 7)) {
    MidiSend(noteOff2, 43, velocity);
    lastB[2][0] = 0;
  }

  //B44
  if ((keysB[2][1] == 0) and (lastB[2][1] == 0)) {
    MidiSend(noteOn2, 44, velocity);
    lastB[2][1] = 7;
  }
  //Write Midi Note Off
  if ((keysB[2][1] == 1) and (lastB[2][1] == 7)) {
    MidiSend(noteOff2, 44, velocity);
    lastB[2][1] = 0;
  }

  //B45
  if ((keysB[2][2] == 0) and (lastB[2][2] == 0)) {
    MidiSend(noteOn2, 45, velocity);
    lastB[2][2] = 7;
  }
  //Write Midi Note Off
  if ((keysB[2][2] == 1) and (lastB[2][2] == 7)) {
    MidiSend(noteOff2, 45, velocity);
    lastB[2][2] = 0;
  }

  //B46
  if ((keysB[2][3] == 0) and (lastB[2][3] == 0)) {
    MidiSend(noteOn2, 46, velocity);
    lastB[2][3] = 7;
  }
  //Write Midi Note Off
  if ((keysB[2][3] == 1) and (lastB[2][3] == 7)) {
    MidiSend(noteOff2, 46, velocity);
    lastB[2][3] = 0;
  }

  //B47
  if ((keysB[2][4] == 0) and (lastB[2][4] == 0)) {
    MidiSend(noteOn2, 47, velocity);
    lastB[2][4] = 7;
  }
  //Write Midi Note Off
  if ((keysB[2][4] == 1) and (lastB[2][4] == 7)) {
    MidiSend(noteOff2, 47, velocity);
    lastB[2][4] = 0;
  }

  //B48
  if ((keysB[2][5] == 0) and (lastB[2][5] == 0)) {
    MidiSend(noteOn2, 48, velocity);
    lastB[2][5] = 7;
  }
  //Write Midi Note Off
  if ((keysB[2][5] == 1) and (lastB[2][5] == 7)) {
    MidiSend(noteOff2, 48, velocity);
    lastB[2][5] = 0;
  }

  //B49
  if ((keysB[3][0] == 0) and (lastB[3][0] == 0)) {
    MidiSend(noteOn2, 49, velocity);
    lastB[3][0] = 7;
  }
  //Write Midi Note Off
  if ((keysB[3][0] == 1) and (lastB[3][0] == 7)) {
    MidiSend(noteOff2, 49, velocity);
    lastB[3][0] = 0;
  }

  //B50
  if ((keysB[3][1] == 0) and (lastB[3][1] == 0)) {
    MidiSend(noteOn2, 50, velocity);
    lastB[3][1] = 7;
  }
  //Write Midi Note Off
  if ((keysB[3][1] == 1) and (lastB[3][1] == 7)) {
    MidiSend(noteOff2, 50, velocity);
    lastB[3][1] = 0;
  }

  //B51
  if ((keysB[3][2] == 0) and (lastB[3][2] == 0)) {
    MidiSend(noteOn2, 51, velocity);
    lastB[3][2] = 7;
  }
  //Write Midi Note Off
  if ((keysB[3][2] == 1) and (lastB[3][2] == 7)) {
    MidiSend(noteOff2, 51, velocity);
    lastB[3][2] = 0;
  }

  //B52
  if ((keysB[3][3] == 0) and (lastB[3][3] == 0)) {
    MidiSend(noteOn2, 52, velocity);
    lastB[3][3] = 7;
  }
  //Write Midi Note Off
  if ((keysB[3][3] == 1) and (lastB[3][3] == 7)) {
    MidiSend(noteOff2, 52, velocity);
    lastB[3][3] = 0;
  }

  //B53
  if ((keysB[3][4] == 0) and (lastB[3][4] == 0)) {
    MidiSend(noteOn2, 53, velocity);
    lastB[3][4] = 7;
  }
  //Write Midi Note Off
  if ((keysB[3][4] == 1) and (lastB[3][4] == 7)) {
    MidiSend(noteOff2, 53, velocity);
    lastB[3][4] = 0;
  }

  //B54
  if ((keysB[3][5] == 0) and (lastB[3][5] == 0)) {
    MidiSend(noteOn2, 54, velocity);
    lastB[3][5] = 7;
  }
  //Write Midi Note Off
  if ((keysB[3][5] == 1) and (lastB[3][5] == 7)) {
    MidiSend(noteOff2, 54, velocity);
    lastB[3][5] = 0;
  }

  //B55
  if ((keysB[4][0] == 0) and (lastB[4][0] == 0)) {
    MidiSend(noteOn2, 55, velocity);
    lastB[4][0] = 7;
  }
  //Write Midi Note Off
  if ((keysB[4][0] == 1) and (lastB[4][0] == 7)) {
    MidiSend(noteOff2, 55, velocity);
    lastB[4][0] = 0;
  }

  //B56
  if ((keysB[4][1] == 0) and (lastB[4][1] == 0)) {
    MidiSend(noteOn2, 56, velocity);
    lastB[4][1] = 7;
  }
  //Write Midi Note Off
  if ((keysB[4][1] == 1) and (lastB[4][1] == 7)) {
    MidiSend(noteOff2, 56, velocity);
    lastB[4][1] = 0;
  }

  //B57
  if ((keysB[4][2] == 0) and (lastB[4][2] == 0)) {
    MidiSend(noteOn2, 57, velocity);
    lastB[4][2] = 7;
  }
  //Write Midi Note Off
  if ((keysB[4][2] == 1) and (lastB[4][2] == 7)) {
    MidiSend(noteOff2, 57, velocity);
    lastB[4][2] = 0;
  }

  //B58
  if ((keysB[4][3] == 0) and (lastB[4][3] == 0)) {
    MidiSend(noteOn2, 58, velocity);
    lastB[4][3] = 7;
  }
  //Write Midi Note Off
  if ((keysB[4][3] == 1) and (lastB[4][3] == 7)) {
    MidiSend(noteOff2, 58, velocity);
    lastB[4][3] = 0;
  }

  //B59
  if ((keysB[4][4] == 0) and (lastB[4][4] == 0)) {
    MidiSend(noteOn2, 59, velocity);
    lastB[4][4] = 7;
  }
  //Write Midi Note Off
  if ((keysB[4][4] == 1) and (lastB[4][4] == 7)) {
    MidiSend(noteOff2, 59, velocity);
    lastB[4][4] = 0;
  }

  //B60
  if ((keysB[4][5] == 0) and (lastB[4][5] == 0)) {
    MidiSend(noteOn2, 60, velocity);
    lastB[4][5] = 7;
  }
  //Write Midi Note Off
  if ((keysB[4][5] == 1) and (lastB[4][5] == 7)) {
    MidiSend(noteOff2, 60, velocity);
    lastB[4][5] = 0;
  }

  //B61
  if ((keysB[5][0] == 0) and (lastB[5][0] == 0)) {
    MidiSend(noteOn2, 61, velocity);
    lastB[5][0] = 7;
  }
  //Write Midi Note Off
  if ((keysB[5][0] == 1) and (lastB[5][0] == 7)) {
    MidiSend(noteOff2, 61, velocity);
    lastB[5][0] = 0;
  }

  //B62
  if ((keysB[5][1] == 0) and (lastB[5][1] == 0)) {
    MidiSend(noteOn2, 62, velocity);
    lastB[5][1] = 7;
  }
  //Write Midi Note Off
  if ((keysB[5][1] == 1) and (lastB[5][1] == 7)) {
    MidiSend(noteOff2, 62, velocity);
    lastB[5][1] = 0;
  }

  //B63
  if ((keysB[5][2] == 0) and (lastB[5][2] == 0)) {
    MidiSend(noteOn2, 63, velocity);
    lastB[5][2] = 7;
  }
  //Write Midi Note Off
  if ((keysB[5][2] == 1) and (lastB[5][2] == 7)) {
    MidiSend(noteOff2, 63, velocity);
    lastB[5][2] = 0;
  }

  //B64
  if ((keysB[5][3] == 0) and (lastB[5][3] == 0)) {
    MidiSend(noteOn2, 64, velocity);
    lastB[5][3] = 7;
  }
  //Write Midi Note Off
  if ((keysB[5][3] == 1) and (lastB[5][3] == 7)) {
    MidiSend(noteOff2, 64, velocity);
    lastB[5][3] = 0;
  }

  //B65
  if ((keysB[5][4] == 0) and (lastB[5][4] == 0)) {
    MidiSend(noteOn2, 65, velocity);
    lastB[5][4] = 7;
  }
  //Write Midi Note Off
  if ((keysB[5][4] == 1) and (lastB[5][4] == 7)) {
    MidiSend(noteOff2, 65, velocity);
    lastB[5][4] = 0;
  }

  //B66
  if ((keysB[5][5] == 0) and (lastB[5][5] == 0)) {
    MidiSend(noteOn2, 66, velocity);
    lastB[5][5] = 7;
  }
  //Write Midi Note Off
  if ((keysB[5][5] == 1) and (lastB[5][5] == 7)) {
    MidiSend(noteOff2, 66, velocity);
    lastB[5][5] = 0;
  }

  //B67
  if ((keysB[6][0] == 0) and (lastB[6][0] == 0)) {
    MidiSend(noteOn2, 67, velocity);
    lastB[6][0] = 7;
  }
  //Write Midi Note Off
  if ((keysB[6][0] == 1) and (lastB[6][0] == 7)) {
    MidiSend(noteOff2, 67, velocity);
    lastB[6][0] = 0;
  }

  //B68
  if ((keysB[6][1] == 0) and (lastB[6][1] == 0)) {
    MidiSend(noteOn2, 68, velocity);
    lastB[6][1] = 7;
  }
  //Write Midi Note Off
  if ((keysB[6][1] == 1) and (lastB[6][1] == 7)) {
    MidiSend(noteOff2, 68, velocity);
    lastB[6][1] = 0;
  }

  //B69
  if ((keysB[6][2] == 0) and (lastB[6][2] == 0)) {
    MidiSend(noteOn2, 69, velocity);
    lastB[6][2] = 7;
  }
  //Write Midi Note Off
  if ((keysB[6][2] == 1) and (lastB[6][2] == 7)) {
    MidiSend(noteOff2, 69, velocity);
    lastB[6][2] = 0;
  }

  //B70
  if ((keysB[6][3] == 0) and (lastB[6][3] == 0)) {
    MidiSend(noteOn2, 70, velocity);
    lastB[6][3] = 7;
  }
  //Write Midi Note Off
  if ((keysB[6][3] == 1) and (lastB[6][3] == 7)) {
    MidiSend(noteOff2, 70, velocity);
    lastB[6][3] = 0;
  }

  //B71
  if ((keysB[6][4] == 0) and (lastB[6][4] == 0)) {
    MidiSend(noteOn2, 71, velocity);
    lastB[6][4] = 7;
  }
  //Write Midi Note Off
  if ((keysB[6][4] == 1) and (lastB[6][4] == 7)) {
    MidiSend(noteOff2, 71, velocity);
    lastB[6][4] = 0;
  }

  //B72
  if ((keysB[6][5] == 0) and (lastB[6][5] == 0)) {
    MidiSend(noteOn2, 72, velocity);
    lastB[6][5] = 7;
  }
  //Write Midi Note Off
  if ((keysB[6][5] == 1) and (lastB[6][5] == 7)) {
    MidiSend(noteOff2, 72, velocity);
    lastB[6][5] = 0;
  }

  //B73
  if ((keysB[7][0] == 0) and (lastB[7][0] == 0)) {
    MidiSend(noteOn2, 73, velocity);
    lastB[7][0] = 7;
  }
  //Write Midi Note Off
  if ((keysB[7][0] == 1) and (lastB[7][0] == 7)) {
    MidiSend(noteOff2, 73, velocity);
    lastB[7][0] = 0;
  }

  //B74
  if ((keysB[7][1] == 0) and (lastB[7][1] == 0)) {
    MidiSend(noteOn2, 74, velocity);
    lastB[7][1] = 7;
  }
  //Write Midi Note Off
  if ((keysB[7][1] == 1) and (lastB[7][1] == 7)) {
    MidiSend(noteOff2, 74, velocity);
    lastB[7][1] = 0;
  }

  //B75
  if ((keysB[7][2] == 0) and (lastB[7][2] == 0)) {
    MidiSend(noteOn2, 75, velocity);
    lastB[7][2] = 7;
  }
  //Write Midi Note Off
  if ((keysB[7][2] == 1) and (lastB[7][2] == 7)) {
    MidiSend(noteOff2, 75, velocity);
    lastB[7][2] = 0;
  }

  //B76
  if ((keysB[7][3] == 0) and (lastB[7][3] == 0)) {
    MidiSend(noteOn2, 76, velocity);
    lastB[7][3] = 7;
  }
  //Write Midi Note Off
  if ((keysB[7][3] == 1) and (lastB[7][3] == 7)) {
    MidiSend(noteOff2, 76, velocity);
    lastB[7][3] = 0;
  }

  //B77
  if ((keysB[7][4] == 0) and (lastB[7][4] == 0)) {
    MidiSend(noteOn2, 77, velocity);
    lastB[7][4] = 7;
  }
  //Write Midi Note Off
  if ((keysB[7][4] == 1) and (lastB[7][4] == 7)) {
    MidiSend(noteOff2, 77, velocity);
    lastB[7][4] = 0;
  }

  //B78
  if ((keysB[7][5] == 0) and (lastB[7][5] == 0)) {
    MidiSend(noteOn2, 78, velocity);
    lastB[7][5] = 7;
  }
  //Write Midi Note Off
  if ((keysB[7][5] == 1) and (lastB[7][5] == 7)) {
    MidiSend(noteOff2, 78, velocity);
    lastB[7][5] = 0;
  }

  //B79
  if ((keysB[8][0] == 0) and (lastB[8][0] == 0)) {
    MidiSend(noteOn2, 79, velocity);
    lastB[8][0] = 7;
  }
  //Write Midi Note Off
  if ((keysB[8][0] == 1) and (lastB[8][0] == 7)) {
    MidiSend(noteOff2, 79, velocity);
    lastB[8][0] = 0;
  }

  //B80
  if ((keysB[8][1] == 0) and (lastB[8][1] == 0)) {
    MidiSend(noteOn2, 80, velocity);
    lastB[8][1] = 7;
  }
  //Write Midi Note Off
  if ((keysB[8][1] == 1) and (lastB[8][1] == 7)) {
    MidiSend(noteOff2, 80, velocity);
    lastB[8][1] = 0;
  }

  //B81
  if ((keysB[8][2] == 0) and (lastB[8][2] == 0)) {
    MidiSend(noteOn2, 81, velocity);
    lastB[8][2] = 7;
  }
  //Write Midi Note Off
  if ((keysB[8][2] == 1) and (lastB[8][2] == 7)) {
    MidiSend(noteOff2, 81, velocity);
    lastB[8][2] = 0;
  }

  //B82
  if ((keysB[8][3] == 0) and (lastB[8][3] == 0)) {
    MidiSend(noteOn2, 82, velocity);
    lastB[8][3] = 7;
  }
  //Write Midi Note Off
  if ((keysB[8][3] == 1) and (lastB[8][3] == 7)) {
    MidiSend(noteOff2, 82, velocity);
    lastB[8][3] = 0;
  }

  //B83
  if ((keysB[8][4] == 0) and (lastB[8][4] == 0)) {
    MidiSend(noteOn2, 83, velocity);
    lastB[8][4] = 7;
  }
  //Write Midi Note Off
  if ((keysB[8][4] == 1) and (lastB[8][4] == 7)) {
    MidiSend(noteOff2, 83, velocity);
    lastB[8][4] = 0;
  }

  //B84
  if ((keysB[8][5] == 0) and (lastB[8][5] == 0)) {
    MidiSend(noteOn2, 84, velocity);
    lastB[8][5] = 7;
  }
  //Write Midi Note Off
  if ((keysB[8][5] == 1) and (lastB[8][5] == 7)) {
    MidiSend(noteOff2, 84, velocity);
    lastB[8][5] = 0;
  }

  //B85
  if ((keysB[9][0] == 0) and (lastB[9][0] == 0)) {
    MidiSend(noteOn2, 85, velocity);
    lastB[9][0] = 7;
  }
  //Write Midi Note Off
  if ((keysB[9][0] == 1) and (lastB[9][0] == 7)) {
    MidiSend(noteOff2, 85, velocity);
    lastB[9][0] = 0;
  }

  //B86
  if ((keysB[9][1] == 0) and (lastB[9][1] == 0)) {
    MidiSend(noteOn2, 86, velocity);
    lastB[9][1] = 7;
  }
  //Write Midi Note Off
  if ((keysB[9][1] == 1) and (lastB[9][1] == 7)) {
    MidiSend(noteOff2, 86, velocity);
    lastB[9][1] = 0;
  }

  //B87
  if ((keysB[9][2] == 0) and (lastB[9][2] == 0)) {
    MidiSend(noteOn2, 87, velocity);
    lastB[9][2] = 7;
  }
  //Write Midi Note Off
  if ((keysB[9][2] == 1) and (lastB[9][2] == 7)) {
    MidiSend(noteOff2, 87, velocity);
    lastB[9][2] = 0;
  }

  //B88
  if ((keysB[9][3] == 0) and (lastB[9][3] == 0)) {
    MidiSend(noteOn2, 88, velocity);
    lastB[9][3] = 7;
  }
  //Write Midi Note Off
  if ((keysB[9][3] == 1) and (lastB[9][3] == 7)) {
    MidiSend(noteOff2, 88, velocity);
    lastB[9][3] = 0;
  }

  //B89
  if ((keysB[9][4] == 0) and (lastB[9][4] == 0)) {
    MidiSend(noteOn2, 89, velocity);
    lastB[9][4] = 7;
  }
  //Write Midi Note Off
  if ((keysB[9][4] == 1) and (lastB[9][4] == 7)) {
    MidiSend(noteOff2, 89, velocity);
    lastB[9][4] = 0;
  }

  //B90
  if ((keysB[9][5] == 0) and (lastB[9][5] == 0)) {
    MidiSend(noteOn2, 90, velocity);
    lastB[9][5] = 7;
  }
  //Write Midi Note Off
  if ((keysB[9][5] == 1) and (lastB[9][5] == 7)) {
    MidiSend(noteOff2, 90, velocity);
    lastB[9][5] = 0;
  }

  //B91
  if ((keysB[10][0] == 0) and (lastB[10][0] == 0)) {
    MidiSend(noteOn2, 91, velocity);
    lastB[10][0] = 7;
  }
  //Write Midi Note Off
  if ((keysB[10][0] == 1) and (lastB[10][0] == 7)) {
    MidiSend(noteOff2, 91, velocity);
    lastB[10][0] = 0;
  }

  //B92
  if ((keysB[10][1] == 0) and (lastB[10][1] == 0)) {
    MidiSend(noteOn2, 92, velocity);
    lastB[10][1] = 7;
  }
  //Write Midi Note Off
  if ((keysB[10][1] == 1) and (lastB[10][1] == 7)) {
    MidiSend(noteOff2, 92, velocity);
    lastB[10][1] = 0;
  }

  //B93
  if ((keysB[10][2] == 0) and (lastB[10][2] == 0)) {
    MidiSend(noteOn2, 93, velocity);
    lastB[10][2] = 7;
  }
  //Write Midi Note Off
  if ((keysB[10][2] == 1) and (lastB[10][2] == 7)) {
    MidiSend(noteOff2, 93, velocity);
    lastB[10][2] = 0;
  }

  //B94
  if ((keysB[10][3] == 0) and (lastB[10][3] == 0)) {
    MidiSend(noteOn2, 94, velocity);
    lastB[10][3] = 7;
  }
  //Write Midi Note Off
  if ((keysB[10][3] == 1) and (lastB[10][3] == 7)) {
    MidiSend(noteOff2, 94, velocity);
    lastB[10][3] = 0;
  }

  //B95
  if ((keysB[10][4] == 0) and (lastB[10][4] == 0)) {
    MidiSend(noteOn2, 95, velocity);
    lastB[10][4] = 7;
  }
  //Write Midi Note Off
  if ((keysB[10][4] == 1) and (lastB[10][4] == 7)) {
    MidiSend(noteOff2, 95, velocity);
    lastB[10][4] = 0;
  }

  //B96
  if ((keysB[10][5] == 0) and (lastB[10][5] == 0)) {
    MidiSend(noteOn2, 96, velocity);
    lastB[10][5] = 7;
  }
  //Write Midi Note Off
  if ((keysB[10][5] == 1) and (lastB[10][5] == 7)) {
    MidiSend(noteOff2, 96, velocity);
    lastB[10][5] = 0;
  }

  //Write Keyboard C

  //C36
  if ((keysC[0][0] == 0) and (lastC[0][0] == 0)) {
    MidiSend(noteOff3, 36, velocity);
    lastC[0][0] = 7;
  }
  if ((keysC[0][0] == 1) and (lastC[0][0] == 7)) {
    MidiSend(noteOn3, 36, velocity);
    lastC[0][0] = 0;
  }

  //C37
  if ((keysC[1][0] == 0) and (lastC[1][0] == 0)) {
    MidiSend(noteOff3, 37, velocity);
    lastC[1][0] = 7;
  }
  if ((keysC[1][0] == 1) and (lastC[1][0] == 7)) {
    MidiSend(noteOn3, 37, velocity);
    lastC[1][0] = 0;
  }

  //C38
  if ((keysC[1][1] == 0) and (lastC[1][1] == 0)) {
    MidiSend(noteOff3, 38, velocity);
    lastC[1][1] = 7;
  }
  //Write Midi Note Off
  if ((keysC[1][1] == 1) and (lastC[1][1] == 7)) {
    MidiSend(noteOn3, 38, velocity);
    lastC[1][1] = 0;
  }

  //C39
  if ((keysC[1][2] == 0) and (lastC[1][2] == 0)) {
    MidiSend(noteOff3, 39, velocity);
    lastC[1][2] = 7;
  }
  //Write Midi Note Off
  if ((keysC[1][2] == 1) and (lastC[1][2] == 7)) {
    MidiSend(noteOn3, 39, velocity);
    lastC[1][2] = 0;
  }

  //C40
  if ((keysC[1][3] == 0) and (lastC[1][3] == 0)) {
    MidiSend(noteOff3, 40, velocity);
    lastC[1][3] = 7;
  }
  //Write Midi Note Off
  if ((keysC[1][3] == 1) and (lastC[1][3] == 7)) {
    MidiSend(noteOn3, 40, velocity);
    lastC[1][3] = 0;
  }

  //C41
  if ((keysC[1][4] == 0) and (lastC[1][4] == 0)) {
    MidiSend(noteOff3, 41, velocity);
    lastC[1][4] = 7;
  }
  //Write Midi Note Off
  if ((keysC[1][4] == 1) and (lastC[1][4] == 7)) {
    MidiSend(noteOn3, 41, velocity);
    lastC[1][4] = 0;
  }

  //C42
  if ((keysC[1][5] == 0) and (lastC[1][5] == 0)) {
    MidiSend(noteOff3, 42, velocity);
    lastC[1][5] = 7;
  }
  //Write Midi Note Off
  if ((keysC[1][5] == 1) and (lastC[1][5] == 7)) {
    MidiSend(noteOn3, 42, velocity);
    lastC[1][5] = 0;
  }

  //C43
  if ((keysC[2][0] == 0) and (lastC[2][0] == 0)) {
    MidiSend(noteOff3, 43, velocity);
    lastC[2][0] = 7;
  }
  //Write Midi Note Off
  if ((keysC[2][0] == 1) and (lastC[2][0] == 7)) {
    MidiSend(noteOn3, 43, velocity);
    lastC[2][0] = 0;
  }

  //C44
  if ((keysC[2][1] == 0) and (lastC[2][1] == 0)) {
    MidiSend(noteOff3, 44, velocity);
    lastC[2][1] = 7;
  }
  //Write Midi Note Off
  if ((keysC[2][1] == 1) and (lastC[2][1] == 7)) {
    MidiSend(noteOn3, 44, velocity);
    lastC[2][1] = 0;
  }

  //C45
  if ((keysC[2][2] == 0) and (lastC[2][2] == 0)) {
    MidiSend(noteOff3, 45, velocity);
    lastC[2][2] = 7;
  }
  //Write Midi Note Off
  if ((keysC[2][2] == 1) and (lastC[2][2] == 7)) {
    MidiSend(noteOn3, 45, velocity);
    lastC[2][2] = 0;
  }

  //C46
  if ((keysC[2][3] == 0) and (lastC[2][3] == 0)) {
    MidiSend(noteOff3, 46, velocity);
    lastC[2][3] = 7;
  }
  //Write Midi Note Off
  if ((keysC[2][3] == 1) and (lastC[2][3] == 7)) {
    MidiSend(noteOn3, 46, velocity);
    lastC[2][3] = 0;
  }

  //C47
  if ((keysC[2][4] == 0) and (lastC[2][4] == 0)) {
    MidiSend(noteOff3, 47, velocity);
    lastC[2][4] = 7;
  }
  //Write Midi Note Off
  if ((keysC[2][4] == 1) and (lastC[2][4] == 7)) {
    MidiSend(noteOn3, 47, velocity);
    lastC[2][4] = 0;
  }

  //C48
  if ((keysC[2][5] == 0) and (lastC[2][5] == 0)) {
    MidiSend(noteOff3, 48, velocity);
    lastC[2][5] = 7;
  }
  //Write Midi Note Off
  if ((keysC[2][5] == 1) and (lastC[2][5] == 7)) {
    MidiSend(noteOn3, 48, velocity);
    lastC[2][5] = 0;
  }

  //C49
  if ((keysC[3][0] == 0) and (lastC[3][0] == 0)) {
    MidiSend(noteOff3, 49, velocity);
    lastC[3][0] = 7;
  }
  //Write Midi Note Off
  if ((keysC[3][0] == 1) and (lastC[3][0] == 7)) {
    MidiSend(noteOn3, 49, velocity);
    lastC[3][0] = 0;
  }

  //C50
  if ((keysC[3][1] == 0) and (lastC[3][1] == 0)) {
    MidiSend(noteOff3, 50, velocity);
    lastC[3][1] = 7;
  }
  //Write Midi Note Off
  if ((keysC[3][1] == 1) and (lastC[3][1] == 7)) {
    MidiSend(noteOn3, 50, velocity);
    lastC[3][1] = 0;
  }

  //C51
  if ((keysC[3][2] == 0) and (lastC[3][2] == 0)) {
    MidiSend(noteOff3, 51, velocity);
    lastC[3][2] = 7;
  }
  //Write Midi Note Off
  if ((keysC[3][2] == 1) and (lastC[3][2] == 7)) {
    MidiSend(noteOn3, 51, velocity);
    lastC[3][2] = 0;
  }

  //C52
  if ((keysC[3][3] == 0) and (lastC[3][3] == 0)) {
    MidiSend(noteOff3, 52, velocity);
    lastC[3][3] = 7;
  }
  //Write Midi Note Off
  if ((keysC[3][3] == 1) and (lastC[3][3] == 7)) {
    MidiSend(noteOn3, 52, velocity);
    lastC[3][3] = 0;
  }

  //C53
  if ((keysC[3][4] == 0) and (lastC[3][4] == 0)) {
    MidiSend(noteOff3, 53, velocity);
    lastC[3][4] = 7;
  }
  //Write Midi Note Off
  if ((keysC[3][4] == 1) and (lastC[3][4] == 7)) {
    MidiSend(noteOn3, 53, velocity);
    lastC[3][4] = 0;
  }

  //C54
  if ((keysC[3][5] == 0) and (lastC[3][5] == 0)) {
    MidiSend(noteOff3, 54, velocity);
    lastC[3][5] = 7;
  }
  //Write Midi Note Off
  if ((keysC[3][5] == 1) and (lastC[3][5] == 7)) {
    MidiSend(noteOn3, 54, velocity);
    lastC[3][5] = 0;
  }

  //C55
  if ((keysC[4][0] == 0) and (lastC[4][0] == 0)) {
    MidiSend(noteOff3, 55, velocity);
    lastC[4][0] = 7;
  }
  //Write Midi Note Off
  if ((keysC[4][0] == 1) and (lastC[4][0] == 7)) {
    MidiSend(noteOn3, 55, velocity);
    lastC[4][0] = 0;
  }

  //C56
  if ((keysC[4][1] == 0) and (lastC[4][1] == 0)) {
    MidiSend(noteOff3, 56, velocity);
    lastC[4][1] = 7;
  }
  //Write Midi Note Off
  if ((keysC[4][1] == 1) and (lastC[4][1] == 7)) {
    MidiSend(noteOn3, 56, velocity);
    lastC[4][1] = 0;
  }

  //C57
  if ((keysC[4][2] == 0) and (lastC[4][2] == 0)) {
    MidiSend(noteOff3, 57, velocity);
    lastC[4][2] = 7;
  }
  //Write Midi Note Off
  if ((keysC[4][2] == 1) and (lastC[4][2] == 7)) {
    MidiSend(noteOn3, 57, velocity);
    lastC[4][2] = 0;
  }

  //C58
  if ((keysC[4][3] == 0) and (lastC[4][3] == 0)) {
    MidiSend(noteOff3, 58, velocity);
    lastC[4][3] = 7;
  }
  //Write Midi Note Off
  if ((keysC[4][3] == 1) and (lastC[4][3] == 7)) {
    MidiSend(noteOn3, 58, velocity);
    lastC[4][3] = 0;
  }

  //C59
  if ((keysC[4][4] == 0) and (lastC[4][4] == 0)) {
    MidiSend(noteOff3, 59, velocity);
    lastC[4][4] = 7;
  }
  //Write Midi Note Off
  if ((keysC[4][4] == 1) and (lastC[4][4] == 7)) {
    MidiSend(noteOn3, 59, velocity);
    lastC[4][4] = 0;
  }

  //C60
  if ((keysC[4][5] == 0) and (lastC[4][5] == 0)) {
    MidiSend(noteOff3, 60, velocity);
    lastC[4][5] = 7;
  }
  //Write Midi Note Off
  if ((keysC[4][5] == 1) and (lastC[4][5] == 7)) {
    MidiSend(noteOn3, 60, velocity);
    lastC[4][5] = 0;
  }

  //C61
  if ((keysC[5][0] == 0) and (lastC[5][0] == 0)) {
    MidiSend(noteOff3, 61, velocity);
    lastC[5][0] = 7;
  }
  //Write Midi Note Off
  if ((keysC[5][0] == 1) and (lastC[5][0] == 7)) {
    MidiSend(noteOn3, 61, velocity);
    lastC[5][0] = 0;
  }

  //C62
  if ((keysC[5][1] == 0) and (lastC[5][1] == 0)) {
    MidiSend(noteOff3, 62, velocity);
    lastC[5][1] = 7;
  }
  //Write Midi Note Off
  if ((keysC[5][1] == 1) and (lastC[5][1] == 7)) {
    MidiSend(noteOn3, 62, velocity);
    lastC[5][1] = 0;
  }

  //C63
  if ((keysC[5][2] == 0) and (lastC[5][2] == 0)) {
    MidiSend(noteOff3, 63, velocity);
    lastC[5][2] = 7;
  }
  //Write Midi Note Off
  if ((keysC[5][2] == 1) and (lastC[5][2] == 7)) {
    MidiSend(noteOn3, 63, velocity);
    lastC[5][2] = 0;
  }

  //C64
  if ((keysC[5][3] == 0) and (lastC[5][3] == 0)) {
    MidiSend(noteOff3, 64, velocity);
    lastC[5][3] = 7;
  }
  //Write Midi Note Off
  if ((keysC[5][3] == 1) and (lastC[5][3] == 7)) {
    MidiSend(noteOn3, 64, velocity);
    lastC[5][3] = 0;
  }

  //C65
  if ((keysC[5][4] == 0) and (lastC[5][4] == 0)) {
    MidiSend(noteOff3, 65, velocity);
    lastC[5][4] = 7;
  }
  //Write Midi Note Off
  if ((keysC[5][4] == 1) and (lastC[5][4] == 7)) {
    MidiSend(noteOn3, 65, velocity);
    lastC[5][4] = 0;
  }

  //C66
  if ((keysC[5][5] == 0) and (lastC[5][5] == 0)) {
    MidiSend(noteOff3, 66, velocity);
    lastC[5][5] = 7;
  }
  //Write Midi Note Off
  if ((keysC[5][5] == 1) and (lastC[5][5] == 7)) {
    MidiSend(noteOn3, 66, velocity);
    lastC[5][5] = 0;
  }

  //C67
  if ((keysC[6][0] == 0) and (lastC[6][0] == 0)) {
    MidiSend(noteOff3, 67, velocity);
    lastC[6][0] = 7;
  }
  //Write Midi Note Off
  if ((keysC[6][0] == 1) and (lastC[6][0] == 7)) {
    MidiSend(noteOn3, 67, velocity);
    lastC[6][0] = 0;
  }

  //Expression pedal on analog pin 0 to Channel 6

  int Cur6 = analogRead(0);
  int Map6 = map(Cur6, 0, 1023, 0, 127);

  if (abs(Cur6 - LastPot6) >= 8) {
  MidiSend(chan6,Exp,Map6);
  LastPot6 = Cur6;
  }

  //Expression pedal on analog pin 1 to Channel 7
  
  int Cur7 = analogRead(1);
  int Map7 = map(Cur7, 0, 1023, 0, 127);

  if (abs(Cur7 - LastPot7) >= 8) {
  MidiSend(chan7,Exp,Map7);
  LastPot7 = Cur7;
  }
  
}

void MidiSend(int one, int two, int three) {
  Serial.write(one);
  Serial.write(two);
  Serial.write(three);
  }
Bussed Keyboard CodeArduino
Code to upload to the Arduino if you are following the Bussed Keyboard Schematic.
// Name: Arduino Mega Midi Controller 61x4 plus 3 potentiometers.
// Version 1.0
// Created: April 12, 2021
// Author: Larason2
// Acknowledgements: Bald Engineer, Amanda Ghassaei, jeffb42, GrumpyMike

//Note Data

byte keysA[11][6];
byte keysB[11][6];
byte keysC[11][6];
byte keysD[11][6];

//Last Key State

byte lastA[11][6];
byte lastB[11][6];
byte lastC[11][6];
byte lastD[11][6];

//Midi Messages Sent

int noteOn1 = 144;
int noteOff1 = 128;
int noteOn2 = 145;
int noteOff2 = 129;
int noteOn3 = 146;
int noteOff3 = 130;
int noteOn4 = 147;
int noteOff4 = 131;
int velocity = 100;
int chan6 = 181;
int chan7 = 182;
int chan8 = 183;
int Exp = 11;

//Last Potentiometer State

int LastPot6 = 1;
int LastPot7 = 1;
int LastPot8 = 1;

void setup() {
  // Start Serial at Midi rate
  Serial.begin(31250);

  //Initialize Pins 1-10
  pinMode(2, INPUT);
  pinMode(3, INPUT);
  pinMode(4, INPUT);
  pinMode(5, INPUT);
  pinMode(6, INPUT);
  pinMode(7, INPUT);
  pinMode(8, INPUT);
  pinMode(9, INPUT);
  pinMode(10, INPUT);
  pinMode(11, INPUT);

  //Pins 11-20
  
  pinMode(12, INPUT);
  pinMode(13, INPUT);
  pinMode(14, INPUT);
  pinMode(15, INPUT);
  pinMode(16, INPUT);
  pinMode(17, INPUT);
  pinMode(18, INPUT);
  pinMode(19, INPUT);
  pinMode(20, INPUT);
  pinMode(21, INPUT);

  //Pins 21-30
  
  pinMode(22, INPUT);
  pinMode(23, INPUT);
  pinMode(24, INPUT);
  pinMode(25, INPUT);
  pinMode(26, INPUT);
  pinMode(27, INPUT);
  pinMode(28, INPUT);
  pinMode(29, INPUT);
  pinMode(30, INPUT);
  pinMode(31, INPUT);

  //Pins 31-40
  
  pinMode(32, INPUT);
  pinMode(33, INPUT);
  pinMode(34, INPUT);
  pinMode(35, INPUT);
  pinMode(36, INPUT);
  pinMode(37, INPUT);
  pinMode(38, INPUT);
  pinMode(39, INPUT);
  pinMode(40, INPUT);
  pinMode(41, INPUT);

  //Pins 41-50
  
  pinMode(42, INPUT);
  pinMode(43, INPUT);
  pinMode(44, INPUT);
  pinMode(45, INPUT);
  pinMode(46, INPUT);
  pinMode(47, INPUT);
  pinMode(48, INPUT);
  pinMode(49, INPUT);
  pinMode(50, INPUT);
  pinMode(51, INPUT);

  //Pins 51-61
  
  pinMode(52, INPUT);
  pinMode(53, INPUT);
  pinMode(A0, INPUT);
  pinMode(A1, INPUT);
  pinMode(A2, INPUT);
  pinMode(A3, INPUT);
  pinMode(A4, INPUT);
  pinMode(A5, INPUT);
  pinMode(A6, INPUT);
  pinMode(A7, INPUT);
  pinMode(A8, INPUT);

  //Column Pins
  
  pinMode(A9, INPUT);
  pinMode(A10, INPUT);
  pinMode(A11, INPUT);
  pinMode(A12, INPUT);

  //Pot Pins
  
  pinMode(A13, INPUT);
  pinMode(A14, INPUT);
  pinMode(A15, INPUT);
}

void loop() {
  
  // Setup pins for keyboards

  //Pins 1-10
  pinMode(2, INPUT_PULLUP);
  pinMode(3, INPUT_PULLUP);
  pinMode(4, INPUT_PULLUP);
  pinMode(5, INPUT_PULLUP);
  pinMode(6, INPUT_PULLUP);
  pinMode(7, INPUT_PULLUP);
  pinMode(8, INPUT_PULLUP);
  pinMode(9, INPUT_PULLUP);
  pinMode(10, INPUT_PULLUP);
  pinMode(11, INPUT_PULLUP);

  //Pins 11-20
  
  pinMode(12, INPUT_PULLUP);
  pinMode(13, INPUT_PULLUP);
  pinMode(14, INPUT_PULLUP);
  pinMode(15, INPUT_PULLUP);
  pinMode(16, INPUT_PULLUP);
  pinMode(17, INPUT_PULLUP);
  pinMode(18, INPUT_PULLUP);
  pinMode(19, INPUT_PULLUP);
  pinMode(20, INPUT_PULLUP);
  pinMode(21, INPUT_PULLUP);

  //Pins 21-30
  
  pinMode(22, INPUT_PULLUP);
  pinMode(23, INPUT_PULLUP);
  pinMode(24, INPUT_PULLUP);
  pinMode(25, INPUT_PULLUP);
  pinMode(26, INPUT_PULLUP);
  pinMode(27, INPUT_PULLUP);
  pinMode(28, INPUT_PULLUP);
  pinMode(29, INPUT_PULLUP);
  pinMode(30, INPUT_PULLUP);
  pinMode(31, INPUT_PULLUP);

  //Pins 31-40
  
  pinMode(32, INPUT_PULLUP);
  pinMode(33, INPUT_PULLUP);
  pinMode(34, INPUT_PULLUP);
  pinMode(35, INPUT_PULLUP);
  pinMode(36, INPUT_PULLUP);
  pinMode(37, INPUT_PULLUP);
  pinMode(38, INPUT_PULLUP);
  pinMode(39, INPUT_PULLUP);
  pinMode(40, INPUT_PULLUP);
  pinMode(41, INPUT_PULLUP);

  //Pins 41-50
  
  pinMode(42, INPUT_PULLUP);
  pinMode(43, INPUT_PULLUP);
  pinMode(44, INPUT_PULLUP);
  pinMode(45, INPUT_PULLUP);
  pinMode(46, INPUT_PULLUP);
  pinMode(47, INPUT_PULLUP);
  pinMode(48, INPUT_PULLUP);
  pinMode(49, INPUT_PULLUP);
  pinMode(50, INPUT_PULLUP);
  pinMode(51, INPUT_PULLUP);

  //Pins 51-61
  
  pinMode(52, INPUT_PULLUP);
  pinMode(53, INPUT_PULLUP);
  pinMode(A0, INPUT_PULLUP);
  pinMode(A1, INPUT_PULLUP);
  pinMode(A2, INPUT_PULLUP);
  pinMode(A3, INPUT_PULLUP);
  pinMode(A4, INPUT_PULLUP);
  pinMode(A5, INPUT_PULLUP);
  pinMode(A6, INPUT_PULLUP);
  pinMode(A7, INPUT_PULLUP);
  pinMode(A8, INPUT_PULLUP);

  //Read Keyboard A

  pinMode(A9, OUTPUT);
  digitalWrite(A9, LOW);
    
  //Keys 1-10

    keysA[0][0] = digitalRead(2);
    keysA[1][0] = digitalRead(3);
    keysA[1][1] = digitalRead(4);
    keysA[1][2] = digitalRead(5);
    keysA[1][3] = digitalRead(6);
    keysA[1][4] = digitalRead(7);
    keysA[1][5] = digitalRead(8);
    keysA[2][0] = digitalRead(9);
    keysA[2][1] = digitalRead(10);
    keysA[2][2] = digitalRead(11);
    
  //Keys 11-20
    
    keysA[2][3] = digitalRead(12);
    keysA[2][4] = digitalRead(13);
    keysA[2][5] = digitalRead(14);
    keysA[3][0] = digitalRead(15);
    keysA[3][1] = digitalRead(16);
    keysA[3][2] = digitalRead(17);
    keysA[3][3] = digitalRead(18);
    keysA[3][4] = digitalRead(19);
    keysA[3][5] = digitalRead(20);
    keysA[4][0] = digitalRead(21);


  //Keys 21-30

    keysA[4][1] = digitalRead(22);
    keysA[4][2] = digitalRead(23);
    keysA[4][3] = digitalRead(24);
    keysA[4][4] = digitalRead(25);
    keysA[4][5] = digitalRead(26);
    keysA[5][0] = digitalRead(27);
    keysA[5][1] = digitalRead(28);
    keysA[5][2] = digitalRead(29);
    keysA[5][3] = digitalRead(30);
    keysA[5][4] = digitalRead(31);

  //Keys 31-40
    
    keysA[5][5] = digitalRead(32);
    keysA[6][0] = digitalRead(33);
    keysA[6][1] = digitalRead(34);
    keysA[6][2] = digitalRead(35);
    keysA[6][3] = digitalRead(36);
    keysA[6][4] = digitalRead(37);
    keysA[6][5] = digitalRead(38);
    keysA[7][0] = digitalRead(39);
    keysA[7][1] = digitalRead(40);
    keysA[7][2] = digitalRead(41);

  //Keys 41-50

    keysA[7][3] = digitalRead(42);
    keysA[7][4] = digitalRead(43);
    keysA[7][5] = digitalRead(44);
    keysA[8][0] = digitalRead(45);
    keysA[8][1] = digitalRead(46);
    keysA[8][2] = digitalRead(47);
    keysA[8][3] = digitalRead(48);
    keysA[8][4] = digitalRead(49);
    keysA[8][5] = digitalRead(50);
    keysA[9][0] = digitalRead(51);

  //Keys 51-61

    keysA[9][1] = digitalRead(52);
    keysA[9][2] = digitalRead(53);
    keysA[9][3] = digitalRead(A0);
    keysA[9][4] = digitalRead(A1);
    keysA[9][5] = digitalRead(A2);
    keysA[10][0] = digitalRead(A3);
    keysA[10][1] = digitalRead(A4);
    keysA[10][2] = digitalRead(A5);
    keysA[10][3] = digitalRead(A6);
    keysA[10][4] = digitalRead(A7);
    keysA[10][5] = digitalRead(A8);
    
  pinMode(A9, INPUT);

  // Read Keyboard B

  pinMode(A10, OUTPUT);
  digitalWrite(A10, LOW);
    
  //Keys 1-10

    keysB[0][0] = digitalRead(2);
    keysB[1][0] = digitalRead(3);
    keysB[1][1] = digitalRead(4);
    keysB[1][2] = digitalRead(5);
    keysB[1][3] = digitalRead(6);
    keysB[1][4] = digitalRead(7);
    keysB[1][5] = digitalRead(8);
    keysB[2][0] = digitalRead(9);
    keysB[2][1] = digitalRead(10);
    keysB[2][2] = digitalRead(11);
    
  //Keys 11-20
    
    keysB[2][3] = digitalRead(12);
    keysB[2][4] = digitalRead(13);
    keysB[2][5] = digitalRead(14);
    keysB[3][0] = digitalRead(15);
    keysB[3][1] = digitalRead(16);
    keysB[3][2] = digitalRead(17);
    keysB[3][3] = digitalRead(18);
    keysB[3][4] = digitalRead(19);
    keysB[3][5] = digitalRead(20);
    keysB[4][0] = digitalRead(21);


  //Keys 21-30

    keysB[4][1] = digitalRead(22);
    keysB[4][2] = digitalRead(23);
    keysB[4][3] = digitalRead(24);
    keysB[4][4] = digitalRead(25);
    keysB[4][5] = digitalRead(26);
    keysB[5][0] = digitalRead(27);
    keysB[5][1] = digitalRead(28);
    keysB[5][2] = digitalRead(29);
    keysB[5][3] = digitalRead(30);
    keysB[5][4] = digitalRead(31);

  //Keys 31-40
    
    keysB[5][5] = digitalRead(32);
    keysB[6][0] = digitalRead(33);
    keysB[6][1] = digitalRead(34);
    keysB[6][2] = digitalRead(35);
    keysB[6][3] = digitalRead(36);
    keysB[6][4] = digitalRead(37);
    keysB[6][5] = digitalRead(38);
    keysB[7][0] = digitalRead(39);
    keysB[7][1] = digitalRead(40);
    keysB[7][2] = digitalRead(41);

  //Keys 41-50

    keysB[7][3] = digitalRead(42);
    keysB[7][4] = digitalRead(43);
    keysB[7][5] = digitalRead(44);
    keysB[8][0] = digitalRead(45);
    keysB[8][1] = digitalRead(46);
    keysB[8][2] = digitalRead(47);
    keysB[8][3] = digitalRead(48);
    keysB[8][4] = digitalRead(49);
    keysB[8][5] = digitalRead(50);
    keysB[9][0] = digitalRead(51);

  //Keys 51-61

    keysB[9][1] = digitalRead(52);
    keysB[9][2] = digitalRead(53);
    keysB[9][3] = digitalRead(A0);
    keysB[9][4] = digitalRead(A1);
    keysB[9][5] = digitalRead(A2);
    keysB[10][0] = digitalRead(A3);
    keysB[10][1] = digitalRead(A4);
    keysB[10][2] = digitalRead(A5);
    keysB[10][3] = digitalRead(A6);
    keysB[10][4] = digitalRead(A7);
    keysB[10][5] = digitalRead(A8);
    
  pinMode(A10, INPUT);

  // Read Keyboard C

  pinMode(A11, OUTPUT);
  digitalWrite(A11, LOW);
    
  //Keys 1-10

    keysC[0][0] = digitalRead(2);
    keysC[1][0] = digitalRead(3);
    keysC[1][1] = digitalRead(4);
    keysC[1][2] = digitalRead(5);
    keysC[1][3] = digitalRead(6);
    keysC[1][4] = digitalRead(7);
    keysC[1][5] = digitalRead(8);
    keysC[2][0] = digitalRead(9);
    keysC[2][1] = digitalRead(10);
    keysC[2][2] = digitalRead(11);
    
  //Keys 11-20
    
    keysC[2][3] = digitalRead(12);
    keysC[2][4] = digitalRead(13);
    keysC[2][5] = digitalRead(14);
    keysC[3][0] = digitalRead(15);
    keysC[3][1] = digitalRead(16);
    keysC[3][2] = digitalRead(17);
    keysC[3][3] = digitalRead(18);
    keysC[3][4] = digitalRead(19);
    keysC[3][5] = digitalRead(20);
    keysC[4][0] = digitalRead(21);

  //Keys 21-30

    keysC[4][1] = digitalRead(22);
    keysC[4][2] = digitalRead(23);
    keysC[4][3] = digitalRead(24);
    keysC[4][4] = digitalRead(25);
    keysC[4][5] = digitalRead(26);
    keysC[5][0] = digitalRead(27);
    keysC[5][1] = digitalRead(28);
    keysC[5][2] = digitalRead(29);
    keysC[5][3] = digitalRead(30);
    keysC[5][4] = digitalRead(31);

  //Keys 31-40
    
    keysC[5][5] = digitalRead(32);
    keysC[6][0] = digitalRead(33);
    keysC[6][1] = digitalRead(34);
    keysC[6][2] = digitalRead(35);
    keysC[6][3] = digitalRead(36);
    keysC[6][4] = digitalRead(37);
    keysC[6][5] = digitalRead(38);
    keysC[7][0] = digitalRead(39);
    keysC[7][1] = digitalRead(40);
    keysC[7][2] = digitalRead(41);

  //Keys 41-50

    keysC[7][3] = digitalRead(42);
    keysC[7][4] = digitalRead(43);
    keysC[7][5] = digitalRead(44);
    keysC[8][0] = digitalRead(45);
    keysC[8][1] = digitalRead(46);
    keysC[8][2] = digitalRead(47);
    keysC[8][3] = digitalRead(48);
    keysC[8][4] = digitalRead(49);
    keysC[8][5] = digitalRead(50);
    keysC[9][0] = digitalRead(51);
    
  //Keys 51-61

    keysC[9][1] = digitalRead(52);
    keysC[9][2] = digitalRead(53);
    keysC[9][3] = digitalRead(A0);
    keysC[9][4] = digitalRead(A1);
    keysC[9][5] = digitalRead(A2);
    keysC[10][0] = digitalRead(A3);
    keysC[10][1] = digitalRead(A4);
    keysC[10][2] = digitalRead(A5);
    keysC[10][3] = digitalRead(A6);
    keysC[10][4] = digitalRead(A7);
    keysC[10][5] = digitalRead(A8);
    
  pinMode(A11, INPUT);

  // Read Keyboard D

  pinMode(A12, OUTPUT);
  digitalWrite(A12, LOW);
    
  //Keys 1-10

    keysD[0][0] = digitalRead(2);
    keysD[1][0] = digitalRead(3);
    keysD[1][1] = digitalRead(4);
    keysD[1][2] = digitalRead(5);
    keysD[1][3] = digitalRead(6);
    keysD[1][4] = digitalRead(7);
    keysD[1][5] = digitalRead(8);
    keysD[2][0] = digitalRead(9);
    keysD[2][1] = digitalRead(10);
    keysD[2][2] = digitalRead(11);
    
  //Keys 11-20
    
    keysD[2][3] = digitalRead(12);
    keysD[2][4] = digitalRead(13);
    keysD[2][5] = digitalRead(14);
    keysD[3][0] = digitalRead(15);
    keysD[3][1] = digitalRead(16);
    keysD[3][2] = digitalRead(17);
    keysD[3][3] = digitalRead(18);
    keysD[3][4] = digitalRead(19);
    keysD[3][5] = digitalRead(20);
    keysD[4][0] = digitalRead(21);


  //Keys 21-30

    keysD[4][1] = digitalRead(22);
    keysD[4][2] = digitalRead(23);
    keysD[4][3] = digitalRead(24);
    keysD[4][4] = digitalRead(25);
    keysD[4][5] = digitalRead(26);
    keysD[5][0] = digitalRead(27);
    keysD[5][1] = digitalRead(28);
    keysD[5][2] = digitalRead(29);
    keysD[5][3] = digitalRead(30);
    keysD[5][4] = digitalRead(31);

  //Keys 31-40
    
    keysD[5][5] = digitalRead(32);
    keysD[6][0] = digitalRead(33);
    keysD[6][1] = digitalRead(34);
    keysD[6][2] = digitalRead(35);
    keysD[6][3] = digitalRead(36);
    keysD[6][4] = digitalRead(37);
    keysD[6][5] = digitalRead(38);
    keysD[7][0] = digitalRead(39);
    keysD[7][1] = digitalRead(40);
    keysD[7][2] = digitalRead(41);

  //Keys 41-50

    keysD[7][3] = digitalRead(42);
    keysD[7][4] = digitalRead(43);
    keysD[7][5] = digitalRead(44);
    keysD[8][0] = digitalRead(45);
    keysD[8][1] = digitalRead(46);
    keysD[8][2] = digitalRead(47);
    keysD[8][3] = digitalRead(48);
    keysD[8][4] = digitalRead(49);
    keysD[8][5] = digitalRead(50);
    keysD[9][0] = digitalRead(51);

  //Keys 51-61

    keysD[9][1] = digitalRead(52);
    keysD[9][2] = digitalRead(53);
    keysD[9][3] = digitalRead(A0);
    keysD[9][4] = digitalRead(A1);
    keysD[9][5] = digitalRead(A2);
    keysD[10][0] = digitalRead(A3);
    keysD[10][1] = digitalRead(A4);
    keysD[10][2] = digitalRead(A5);
    keysD[10][3] = digitalRead(A6);
    keysD[10][4] = digitalRead(A7);
    keysD[10][5] = digitalRead(A8);
    
  pinMode(A12, INPUT);

  //Return pins to Initialized state

  //Pins 1-10
  
  pinMode(2, INPUT);
  pinMode(3, INPUT);
  pinMode(4, INPUT);
  pinMode(5, INPUT);
  pinMode(6, INPUT);
  pinMode(7, INPUT);
  pinMode(8, INPUT);
  pinMode(9, INPUT);
  pinMode(10, INPUT);
  pinMode(11, INPUT);

  //Pins 11-20
  
  pinMode(12, INPUT);
  pinMode(13, INPUT);
  pinMode(14, INPUT);
  pinMode(15, INPUT);
  pinMode(16, INPUT);
  pinMode(17, INPUT);
  pinMode(18, INPUT);
  pinMode(19, INPUT);
  pinMode(20, INPUT);
  pinMode(21, INPUT);

  //Pins 21-30
  
  pinMode(22, INPUT);
  pinMode(23, INPUT);
  pinMode(24, INPUT);
  pinMode(25, INPUT);
  pinMode(26, INPUT);
  pinMode(27, INPUT);
  pinMode(28, INPUT);
  pinMode(29, INPUT);
  pinMode(30, INPUT);
  pinMode(31, INPUT);

  //Pins 31-40
  
  pinMode(32, INPUT);
  pinMode(33, INPUT);
  pinMode(34, INPUT);
  pinMode(35, INPUT);
  pinMode(36, INPUT);
  pinMode(37, INPUT);
  pinMode(38, INPUT);
  pinMode(39, INPUT);
  pinMode(40, INPUT);
  pinMode(41, INPUT);

  //Pins 41-50
  
  pinMode(42, INPUT);
  pinMode(43, INPUT);
  pinMode(44, INPUT);
  pinMode(45, INPUT);
  pinMode(46, INPUT);
  pinMode(47, INPUT);
  pinMode(48, INPUT);
  pinMode(49, INPUT);
  pinMode(50, INPUT);
  pinMode(51, INPUT);

  //Pins 51-61
  
  pinMode(52, INPUT);
  pinMode(53, INPUT);
  pinMode(A0, INPUT);
  pinMode(A1, INPUT);
  pinMode(A2, INPUT);
  pinMode(A3, INPUT);
  pinMode(A4, INPUT);
  pinMode(A5, INPUT);
  pinMode(A6, INPUT);
  pinMode(A7, INPUT);
  pinMode(A8, INPUT);

  //Column Pins
  
  pinMode(A9, INPUT);
  pinMode(A10, INPUT);
  pinMode(A11, INPUT);
  pinMode(A12, INPUT);

  //Pot Pins
  
  pinMode(A13, INPUT);
  pinMode(A14, INPUT);
  pinMode(A15, INPUT);

  /*
  //Invert Keyboard data only if needed.
  //Example only for 32 pedals of a pedalboard, first 32 keys of keyboard C.

  //Column 1

  if (keysC[0][0] == 0) {
    keysC[0][0] = 1;
  }
  else
  if (keysC[0][0] == 1) {
    keysC[0][0] = 0;
  }

  //Column 2
  
  if (keysC[1][0] == 0) {
    keysC[1][0] = 1;
  }
  else
  if (keysC[1][0] == 1) {
    keysC[1][0] = 0;
  }
  if (keysC[1][1] == 0) {
    keysC[1][1] = 1;
  }
  else
  if (keysC[1][1] == 1) {
    keysC[1][1] = 0;
  }  
  if (keysC[1][2] == 0) {
    keysC[1][2] = 1;
  }
  else
  if (keysC[1][2] == 1) {
    keysC[1][2] = 0;
  }
  if (keysC[1][3] == 0) {
    keysC[1][3] = 1;
  }
  else
  if (keysC[1][3] == 1) {
    keysC[1][3] = 0;
  }  
  if (keysC[1][4] == 0) {
    keysC[1][4] = 1;
  }
  else
  if (keysC[1][4] == 1) {
    keysC[1][4] = 0;
  }
  if (keysC[1][5] == 0) {
    keysC[1][5] = 1;
  }
  else
  if (keysC[1][5] == 1) {
    keysC[1][5] = 0;
  }  

  //Column 3

  if (keysC[2][0] == 0) {
    keysC[2][0] = 1;
  }
  else
  if (keysC[2][0] == 1) {
    keysC[2][0] = 0;
  }
  if (keysC[2][1] == 0) {
    keysC[2][1] = 1;
  }
  else
  if (keysC[2][1] == 1) {
    keysC[2][1] = 0;
  }  
  if (keysC[2][2] == 0) {
    keysC[2][2] = 1;
  }
  else
  if (keysC[2][2] == 1) {
    keysC[2][2] = 0;
  }
  if (keysC[2][3] == 0) {
    keysC[2][3] = 1;
  }
  else
  if (keysC[2][3] == 1) {
    keysC[2][3] = 0;
  }  
  if (keysC[2][4] == 0) {
    keysC[2][4] = 1;
  }
  else
  if (keysC[2][4] == 1) {
    keysC[2][4] = 0;
  }
  if (keysC[2][5] == 0) {
    keysC[2][5] = 1;
  }
  else
  if (keysC[2][5] == 1) {
    keysC[2][5] = 0;
  }  

  //Column 4

  if (keysC[3][0] == 0) {
    keysC[3][0] = 1;
  }
  else
  if (keysC[3][0] == 1) {
    keysC[3][0] = 0;
  }
  if (keysC[3][1] == 0) {
    keysC[3][1] = 1;
  }
  else
  if (keysC[3][1] == 1) {
    keysC[3][1] = 0;
  }  
  if (keysC[3][2] == 0) {
    keysC[3][2] = 1;
  }
  else
  if (keysC[3][2] == 1) {
    keysC[3][2] = 0;
  }
  if (keysC[3][3] == 0) {
    keysC[3][3] = 1;
  }
  else
  if (keysC[3][3] == 1) {
    keysC[3][3] = 0;
  }  
  if (keysC[3][4] == 0) {
    keysC[3][4] = 1;
  }
  else
  if (keysC[3][4] == 1) {
    keysC[3][4] = 0;
  }
  if (keysC[3][5] == 0) {
    keysC[3][5] = 1;
  }
  else
  if (keysC[3][5] == 1) {
    keysC[3][5] = 0;
  }  

  //Column 5

  if (keysC[4][0] == 0) {
    keysC[4][0] = 1;
  }
  else
  if (keysC[4][0] == 1) {
    keysC[4][0] = 0;
  }
  if (keysC[4][1] == 0) {
    keysC[4][1] = 1;
  }
  else
  if (keysC[4][1] == 1) {
    keysC[4][1] = 0;
  }  
  if (keysC[4][2] == 0) {
    keysC[4][2] = 1;
  }
  else
  if (keysC[4][2] == 1) {
    keysC[4][2] = 0;
  }
  if (keysC[4][3] == 0) {
    keysC[4][3] = 1;
  }
  else
  if (keysC[4][3] == 1) {
    keysC[4][3] = 0;
  }  
  if (keysC[4][4] == 0) {
    keysC[4][4] = 1;
  }
  else
  if (keysC[4][4] == 1) {
    keysC[4][4] = 0;
  }
  if (keysC[4][5] == 0) {
    keysC[4][5] = 1;
  }
  else
  if (keysC[4][5] == 1) {
    keysC[4][5] = 0;
  }  

  //Column 6

  if (keysC[5][0] == 0) {
    keysC[5][0] = 1;
  }
  else
  if (keysC[5][0] == 1) {
    keysC[5][0] = 0;
  }
  if (keysC[5][1] == 0) {
    keysC[5][1] = 1;
  }
  else
  if (keysC[5][1] == 1) {
    keysC[5][1] = 0;
  }  
  if (keysC[5][2] == 0) {
    keysC[5][2] = 1;
  }
  else
  if (keysC[5][2] == 1) {
    keysC[5][2] = 0;
  }
  if (keysC[5][3] == 0) {
    keysC[5][3] = 1;
  }
  else
  if (keysC[5][3] == 1) {
    keysC[5][3] = 0;
  }  
  if (keysC[5][4] == 0) {
    keysC[5][4] = 1;
  }
  else
  if (keysC[5][4] == 1) {
    keysC[5][4] = 0;
  }
  if (keysC[5][5] == 0) {
    keysC[5][5] = 1;
  }
  else
  if (keysC[5][5] == 1) {
    keysC[5][5] = 0;
  }  

  //Column 7

  if (keysC[6][0] == 0) {
    keysC[6][0] = 1;
  }
  else
  if (keysC[6][0] == 1) {
    keysC[6][0] = 0;
  }
  */
  
  //Write Keyboard A

  //A36
  if ((keysA[0][0] == 0) and (lastA[0][0] == 0)) {
    MidiSend(noteOn1, 36, velocity);
    lastA[0][0] = 7;
  }
  if ((keysA[0][0] == 1) and (lastA[0][0] == 7)) {
    MidiSend(noteOff1, 36, velocity);
    lastA[0][0] = 0;
  }

  //A37
  if ((keysA[1][0] == 0) and (lastA[1][0] == 0)) {
    MidiSend(noteOn1, 37, velocity);
    lastA[1][0] = 7;
  }
  if ((keysA[1][0] == 1) and (lastA[1][0] == 7)) {
    MidiSend(noteOff1, 37, velocity);
    lastA[1][0] = 0;
  }

  //A38
  if ((keysA[1][1] == 0) and (lastA[1][1] == 0)) {
    MidiSend(noteOn1, 38, velocity);
    lastA[1][1] = 7;
  }
  //Write Midi Note Off
  if ((keysA[1][1] == 1) and (lastA[1][1] == 7)) {
    MidiSend(noteOff1, 38, velocity);
    lastA[1][1] = 0;
  }

  //A39
  if ((keysA[1][2] == 0) and (lastA[1][2] == 0)) {
    MidiSend(noteOn1, 39, velocity);
    lastA[1][2] = 7;
  }
  //Write Midi Note Off
  if ((keysA[1][2] == 1) and (lastA[1][2] == 7)) {
    MidiSend(noteOff1, 39, velocity);
    lastA[1][2] = 0;
  }

  //A40
  if ((keysA[1][3] == 0) and (lastA[1][3] == 0)) {
    MidiSend(noteOn1, 40, velocity);
    lastA[1][3] = 7;
  }
  //Write Midi Note Off
  if ((keysA[1][3] == 1) and (lastA[1][3] == 7)) {
    MidiSend(noteOff1, 40, velocity);
    lastA[1][3] = 0;
  }

  //A41
  if ((keysA[1][4] == 0) and (lastA[1][4] == 0)) {
    MidiSend(noteOn1, 41, velocity);
    lastA[1][4] = 7;
  }
  //Write Midi Note Off
  if ((keysA[1][4] == 1) and (lastA[1][4] == 7)) {
    MidiSend(noteOff1, 41, velocity);
    lastA[1][4] = 0;
  }

  //A42
  if ((keysA[1][5] == 0) and (lastA[1][5] == 0)) {
    MidiSend(noteOn1, 42, velocity);
    lastA[1][5] = 7;
  }
  //Write Midi Note Off
  if ((keysA[1][5] == 1) and (lastA[1][5] == 7)) {
    MidiSend(noteOff1, 42, velocity);
    lastA[1][5] = 0;
  }

  //A43
  if ((keysA[2][0] == 0) and (lastA[2][0] == 0)) {
    MidiSend(noteOn1, 43, velocity);
    lastA[2][0] = 7;
  }
  //Write Midi Note Off
  if ((keysA[2][0] == 1) and (lastA[2][0] == 7)) {
    MidiSend(noteOff1, 43, velocity);
    lastA[2][0] = 0;
  }

  //A44
  if ((keysA[2][1] == 0) and (lastA[2][1] == 0)) {
    MidiSend(noteOn1, 44, velocity);
    lastA[2][1] = 7;
  }
  //Write Midi Note Off
  if ((keysA[2][1] == 1) and (lastA[2][1] == 7)) {
    MidiSend(noteOff1, 44, velocity);
    lastA[2][1] = 0;
  }

  //A45
  if ((keysA[2][2] == 0) and (lastA[2][2] == 0)) {
    MidiSend(noteOn1, 45, velocity);
    lastA[2][2] = 7;
  }
  //Write Midi Note Off
  if ((keysA[2][2] == 1) and (lastA[2][2] == 7)) {
    MidiSend(noteOff1, 45, velocity);
    lastA[2][2] = 0;
  }

  //A46
  if ((keysA[2][3] == 0) and (lastA[2][3] == 0)) {
    MidiSend(noteOn1, 46, velocity);
    lastA[2][3] = 7;
  }
  //Write Midi Note Off
  if ((keysA[2][3] == 1) and (lastA[2][3] == 7)) {
    MidiSend(noteOff1, 46, velocity);
    lastA[2][3] = 0;
  }

  //A47
  if ((keysA[2][4] == 0) and (lastA[2][4] == 0)) {
    MidiSend(noteOn1, 47, velocity);
    lastA[2][4] = 7;
  }
  //Write Midi Note Off
  if ((keysA[2][4] == 1) and (lastA[2][4] == 7)) {
    MidiSend(noteOff1, 47, velocity);
    lastA[2][4] = 0;
  }

  //A48
  if ((keysA[2][5] == 0) and (lastA[2][5] == 0)) {
    MidiSend(noteOn1, 48, velocity);
    lastA[2][5] = 7;
  }
  //Write Midi Note Off
  if ((keysA[2][5] == 1) and (lastA[2][5] == 7)) {
    MidiSend(noteOff1, 48, velocity);
    lastA[2][5] = 0;
  }

  //A49
  if ((keysA[3][0] == 0) and (lastA[3][0] == 0)) {
    MidiSend(noteOn1, 49, velocity);
    lastA[3][0] = 7;
  }
  //Write Midi Note Off
  if ((keysA[3][0] == 1) and (lastA[3][0] == 7)) {
    MidiSend(noteOff1, 49, velocity);
    lastA[3][0] = 0;
  }

  //A50
  if ((keysA[3][1] == 0) and (lastA[3][1] == 0)) {
    MidiSend(noteOn1, 50, velocity);
    lastA[3][1] = 7;
  }
  //Write Midi Note Off
  if ((keysA[3][1] == 1) and (lastA[3][1] == 7)) {
    MidiSend(noteOff1, 50, velocity);
    lastA[3][1] = 0;
  }

  //A51
  if ((keysA[3][2] == 0) and (lastA[3][2] == 0)) {
    MidiSend(noteOn1, 51, velocity);
    lastA[3][2] = 7;
  }
  //Write Midi Note Off
  if ((keysA[3][2] == 1) and (lastA[3][2] == 7)) {
    MidiSend(noteOff1, 51, velocity);
    lastA[3][2] = 0;
  }

  //A52
  if ((keysA[3][3] == 0) and (lastA[3][3] == 0)) {
    MidiSend(noteOn1, 52, velocity);
    lastA[3][3] = 7;
  }
  //Write Midi Note Off
  if ((keysA[3][3] == 1) and (lastA[3][3] == 7)) {
    MidiSend(noteOff1, 52, velocity);
    lastA[3][3] = 0;
  }

  //A53
  if ((keysA[3][4] == 0) and (lastA[3][4] == 0)) {
    MidiSend(noteOn1, 53, velocity);
    lastA[3][4] = 7;
  }
  //Write Midi Note Off
  if ((keysA[3][4] == 1) and (lastA[3][4] == 7)) {
    MidiSend(noteOff1, 53, velocity);
    lastA[3][4] = 0;
  }

  //A54
  if ((keysA[3][5] == 0) and (lastA[3][5] == 0)) {
    MidiSend(noteOn1, 54, velocity);
    lastA[3][5] = 7;
  }
  //Write Midi Note Off
  if ((keysA[3][5] == 1) and (lastA[3][5] == 7)) {
    MidiSend(noteOff1, 54, velocity);
    lastA[3][5] = 0;
  }

  //A55
  if ((keysA[4][0] == 0) and (lastA[4][0] == 0)) {
    MidiSend(noteOn1, 55, velocity);
    lastA[4][0] = 7;
  }
  //Write Midi Note Off
  if ((keysA[4][0] == 1) and (lastA[4][0] == 7)) {
    MidiSend(noteOff1, 55, velocity);
    lastA[4][0] = 0;
  }

  //A56
  if ((keysA[4][1] == 0) and (lastA[4][1] == 0)) {
    MidiSend(noteOn1, 56, velocity);
    lastA[4][1] = 7;
  }
  //Write Midi Note Off
  if ((keysA[4][1] == 1) and (lastA[4][1] == 7)) {
    MidiSend(noteOff1, 56, velocity);
    lastA[4][1] = 0;
  }

  //A57
  if ((keysA[4][2] == 0) and (lastA[4][2] == 0)) {
    MidiSend(noteOn1, 57, velocity);
    lastA[4][2] = 7;
  }
  //Write Midi Note Off
  if ((keysA[4][2] == 1) and (lastA[4][2] == 7)) {
    MidiSend(noteOff1, 57, velocity);
    lastA[4][2] = 0;
  }

  //A58
  if ((keysA[4][3] == 0) and (lastA[4][3] == 0)) {
    MidiSend(noteOn1, 58, velocity);
    lastA[4][3] = 7;
  }
  //Write Midi Note Off
  if ((keysA[4][3] == 1) and (lastA[4][3] == 7)) {
    MidiSend(noteOff1, 58, velocity);
    lastA[4][3] = 0;
  }

  //59
  if ((keysA[4][4] == 0) and (lastA[4][4] == 0)) {
    MidiSend(noteOn1, 59, velocity);
    lastA[4][4] = 7;
  }
  //Write Midi Note Off
  if ((keysA[4][4] == 1) and (lastA[4][4] == 7)) {
    MidiSend(noteOff1, 59, velocity);
    lastA[4][4] = 0;
  }

  //A60
  if ((keysA[4][5] == 0) and (lastA[4][5] == 0)) {
    MidiSend(noteOn1, 60, velocity);
    lastA[4][5] = 7;
  }
  //Write Midi Note Off
  if ((keysA[4][5] == 1) and (lastA[4][5] == 7)) {
    MidiSend(noteOff1, 60, velocity);
    lastA[4][5] = 0;
  }

  //A61
  if ((keysA[5][0] == 0) and (lastA[5][0] == 0)) {
    MidiSend(noteOn1, 61, velocity);
    lastA[5][0] = 7;
  }
  //Write Midi Note Off
  if ((keysA[5][0] == 1) and (lastA[5][0] == 7)) {
    MidiSend(noteOff1, 61, velocity);
    lastA[5][0] = 0;
  }

  //A62
  if ((keysA[5][1] == 0) and (lastA[5][1] == 0)) {
    MidiSend(noteOn1, 62, velocity);
    lastA[5][1] = 7;
  }
  //Write Midi Note Off
  if ((keysA[5][1] == 1) and (lastA[5][1] == 7)) {
    MidiSend(noteOff1, 62, velocity);
    lastA[5][1] = 0;
  }

  //A63
  if ((keysA[5][2] == 0) and (lastA[5][2] == 0)) {
    MidiSend(noteOn1, 63, velocity);
    lastA[5][2] = 7;
  }
  //Write Midi Note Off
  if ((keysA[5][2] == 1) and (lastA[5][2] == 7)) {
    MidiSend(noteOff1, 63, velocity);
    lastA[5][2] = 0;
  }

  //A64
  if ((keysA[5][3] == 0) and (lastA[5][3] == 0)) {
    MidiSend(noteOn1, 64, velocity);
    lastA[5][3] = 7;
  }
  //Write Midi Note Off
  if ((keysA[5][3] == 1) and (lastA[5][3] == 7)) {
    MidiSend(noteOff1, 64, velocity);
    lastA[5][3] = 0;
  }

  //A65
  if ((keysA[5][4] == 0) and (lastA[5][4] == 0)) {
    MidiSend(noteOn1, 65, velocity);
    lastA[5][4] = 7;
  }
  //Write Midi Note Off
  if ((keysA[5][4] == 1) and (lastA[5][4] == 7)) {
    MidiSend(noteOff1, 65, velocity);
    lastA[5][4] = 0;
  }

  //A66
  if ((keysA[5][5] == 0) and (lastA[5][5] == 0)) {
    MidiSend(noteOn1, 66, velocity);
    lastA[5][5] = 7;
  }
  //Write Midi Note Off
  if ((keysA[5][5] == 1) and (lastA[5][5] == 7)) {
    MidiSend(noteOff1, 66, velocity);
    lastA[5][5] = 0;
  }

  //A67
  if ((keysA[6][0] == 0) and (lastA[6][0] == 0)) {
    MidiSend(noteOn1, 67, velocity);
    lastA[6][0] = 7;
  }
  //Write Midi Note Off
  if ((keysA[6][0] == 1) and (lastA[6][0] == 7)) {
    MidiSend(noteOff1, 67, velocity);
    lastA[6][0] = 0;
  }

  //A68
  if ((keysA[6][1] == 0) and (lastA[6][1] == 0)) {
    MidiSend(noteOn1, 68, velocity);
    lastA[6][1] = 7;
  }
  //Write Midi Note Off
  if ((keysA[6][1] == 1) and (lastA[6][1] == 7)) {
    MidiSend(noteOff1, 68, velocity);
    lastA[6][1] = 0;
  }

  //A69
  if ((keysA[6][2] == 0) and (lastA[6][2] == 0)) {
    MidiSend(noteOn1, 69, velocity);
    lastA[6][2] = 7;
  }
  //Write Midi Note Off
  if ((keysA[6][2] == 1) and (lastA[6][2] == 7)) {
    MidiSend(noteOff1, 69, velocity);
    lastA[6][2] = 0;
  }

  //A70
  if ((keysA[6][3] == 0) and (lastA[6][3] == 0)) {
    MidiSend(noteOn1, 70, velocity);
    lastA[6][3] = 7;
  }
  //Write Midi Note Off
  if ((keysA[6][3] == 1) and (lastA[6][3] == 7)) {
    MidiSend(noteOff1, 70, velocity);
    lastA[6][3] = 0;
  }

  //A71
  if ((keysA[6][4] == 0) and (lastA[6][4] == 0)) {
    MidiSend(noteOn1, 71, velocity);
    lastA[6][4] = 7;
  }
  //Write Midi Note Off
  if ((keysA[6][4] == 1) and (lastA[6][4] == 7)) {
    MidiSend(noteOff1, 71, velocity);
    lastA[6][4] = 0;
  }

  //A72
  if ((keysA[6][5] == 0) and (lastA[6][5] == 0)) {
    MidiSend(noteOn1, 72, velocity);
    lastA[6][5] = 7;
  }
  //Write Midi Note Off
  if ((keysA[6][5] == 1) and (lastA[6][5] == 7)) {
    MidiSend(noteOff1, 72, velocity);
    lastA[6][5] = 0;
  }

  //A73
  if ((keysA[7][0] == 0) and (lastA[7][0] == 0)) {
    MidiSend(noteOn1, 73, velocity);
    lastA[7][0] = 7;
  }
  //Write Midi Note Off
  if ((keysA[7][0] == 1) and (lastA[7][0] == 7)) {
    MidiSend(noteOff1, 73, velocity);
    lastA[7][0] = 0;
  }

  //A74
  if ((keysA[7][1] == 0) and (lastA[7][1] == 0)) {
    MidiSend(noteOn1, 74, velocity);
    lastA[7][1] = 7;
  }
  //Write Midi Note Off
  if ((keysA[7][1] == 1) and (lastA[7][1] == 7)) {
    MidiSend(noteOff1, 74, velocity);
    lastA[7][1] = 0;
  }

  //A75
  if ((keysA[7][2] == 0) and (lastA[7][2] == 0)) {
    MidiSend(noteOn1, 75, velocity);
    lastA[7][2] = 7;
  }
  //Write Midi Note Off
  if ((keysA[7][2] == 1) and (lastA[7][2] == 7)) {
    MidiSend(noteOff1, 75, velocity);
    lastA[7][2] = 0;
  }

  //A76
  if ((keysA[7][3] == 0) and (lastA[7][3] == 0)) {
    MidiSend(noteOn1, 76, velocity);
    lastA[7][3] = 7;
  }
  //Write Midi Note Off
  if ((keysA[7][3] == 1) and (lastA[7][3] == 7)) {
    MidiSend(noteOff1, 76, velocity);
    lastA[7][3] = 0;
  }

  //A77
  if ((keysA[7][4] == 0) and (lastA[7][4] == 0)) {
    MidiSend(noteOn1, 77, velocity);
    lastA[7][4] = 7;
  }
  //Write Midi Note Off
  if ((keysA[7][4] == 1) and (lastA[7][4] == 7)) {
    MidiSend(noteOff1, 77, velocity);
    lastA[7][4] = 0;
  }

  //A78
  if ((keysA[7][5] == 0) and (lastA[7][5] == 0)) {
    MidiSend(noteOn1, 78, velocity);
    lastA[7][5] = 7;
  }
  //Write Midi Note Off
  if ((keysA[7][5] == 1) and (lastA[7][5] == 7)) {
    MidiSend(noteOff1, 78, velocity);
    lastA[7][5] = 0;
  }

  //A79
  if ((keysA[8][0] == 0) and (lastA[8][0] == 0)) {
    MidiSend(noteOn1, 79, velocity);
    lastA[8][0] = 7;
  }
  //Write Midi Note Off
  if ((keysA[8][0] == 1) and (lastA[8][0] == 7)) {
    MidiSend(noteOff1, 79, velocity);
    lastA[8][0] = 0;
  }

  //A80
  if ((keysA[8][1] == 0) and (lastA[8][1] == 0)) {
    MidiSend(noteOn1, 80, velocity);
    lastA[8][1] = 7;
  }
  //Write Midi Note Off
  if ((keysA[8][1] == 1) and (lastA[8][1] == 7)) {
    MidiSend(noteOff1, 80, velocity);
    lastA[8][1] = 0;
  }

  //A81
  if ((keysA[8][2] == 0) and (lastA[8][2] == 0)) {
    MidiSend(noteOn1, 81, velocity);
    lastA[8][2] = 7;
  }
  //Write Midi Note Off
  if ((keysA[8][2] == 1) and (lastA[8][2] == 7)) {
    MidiSend(noteOff1, 81, velocity);
    lastA[8][2] = 0;
  }

  //A82
  if ((keysA[8][3] == 0) and (lastA[8][3] == 0)) {
    MidiSend(noteOn1, 82, velocity);
    lastA[8][3] = 7;
  }
  //Write Midi Note Off
  if ((keysA[8][3] == 1) and (lastA[8][3] == 7)) {
    MidiSend(noteOff1, 82, velocity);
    lastA[8][3] = 0;
  }

  //A83
  if ((keysA[8][4] == 0) and (lastA[8][4] == 0)) {
    MidiSend(noteOn1, 83, velocity);
    lastA[8][4] = 7;
  }
  //Write Midi Note Off
  if ((keysA[8][4] == 1) and (lastA[8][4] == 7)) {
    MidiSend(noteOff1, 83, velocity);
    lastA[8][4] = 0;
  }

  //A84
  if ((keysA[8][5] == 0) and (lastA[8][5] == 0)) {
    MidiSend(noteOn1, 84, velocity);
    lastA[8][5] = 7;
  }
  //Write Midi Note Off
  if ((keysA[8][5] == 1) and (lastA[8][5] == 7)) {
    MidiSend(noteOff1, 84, velocity);
    lastA[8][5] = 0;
  }

  //A85
  if ((keysA[9][0] == 0) and (lastA[9][0] == 0)) {
    MidiSend(noteOn1, 85, velocity);
    lastA[9][0] = 7;
  }
  //Write Midi Note Off
  if ((keysA[9][0] == 1) and (lastA[9][0] == 7)) {
    MidiSend(noteOff1, 85, velocity);
    lastA[9][0] = 0;
  }

  //A86
  if ((keysA[9][1] == 0) and (lastA[9][1] == 0)) {
    MidiSend(noteOn1, 86, velocity);
    lastA[9][1] = 7;
  }
  //Write Midi Note Off
  if ((keysA[9][1] == 1) and (lastA[9][1] == 7)) {
    MidiSend(noteOff1, 86, velocity);
    lastA[9][1] = 0;
  }

  //A87
  if ((keysA[9][2] == 0) and (lastA[9][2] == 0)) {
    MidiSend(noteOn1, 87, velocity);
    lastA[9][2] = 7;
  }
  //Write Midi Note Off
  if ((keysA[9][2] == 1) and (lastA[9][2] == 7)) {
    MidiSend(noteOff1, 87, velocity);
    lastA[9][2] = 0;
  }

  //A88
  if ((keysA[9][3] == 0) and (lastA[9][3] == 0)) {
    MidiSend(noteOn1, 88, velocity);
    lastA[9][3] = 7;
  }
  //Write Midi Note Off
  if ((keysA[9][3] == 1) and (lastA[9][3] == 7)) {
    MidiSend(noteOff1, 88, velocity);
    lastA[9][3] = 0;
  }

  //A89
  if ((keysA[9][4] == 0) and (lastA[9][4] == 0)) {
    MidiSend(noteOn1, 89, velocity);
    lastA[9][4] = 7;
  }
  //Write Midi Note Off
  if ((keysA[9][4] == 1) and (lastA[9][4] == 7)) {
    MidiSend(noteOff1, 89, velocity);
    lastA[9][4] = 0;
  }

  //A90
  if ((keysA[9][5] == 0) and (lastA[9][5] == 0)) {
    MidiSend(noteOn1, 90, velocity);
    lastA[9][5] = 7;
  }
  //Write Midi Note Off
  if ((keysA[9][5] == 1) and (lastA[9][5] == 7)) {
    MidiSend(noteOff1, 90, velocity);
    lastA[9][5] = 0;
  }

  //A91
  if ((keysA[10][0] == 0) and (lastA[10][0] == 0)) {
    MidiSend(noteOn1, 91, velocity);
    lastA[10][0] = 7;
  }
  //Write Midi Note Off
  if ((keysA[10][0] == 1) and (lastA[10][0] == 7)) {
    MidiSend(noteOff1, 91, velocity);
    lastA[10][0] = 0;
  }

  //A92
  if ((keysA[10][1] == 0) and (lastA[10][1] == 0)) {
    MidiSend(noteOn1, 92, velocity);
    lastA[10][1] = 7;
  }
  //Write Midi Note Off
  if ((keysA[10][1] == 1) and (lastA[10][1] == 7)) {
    MidiSend(noteOff1, 92, velocity);
    lastA[10][1] = 0;
  }

  //A93
  if ((keysA[10][2] == 0) and (lastA[10][2] == 0)) {
    MidiSend(noteOn1, 93, velocity);
    lastA[10][2] = 7;
  }
  //Write Midi Note Off
  if ((keysA[10][2] == 1) and (lastA[10][2] == 7)) {
    MidiSend(noteOff1, 93, velocity);
    lastA[10][2] = 0;
  }

  //A94
  if ((keysA[10][3] == 0) and (lastA[10][3] == 0)) {
    MidiSend(noteOn1, 94, velocity);
    lastA[10][3] = 7;
  }
  //Write Midi Note Off
  if ((keysA[10][3] == 1) and (lastA[10][3] == 7)) {
    MidiSend(noteOff1, 94, velocity);
    lastA[10][3] = 0;
  }

  //A95
  if ((keysA[10][4] == 0) and (lastA[10][4] == 0)) {
    MidiSend(noteOn1, 95, velocity);
    lastA[10][4] = 7;
  }
  //Write Midi Note Off
  if ((keysA[10][4] == 1) and (lastA[10][4] == 7)) {
    MidiSend(noteOff1, 95, velocity);
    lastA[10][4] = 0;
  }

  //A96
  if ((keysA[10][5] == 0) and (lastA[10][5] == 0)) {
    MidiSend(noteOn1, 96, velocity);
    lastA[10][5] = 7;
  }
  //Write Midi Note Off
  if ((keysA[10][5] == 1) and (lastA[10][5] == 7)) {
    MidiSend(noteOff1, 96, velocity);
    lastA[10][5] = 0;
  }

  //Write Keyboard B

  //B36
  if ((keysB[0][0] == 0) and (lastB[0][0] == 0)) {
    MidiSend(noteOn2, 36, velocity);
    lastB[0][0] = 7;
  }
  if ((keysB[0][0] == 1) and (lastB[0][0] == 7)) {
    MidiSend(noteOff2, 36, velocity);
    lastB[0][0] = 0;
  }

  //B37
  if ((keysB[1][0] == 0) and (lastB[1][0] == 0)) {
    MidiSend(noteOn2, 37, velocity);
    lastB[1][0] = 7;
  }
  if ((keysB[1][0] == 1) and (lastB[1][0] == 7)) {
    MidiSend(noteOff2, 37, velocity);
    lastB[1][0] = 0;
  }

  //B38
  if ((keysB[1][1] == 0) and (lastB[1][1] == 0)) {
    MidiSend(noteOn2, 38, velocity);
    lastB[1][1] = 7;
  }
  //Write Midi Note Off
  if ((keysB[1][1] == 1) and (lastB[1][1] == 7)) {
    MidiSend(noteOff2, 38, velocity);
    lastB[1][1] = 0;
  }

  //B39
  if ((keysB[1][2] == 0) and (lastB[1][2] == 0)) {
    MidiSend(noteOn2, 39, velocity);
    lastB[1][2] = 7;
  }
  //Write Midi Note Off
  if ((keysB[1][2] == 1) and (lastB[1][2] == 7)) {
    MidiSend(noteOff2, 39, velocity);
    lastB[1][2] = 0;
  }

  //B40
  if ((keysB[1][3] == 0) and (lastB[1][3] == 0)) {
    MidiSend(noteOn2, 40, velocity);
    lastB[1][3] = 7;
  }
  //Write Midi Note Off
  if ((keysB[1][3] == 1) and (lastB[1][3] == 7)) {
    MidiSend(noteOff2, 40, velocity);
    lastB[1][3] = 0;
  }

  //B41
  if ((keysB[1][4] == 0) and (lastB[1][4] == 0)) {
    MidiSend(noteOn2, 41, velocity);
    lastB[1][4] = 7;
  }
  //Write Midi Note Off
  if ((keysB[1][4] == 1) and (lastB[1][4] == 7)) {
    MidiSend(noteOff2, 41, velocity);
    lastB[1][4] = 0;
  }

  //B42
  if ((keysB[1][5] == 0) and (lastB[1][5] == 0)) {
    MidiSend(noteOn2, 42, velocity);
    lastB[1][5] = 7;
  }
  //Write Midi Note Off
  if ((keysB[1][5] == 1) and (lastB[1][5] == 7)) {
    MidiSend(noteOff2, 42, velocity);
    lastB[1][5] = 0;
  }

  //B43
  if ((keysB[2][0] == 0) and (lastB[2][0] == 0)) {
    MidiSend(noteOn2, 43, velocity);
    lastB[2][0] = 7;
  }
  //Write Midi Note Off
  if ((keysB[2][0] == 1) and (lastB[2][0] == 7)) {
    MidiSend(noteOff2, 43, velocity);
    lastB[2][0] = 0;
  }

  //B44
  if ((keysB[2][1] == 0) and (lastB[2][1] == 0)) {
    MidiSend(noteOn2, 44, velocity);
    lastB[2][1] = 7;
  }
  //Write Midi Note Off
  if ((keysB[2][1] == 1) and (lastB[2][1] == 7)) {
    MidiSend(noteOff2, 44, velocity);
    lastB[2][1] = 0;
  }

  //B45
  if ((keysB[2][2] == 0) and (lastB[2][2] == 0)) {
    MidiSend(noteOn2, 45, velocity);
    lastB[2][2] = 7;
  }
  //Write Midi Note Off
  if ((keysB[2][2] == 1) and (lastB[2][2] == 7)) {
    MidiSend(noteOff2, 45, velocity);
    lastB[2][2] = 0;
  }

  //B46
  if ((keysB[2][3] == 0) and (lastB[2][3] == 0)) {
    MidiSend(noteOn2, 46, velocity);
    lastB[2][3] = 7;
  }
  //Write Midi Note Off
  if ((keysB[2][3] == 1) and (lastB[2][3] == 7)) {
    MidiSend(noteOff2, 46, velocity);
    lastB[2][3] = 0;
  }

  //B47
  if ((keysB[2][4] == 0) and (lastB[2][4] == 0)) {
    MidiSend(noteOn2, 47, velocity);
    lastB[2][4] = 7;
  }
  //Write Midi Note Off
  if ((keysB[2][4] == 1) and (lastB[2][4] == 7)) {
    MidiSend(noteOff2, 47, velocity);
    lastB[2][4] = 0;
  }

  //B48
  if ((keysB[2][5] == 0) and (lastB[2][5] == 0)) {
    MidiSend(noteOn2, 48, velocity);
    lastB[2][5] = 7;
  }
  //Write Midi Note Off
  if ((keysB[2][5] == 1) and (lastB[2][5] == 7)) {
    MidiSend(noteOff2, 48, velocity);
    lastB[2][5] = 0;
  }

  //B49
  if ((keysB[3][0] == 0) and (lastB[3][0] == 0)) {
    MidiSend(noteOn2, 49, velocity);
    lastB[3][0] = 7;
  }
  //Write Midi Note Off
  if ((keysB[3][0] == 1) and (lastB[3][0] == 7)) {
    MidiSend(noteOff2, 49, velocity);
    lastB[3][0] = 0;
  }

  //B50
  if ((keysB[3][1] == 0) and (lastB[3][1] == 0)) {
    MidiSend(noteOn2, 50, velocity);
    lastB[3][1] = 7;
  }
  //Write Midi Note Off
  if ((keysB[3][1] == 1) and (lastB[3][1] == 7)) {
    MidiSend(noteOff2, 50, velocity);
    lastB[3][1] = 0;
  }

  //B51
  if ((keysB[3][2] == 0) and (lastB[3][2] == 0)) {
    MidiSend(noteOn2, 51, velocity);
    lastB[3][2] = 7;
  }
  //Write Midi Note Off
  if ((keysB[3][2] == 1) and (lastB[3][2] == 7)) {
    MidiSend(noteOff2, 51, velocity);
    lastB[3][2] = 0;
  }

  //B52
  if ((keysB[3][3] == 0) and (lastB[3][3] == 0)) {
    MidiSend(noteOn2, 52, velocity);
    lastB[3][3] = 7;
  }
  //Write Midi Note Off
  if ((keysB[3][3] == 1) and (lastB[3][3] == 7)) {
    MidiSend(noteOff2, 52, velocity);
    lastB[3][3] = 0;
  }

  //B53
  if ((keysB[3][4] == 0) and (lastB[3][4] == 0)) {
    MidiSend(noteOn2, 53, velocity);
    lastB[3][4] = 7;
  }
  //Write Midi Note Off
  if ((keysB[3][4] == 1) and (lastB[3][4] == 7)) {
    MidiSend(noteOff2, 53, velocity);
    lastB[3][4] = 0;
  }

  //B54
  if ((keysB[3][5] == 0) and (lastB[3][5] == 0)) {
    MidiSend(noteOn2, 54, velocity);
    lastB[3][5] = 7;
  }
  //Write Midi Note Off
  if ((keysB[3][5] == 1) and (lastB[3][5] == 7)) {
    MidiSend(noteOff2, 54, velocity);
    lastB[3][5] = 0;
  }

  //B55
  if ((keysB[4][0] == 0) and (lastB[4][0] == 0)) {
    MidiSend(noteOn2, 55, velocity);
    lastB[4][0] = 7;
  }
  //Write Midi Note Off
  if ((keysB[4][0] == 1) and (lastB[4][0] == 7)) {
    MidiSend(noteOff2, 55, velocity);
    lastB[4][0] = 0;
  }

  //B56
  if ((keysB[4][1] == 0) and (lastB[4][1] == 0)) {
    MidiSend(noteOn2, 56, velocity);
    lastB[4][1] = 7;
  }
  //Write Midi Note Off
  if ((keysB[4][1] == 1) and (lastB[4][1] == 7)) {
    MidiSend(noteOff2, 56, velocity);
    lastB[4][1] = 0;
  }

  //B57
  if ((keysB[4][2] == 0) and (lastB[4][2] == 0)) {
    MidiSend(noteOn2, 57, velocity);
    lastB[4][2] = 7;
  }
  //Write Midi Note Off
  if ((keysB[4][2] == 1) and (lastB[4][2] == 7)) {
    MidiSend(noteOff2, 57, velocity);
    lastB[4][2] = 0;
  }

  //B58
  if ((keysB[4][3] == 0) and (lastB[4][3] == 0)) {
    MidiSend(noteOn2, 58, velocity);
    lastB[4][3] = 7;
  }
  //Write Midi Note Off
  if ((keysB[4][3] == 1) and (lastB[4][3] == 7)) {
    MidiSend(noteOff2, 58, velocity);
    lastB[4][3] = 0;
  }

  //B59
  if ((keysB[4][4] == 0) and (lastB[4][4] == 0)) {
    MidiSend(noteOn2, 59, velocity);
    lastB[4][4] = 7;
  }
  //Write Midi Note Off
  if ((keysB[4][4] == 1) and (lastB[4][4] == 7)) {
    MidiSend(noteOff2, 59, velocity);
    lastB[4][4] = 0;
  }

  //B60
  if ((keysB[4][5] == 0) and (lastB[4][5] == 0)) {
    MidiSend(noteOn2, 60, velocity);
    lastB[4][5] = 7;
  }
  //Write Midi Note Off
  if ((keysB[4][5] == 1) and (lastB[4][5] == 7)) {
    MidiSend(noteOff2, 60, velocity);
    lastB[4][5] = 0;
  }

  //B61
  if ((keysB[5][0] == 0) and (lastB[5][0] == 0)) {
    MidiSend(noteOn2, 61, velocity);
    lastB[5][0] = 7;
  }
  //Write Midi Note Off
  if ((keysB[5][0] == 1) and (lastB[5][0] == 7)) {
    MidiSend(noteOff2, 61, velocity);
    lastB[5][0] = 0;
  }

  //B62
  if ((keysB[5][1] == 0) and (lastB[5][1] == 0)) {
    MidiSend(noteOn2, 62, velocity);
    lastB[5][1] = 7;
  }
  //Write Midi Note Off
  if ((keysB[5][1] == 1) and (lastB[5][1] == 7)) {
    MidiSend(noteOff2, 62, velocity);
    lastB[5][1] = 0;
  }

  //B63
  if ((keysB[5][2] == 0) and (lastB[5][2] == 0)) {
    MidiSend(noteOn2, 63, velocity);
    lastB[5][2] = 7;
  }
  //Write Midi Note Off
  if ((keysB[5][2] == 1) and (lastB[5][2] == 7)) {
    MidiSend(noteOff2, 63, velocity);
    lastB[5][2] = 0;
  }

  //B64
  if ((keysB[5][3] == 0) and (lastB[5][3] == 0)) {
    MidiSend(noteOn2, 64, velocity);
    lastB[5][3] = 7;
  }
  //Write Midi Note Off
  if ((keysB[5][3] == 1) and (lastB[5][3] == 7)) {
    MidiSend(noteOff2, 64, velocity);
    lastB[5][3] = 0;
  }

  //B65
  if ((keysB[5][4] == 0) and (lastB[5][4] == 0)) {
    MidiSend(noteOn2, 65, velocity);
    lastB[5][4] = 7;
  }
  //Write Midi Note Off
  if ((keysB[5][4] == 1) and (lastB[5][4] == 7)) {
    MidiSend(noteOff2, 65, velocity);
    lastB[5][4] = 0;
  }

  //B66
  if ((keysB[5][5] == 0) and (lastB[5][5] == 0)) {
    MidiSend(noteOn2, 66, velocity);
    lastB[5][5] = 7;
  }
  //Write Midi Note Off
  if ((keysB[5][5] == 1) and (lastB[5][5] == 7)) {
    MidiSend(noteOff2, 66, velocity);
    lastB[5][5] = 0;
  }

  //B67
  if ((keysB[6][0] == 0) and (lastB[6][0] == 0)) {
    MidiSend(noteOn2, 67, velocity);
    lastB[6][0] = 7;
  }
  //Write Midi Note Off
  if ((keysB[6][0] == 1) and (lastB[6][0] == 7)) {
    MidiSend(noteOff2, 67, velocity);
    lastB[6][0] = 0;
  }

  //B68
  if ((keysB[6][1] == 0) and (lastB[6][1] == 0)) {
    MidiSend(noteOn2, 68, velocity);
    lastB[6][1] = 7;
  }
  //Write Midi Note Off
  if ((keysB[6][1] == 1) and (lastB[6][1] == 7)) {
    MidiSend(noteOff2, 68, velocity);
    lastB[6][1] = 0;
  }

  //B69
  if ((keysB[6][2] == 0) and (lastB[6][2] == 0)) {
    MidiSend(noteOn2, 69, velocity);
    lastB[6][2] = 7;
  }
  //Write Midi Note Off
  if ((keysB[6][2] == 1) and (lastB[6][2] == 7)) {
    MidiSend(noteOff2, 69, velocity);
    lastB[6][2] = 0;
  }

  //B70
  if ((keysB[6][3] == 0) and (lastB[6][3] == 0)) {
    MidiSend(noteOn2, 70, velocity);
    lastB[6][3] = 7;
  }
  //Write Midi Note Off
  if ((keysB[6][3] == 1) and (lastB[6][3] == 7)) {
    MidiSend(noteOff2, 70, velocity);
    lastB[6][3] = 0;
  }

  //B71
  if ((keysB[6][4] == 0) and (lastB[6][4] == 0)) {
    MidiSend(noteOn2, 71, velocity);
    lastB[6][4] = 7;
  }
  //Write Midi Note Off
  if ((keysB[6][4] == 1) and (lastB[6][4] == 7)) {
    MidiSend(noteOff2, 71, velocity);
    lastB[6][4] = 0;
  }

  //B72
  if ((keysB[6][5] == 0) and (lastB[6][5] == 0)) {
    MidiSend(noteOn2, 72, velocity);
    lastB[6][5] = 7;
  }
  //Write Midi Note Off
  if ((keysB[6][5] == 1) and (lastB[6][5] == 7)) {
    MidiSend(noteOff2, 72, velocity);
    lastB[6][5] = 0;
  }

  //B73
  if ((keysB[7][0] == 0) and (lastB[7][0] == 0)) {
    MidiSend(noteOn2, 73, velocity);
    lastB[7][0] = 7;
  }
  //Write Midi Note Off
  if ((keysB[7][0] == 1) and (lastB[7][0] == 7)) {
    MidiSend(noteOff2, 73, velocity);
    lastB[7][0] = 0;
  }

  //B74
  if ((keysB[7][1] == 0) and (lastB[7][1] == 0)) {
    MidiSend(noteOn2, 74, velocity);
    lastB[7][1] = 7;
  }
  //Write Midi Note Off
  if ((keysB[7][1] == 1) and (lastB[7][1] == 7)) {
    MidiSend(noteOff2, 74, velocity);
    lastB[7][1] = 0;
  }

  //B75
  if ((keysB[7][2] == 0) and (lastB[7][2] == 0)) {
    MidiSend(noteOn2, 75, velocity);
    lastB[7][2] = 7;
  }
  //Write Midi Note Off
  if ((keysB[7][2] == 1) and (lastB[7][2] == 7)) {
    MidiSend(noteOff2, 75, velocity);
    lastB[7][2] = 0;
  }

  //B76
  if ((keysB[7][3] == 0) and (lastB[7][3] == 0)) {
    MidiSend(noteOn2, 76, velocity);
    lastB[7][3] = 7;
  }
  //Write Midi Note Off
  if ((keysB[7][3] == 1) and (lastB[7][3] == 7)) {
    MidiSend(noteOff2, 76, velocity);
    lastB[7][3] = 0;
  }

  //B77
  if ((keysB[7][4] == 0) and (lastB[7][4] == 0)) {
    MidiSend(noteOn2, 77, velocity);
    lastB[7][4] = 7;
  }
  //Write Midi Note Off
  if ((keysB[7][4] == 1) and (lastB[7][4] == 7)) {
    MidiSend(noteOff2, 77, velocity);
    lastB[7][4] = 0;
  }

  //B78
  if ((keysB[7][5] == 0) and (lastB[7][5] == 0)) {
    MidiSend(noteOn2, 78, velocity);
    lastB[7][5] = 7;
  }
  //Write Midi Note Off
  if ((keysB[7][5] == 1) and (lastB[7][5] == 7)) {
    MidiSend(noteOff2, 78, velocity);
    lastB[7][5] = 0;
  }

  //B79
  if ((keysB[8][0] == 0) and (lastB[8][0] == 0)) {
    MidiSend(noteOn2, 79, velocity);
    lastB[8][0] = 7;
  }
  //Write Midi Note Off
  if ((keysB[8][0] == 1) and (lastB[8][0] == 7)) {
    MidiSend(noteOff2, 79, velocity);
    lastB[8][0] = 0;
  }

  //B80
  if ((keysB[8][1] == 0) and (lastB[8][1] == 0)) {
    MidiSend(noteOn2, 80, velocity);
    lastB[8][1] = 7;
  }
  //Write Midi Note Off
  if ((keysB[8][1] == 1) and (lastB[8][1] == 7)) {
    MidiSend(noteOff2, 80, velocity);
    lastB[8][1] = 0;
  }

  //B81
  if ((keysB[8][2] == 0) and (lastB[8][2] == 0)) {
    MidiSend(noteOn2, 81, velocity);
    lastB[8][2] = 7;
  }
  //Write Midi Note Off
  if ((keysB[8][2] == 1) and (lastB[8][2] == 7)) {
    MidiSend(noteOff2, 81, velocity);
    lastB[8][2] = 0;
  }

  //B82
  if ((keysB[8][3] == 0) and (lastB[8][3] == 0)) {
    MidiSend(noteOn2, 82, velocity);
    lastB[8][3] = 7;
  }
  //Write Midi Note Off
  if ((keysB[8][3] == 1) and (lastB[8][3] == 7)) {
    MidiSend(noteOff2, 82, velocity);
    lastB[8][3] = 0;
  }

  //B83
  if ((keysB[8][4] == 0) and (lastB[8][4] == 0)) {
    MidiSend(noteOn2, 83, velocity);
    lastB[8][4] = 7;
  }
  //Write Midi Note Off
  if ((keysB[8][4] == 1) and (lastB[8][4] == 7)) {
    MidiSend(noteOff2, 83, velocity);
    lastB[8][4] = 0;
  }

  //B84
  if ((keysB[8][5] == 0) and (lastB[8][5] == 0)) {
    MidiSend(noteOn2, 84, velocity);
    lastB[8][5] = 7;
  }
  //Write Midi Note Off
  if ((keysB[8][5] == 1) and (lastB[8][5] == 7)) {
    MidiSend(noteOff2, 84, velocity);
    lastB[8][5] = 0;
  }

  //B85
  if ((keysB[9][0] == 0) and (lastB[9][0] == 0)) {
    MidiSend(noteOn2, 85, velocity);
    lastB[9][0] = 7;
  }
  //Write Midi Note Off
  if ((keysB[9][0] == 1) and (lastB[9][0] == 7)) {
    MidiSend(noteOff2, 85, velocity);
    lastB[9][0] = 0;
  }

  //B86
  if ((keysB[9][1] == 0) and (lastB[9][1] == 0)) {
    MidiSend(noteOn2, 86, velocity);
    lastB[9][1] = 7;
  }
  //Write Midi Note Off
  if ((keysB[9][1] == 1) and (lastB[9][1] == 7)) {
    MidiSend(noteOff2, 86, velocity);
    lastB[9][1] = 0;
  }

  //B87
  if ((keysB[9][2] == 0) and (lastB[9][2] == 0)) {
    MidiSend(noteOn2, 87, velocity);
    lastB[9][2] = 7;
  }
  //Write Midi Note Off
  if ((keysB[9][2] == 1) and (lastB[9][2] == 7)) {
    MidiSend(noteOff2, 87, velocity);
    lastB[9][2] = 0;
  }

  //B88
  if ((keysB[9][3] == 0) and (lastB[9][3] == 0)) {
    MidiSend(noteOn2, 88, velocity);
    lastB[9][3] = 7;
  }
  //Write Midi Note Off
  if ((keysB[9][3] == 1) and (lastB[9][3] == 7)) {
    MidiSend(noteOff2, 88, velocity);
    lastB[9][3] = 0;
  }

  //B89
  if ((keysB[9][4] == 0) and (lastB[9][4] == 0)) {
    MidiSend(noteOn2, 89, velocity);
    lastB[9][4] = 7;
  }
  //Write Midi Note Off
  if ((keysB[9][4] == 1) and (lastB[9][4] == 7)) {
    MidiSend(noteOff2, 89, velocity);
    lastB[9][4] = 0;
  }

  //B90
  if ((keysB[9][5] == 0) and (lastB[9][5] == 0)) {
    MidiSend(noteOn2, 90, velocity);
    lastB[9][5] = 7;
  }
  //Write Midi Note Off
  if ((keysB[9][5] == 1) and (lastB[9][5] == 7)) {
    MidiSend(noteOff2, 90, velocity);
    lastB[9][5] = 0;
  }

  //B91
  if ((keysB[10][0] == 0) and (lastB[10][0] == 0)) {
    MidiSend(noteOn2, 91, velocity);
    lastB[10][0] = 7;
  }
  //Write Midi Note Off
  if ((keysB[10][0] == 1) and (lastB[10][0] == 7)) {
    MidiSend(noteOff2, 91, velocity);
    lastB[10][0] = 0;
  }

  //B92
  if ((keysB[10][1] == 0) and (lastB[10][1] == 0)) {
    MidiSend(noteOn2, 92, velocity);
    lastB[10][1] = 7;
  }
  //Write Midi Note Off
  if ((keysB[10][1] == 1) and (lastB[10][1] == 7)) {
    MidiSend(noteOff2, 92, velocity);
    lastB[10][1] = 0;
  }

  //B93
  if ((keysB[10][2] == 0) and (lastB[10][2] == 0)) {
    MidiSend(noteOn2, 93, velocity);
    lastB[10][2] = 7;
  }
  //Write Midi Note Off
  if ((keysB[10][2] == 1) and (lastB[10][2] == 7)) {
    MidiSend(noteOff2, 93, velocity);
    lastB[10][2] = 0;
  }

  //B94
  if ((keysB[10][3] == 0) and (lastB[10][3] == 0)) {
    MidiSend(noteOn2, 94, velocity);
    lastB[10][3] = 7;
  }
  //Write Midi Note Off
  if ((keysB[10][3] == 1) and (lastB[10][3] == 7)) {
    MidiSend(noteOff2, 94, velocity);
    lastB[10][3] = 0;
  }

  //B95
  if ((keysB[10][4] == 0) and (lastB[10][4] == 0)) {
    MidiSend(noteOn2, 95, velocity);
    lastB[10][4] = 7;
  }
  //Write Midi Note Off
  if ((keysB[10][4] == 1) and (lastB[10][4] == 7)) {
    MidiSend(noteOff2, 95, velocity);
    lastB[10][4] = 0;
  }

  //B96
  if ((keysB[10][5] == 0) and (lastB[10][5] == 0)) {
    MidiSend(noteOn2, 96, velocity);
    lastB[10][5] = 7;
  }
  //Write Midi Note Off
  if ((keysB[10][5] == 1) and (lastB[10][5] == 7)) {
    MidiSend(noteOff2, 96, velocity);
    lastB[10][5] = 0;
  }

  //Write Keyboard C

  //C36
  if ((keysC[0][0] == 0) and (lastC[0][0] == 0)) {
    MidiSend(noteOn3, 36, velocity);
    lastC[0][0] = 7;
  }
  if ((keysC[0][0] == 1) and (lastC[0][0] == 7)) {
    MidiSend(noteOff3, 36, velocity);
    lastC[0][0] = 0;
  }

  //C37
  if ((keysC[1][0] == 0) and (lastC[1][0] == 0)) {
    MidiSend(noteOn3, 37, velocity);
    lastC[1][0] = 7;
  }
  if ((keysC[1][0] == 1) and (lastC[1][0] == 7)) {
    MidiSend(noteOff3, 37, velocity);
    lastC[1][0] = 0;
  }

  //C38
  if ((keysC[1][1] == 0) and (lastC[1][1] == 0)) {
    MidiSend(noteOn3, 38, velocity);
    lastC[1][1] = 7;
  }
  //Write Midi Note Off
  if ((keysC[1][1] == 1) and (lastC[1][1] == 7)) {
    MidiSend(noteOff3, 38, velocity);
    lastC[1][1] = 0;
  }

  //C39
  if ((keysC[1][2] == 0) and (lastC[1][2] == 0)) {
    MidiSend(noteOn3, 39, velocity);
    lastC[1][2] = 7;
  }
  //Write Midi Note Off
  if ((keysC[1][2] == 1) and (lastC[1][2] == 7)) {
    MidiSend(noteOff3, 39, velocity);
    lastC[1][2] = 0;
  }

  //C40
  if ((keysC[1][3] == 0) and (lastC[1][3] == 0)) {
    MidiSend(noteOn3, 40, velocity);
    lastC[1][3] = 7;
  }
  //Write Midi Note Off
  if ((keysC[1</