I'm making a 12-note MIDI keyboard, but I can't use ports 10, 11, 12, 13, a1, a2, a3, a4, a5, so I can only use 8 notes. Can someone help me?

/*

This examples shows how to make a simple seven keys MIDI keyboard with volume control

Created: 4/10/2015

Author: Arturo Guadalupi a.guadalupi@arduino.cc

http://www.arduino.cc/en/Tutorial/MidiDevice

*/

#include "MIDIUSB.h"
#include "PitchToNote.h"
#define NUM_BUTTONS 12

const uint8_t button1 = 2;

const uint8_t button2 = 3;

const uint8_t button3 = 4;

const uint8_t button4 = 5;

const uint8_t button5 = 6;

const uint8_t button6 = 7;

const uint8_t button7 = 8;

const uint8_t button8 = 9;

const uint8_t button9 = 130;

const uint8_t button10 = 11; //(0xb) input

const uint8_t button11 = 12; //(0xc) input

const uint8_t button12 = 13; //(0xd) input

const int intensityPot = 0; //A0 input

const uint8_t buttons[NUM_BUTTONS] = {button1, button2, button3, button4, button5, button6, button7, button8, button9, button10, button11, button12};

const byte notePitches[NUM_BUTTONS] = {60, 61, 62 ,63 ,64 ,65 ,66 ,67 ,68 ,69 ,70 ,71};

uint8_t notesTime[NUM_BUTTONS];

uint8_t pressedButtons = 0x00;

uint8_t previousButtons = 0x00;

uint8_t intensity;

void setup() {

for (int i = 0; i < NUM_BUTTONS; i++)

pinMode(buttons[i], INPUT_PULLUP);

}

void loop() {

readButtons();

readIntensity();

playNotes();
}

// First parameter is the event type (0x0B = control change).
// Second parameter is the event type, combined with the channel.
// Third parameter is the control number number (0-119).
// Fourth parameter is the control value (0-127).

void controlChange(byte channel, byte control, byte value) {

midiEventPacket_t event = {0x0B, 0xB0 | channel, control, value};

MidiUSB.sendMIDI(event);
}

void readButtons()
{

for (int i = 0; i < NUM_BUTTONS; i++)

{

if (digitalRead(buttons[i]) == LOW)

{

  bitWrite(pressedButtons, i, 1);

  delay(50);

}

else

  bitWrite(pressedButtons, i, 0);

}
}

void readIntensity()
{

int val = analogRead(intensityPot);

intensity = (uint8_t) (map(val, 0, 1023, 0, 127));
}

void playNotes()
{

for (int i = 0; i < NUM_BUTTONS; i++)

{

if (bitRead(pressedButtons, i) != bitRead(previousButtons, i))

{

  if (bitRead(pressedButtons, i))

  {

    bitWrite(previousButtons, i , 1);

    noteOn(0, notePitches[i], intensity);

    MidiUSB.flush();

  }

  else

  {

    bitWrite(previousButtons, i , 0);

    noteOff(0, notePitches[i], 0);

    MidiUSB.flush();

  }

}

}
}

// First parameter is the event type (0x09 = note on, 0x08 = note off).
// Second parameter is note-on/note-off, combined with the channel.
// Channel can be anything between 0-15. Typically reported to the user as 1-16.
// Third parameter is the note number (48 = middle C).
// Fourth parameter is the velocity (64 = normal, 127 = fastest).

void noteOn(byte channel, byte pitch, byte velocity) {

midiEventPacket_t noteOn = {0x09, 0x90 | channel, pitch, velocity};

MidiUSB.sendMIDI(noteOn);
}

void noteOff(byte channel, byte pitch, byte velocity) {

midiEventPacket_t noteOff = {0x08, 0x80 | channel, pitch, velocity};

MidiUSB.sendMIDI(noteOff);
}

Welcome to the forum

Why did you start a topic in the Uncategorised category of the forum when its description is

:warning: DO NOT CREATE TOPICS IN THIS CATEGORY :warning:

Your topic has been moved to the appropriate category

Please follow the advice given in the link below when posting code, in particular the section entitled 'Posting code and common code problems'

Use code tags (the < CODE/ > icon above the compose window) to make it easier to read and copy for examination

https://forum.arduino.cc/t/how-to-get-the-best-out-of-this-forum

12 buttons would only use 7 pins if it were arranged as a 3x4 matrix; do you need to press more than one button at once, though?

as it is a piano, probably some notes play together, in my project it would have 12 buttons. (I'm Brazilian so I can't write properly)

Then you may well need 12 discrete inputs.
Time you reformatted your code per the advice given.

I achieved. thank you very much

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.