I try to make a MIDI controller and use Arduino UNO, with 3 Arcade quality 24mm Push buttons, 3 pots and 2 slider. But it got some error and pop out when use pots or slider While use hairless MIDI. Is the circuit problem or code ? I use Ableton to Mapping the button/pots/slider but no response and sound.
#include <MIDI.h>
MIDI_CREATE_DEFAULT_INSTANCE();
const int buttonPins[] = {2, 3, 4};
byte buttonState[3] = {0, 0, 0};
const int buttonPitches[] = {36, 37, 38};
const int sliderPins[] = {A4, A5};
int sliderValues[2] = {0, 0};
const int knobPins[] = {A0, A1, A2};
int knobValues[3] = {0, 0, 0};
void setup() {
MIDI.begin();
for (int i = 0; i < 3; i++) {
pinMode(buttonPins[i], INPUT_PULLUP);
}
for (int i = 0; i < 2; i++) {
pinMode(sliderPins[i], INPUT);
}
for (int i = 0; i < 3; i++) {
pinMode(knobPins[i], INPUT);
}
}
void loop() {
for (int i = 0; i < 3; i++) {
byte tempRead = digitalRead(buttonPins[i]);
if (tempRead != buttonState[i]) {
buttonState[i] = tempRead;
int note = buttonPitches[i];
if ((buttonState[i] == LOW)) {
MIDI.sendNoteOn(note, 127, 1);
} else {
MIDI.sendNoteOff(note, 0, 1);
}
}
}
for (int i = 0; i < 2; i++) {
int value = analogRead(sliderPins[i]);
if (abs(value - sliderValues[i]) > 2) {
sliderValues[i] = value;
int controller = 16 + i;
int data = map(value, 0, 1023, 0, 127);
MIDI.sendControlChange(controller, data, 1);
}
}
for (int i = 0; i < 3; i++) {
int value = analogRead(knobPins[i]);
if (abs(value - knobValues[i]) > 2) {
knobValues[i] = value;
int controller = i;
int data = map(value, 0, 1023, 0, 127);
MIDI.sendControlChange(controller, data, 1);
}
}
}