Hola a todos estoy haciendo un footswitch Diy para mi eleven rack en arduino uno y una impresora 3d pero no me ha llegado el abs, no va conectado por midi usb sino que va conectado por puerto de midi físico en mi caso voy a integrar 8 pulsadores para midi y dos por medio de la coneccion footswitch del eleven rack para cambiar de bancos, con los pulsadores midi controlo on y off de distorsión, modulación, delay, reverb, fx loop, fx1, fx2 y tap tempo por lo cual este esquema sirve para controlar diversos dispositivos, incluso con el mismo esquema se puede hacer un disparador de loops o lo que se les ocurra que no necesite sensibilidad en los pulsadores, y si! es posible añadir unos potenciometros, dejo links de las paginas en ingles y español.
https://www.makeuseof.com/tag/make-midi-controller-arduino/
https://www.electrogeekshop.com/fabrica-tu-propio-controlador-midi-con-arduino/
Materiales cable DIN de 5 polos hembra
2 resistencias de 220 ohmios
8 interruptores momentáneos,
8 resistencias de 10k ohmios
hilos para conexión
un tablero de circuitos,
cable MIDI y un dispositivo MIDI o interfaz USB.
libreria midi para arduino
https://github.com/FortySevenEffects/arduino_midi_library/
Soft de monitoreo
http://www.midiox.com/ win
https://www.snoize.com/MIDIMonitor/
https://kmidimon.sourceforge.io/
Código final que no es el de los tutoriales ya que necesitaba que cada pulsador envíe un velocity de 127 para encender y un 63 para apagar, el pulsador 8 esta dedicado a tap tempo y es el único que utiliza el código del tutorial
[ Imagen no disponible ] Esquema
[ Imagen no disponible ] Asi va mi proyecto
si hay dudas no duden en preguntar, hoy es mi primer dia en arduino por lo que mi conocimiento es nulo pero ya anda a la perfección, seguramente nos podamos ayudar con algunos hispasonicos.
el código
#include <MIDI.h>
#include <midi_Defs.h>
#include <midi_Message.h>
#include <midi_Namespace.h>
#include <midi_Settings.h>
MIDI_CREATE_DEFAULT_INSTANCE();
const int buttonOne = 2; // assign button pin to variable
const int buttonTwo = 3; // assign button pin to variable
const int buttonThree = 4; // assign button pin to variable
const int buttonFour = 5; // assign button pin to variable
const int buttonFive = 6; // assign button pin to variable
const int buttonSix =7; // assign button pin to variable
const int buttonSeven = 8; // assign button pin to variable
const int buttonEight= 9; // assign button pin to variable
int buttonState1 = 0; // se asignan 3 variables para cada boton
int lastButtonState1 = 0;
int toggleState1 = 0;
int buttonState2 = 0; // se asignan 3 variables para cada boton
int lastButtonState2 = 0;
int toggleState2 = 0;
int buttonState3 = 0; // se asignan 3 variables para cada boton
int lastButtonState3 = 0;
int toggleState3 = 0;
int buttonState4 = 0; // se asignan 3 variables para cada boton
int lastButtonState4 = 0;
int toggleState4 = 0;
int buttonState5 = 0; // se asignan 3 variables para cada boton
int lastButtonState5 = 0;
int toggleState5 = 0;
int buttonState6 = 0; // se asignan 3 variables para cada boton
int lastButtonState6 = 0;
int toggleState6 = 0;
int buttonState7 = 0; // se asignan 3 variables para cada boton
int lastButtonState7 = 0;
int toggleState7 = 0;
MIDI_CREATE_INSTANCE(HardwareSerial,Serial, midiOut); // create a MIDI object called midiOut
void setup() {
MIDI.begin(1);
pinMode(buttonOne, INPUT_PULLUP);// setup button as input Pullup
pinMode(buttonTwo,INPUT_PULLUP); // setup button as input Pullup
pinMode(buttonThree,INPUT_PULLUP); // setup button as input Pullup
pinMode(buttonFour,INPUT_PULLUP); // setup button as input Pullup
pinMode(buttonFive,INPUT_PULLUP); // setup button as input Pullup
pinMode(buttonSix,INPUT_PULLUP); // setup button as input Pullup
pinMode(buttonSeven,INPUT_PULLUP); // setup button as input Pullup
pinMode(buttonEight,INPUT); // setup button as input
Serial.begin(31250); // setup MIDI output
}
void loop() {
buttonState1 = digitalRead(buttonOne);
delay(10); // software de-bounce
if(buttonState1 != lastButtonState1 && buttonState1 == 1 && toggleState1 == 0) {
MIDI.sendControlChange(25, 127, 1);
delay(250);
toggleState1 = 1;
}
else if(buttonState1 != lastButtonState1 && buttonState1 == 1 && toggleState1 == 1) {
MIDI.sendControlChange(25, 0, 1);
toggleState1 = 0;
}
lastButtonState1 = buttonState1;
buttonState2 = digitalRead(buttonTwo);
delay(10); // software de-bounce
if(buttonState2 != lastButtonState2 && buttonState2 == 1 && toggleState2 == 0) {
MIDI.sendControlChange(50, 127, 1);
delay(250);
toggleState2 = 1;
}
else if(buttonState2 != lastButtonState2 && buttonState2 == 1 && toggleState2 == 1) {
MIDI.sendControlChange(50, 0, 1);
toggleState2 = 0;
}
lastButtonState2 = buttonState2;
buttonState3 = digitalRead(buttonThree);
delay(10); // software de-bounce
if(buttonState3 != lastButtonState3 && buttonState3 == 1 && toggleState3 == 0) {
MIDI.sendControlChange(28, 127, 1);
delay(250);
toggleState3 = 1;
}
else if(buttonState3 != lastButtonState3 && buttonState3 == 1 && toggleState3 == 1) {
MIDI.sendControlChange(28, 0, 1);
toggleState3 = 0;
}
lastButtonState3 = buttonState3;
buttonState4 = digitalRead(buttonFour);
delay(10); // software de-bounce
if(buttonState4 != lastButtonState4 && buttonState4 == 1 && toggleState4 == 0) {
MIDI.sendControlChange(36, 127, 1);
delay(250);
toggleState4 = 1;
}
else if(buttonState4 != lastButtonState4 && buttonState4 == 1 && toggleState4 == 1) {
MIDI.sendControlChange(36, 0, 1);
toggleState4 = 0;
}
lastButtonState4 = buttonState4;
buttonState5 = digitalRead(buttonFive);
delay(10); // software de-bounce
if(buttonState5 != lastButtonState5 && buttonState5 == 1 && toggleState5 == 0) {
MIDI.sendControlChange(107, 127, 1);
delay(250);
toggleState5 = 1;
}
else if(buttonState5 != lastButtonState5 && buttonState5 == 1 && toggleState5 == 1) {
MIDI.sendControlChange(107, 0, 1);
toggleState5 = 0;
}
lastButtonState5 = buttonState5;
buttonState6 = digitalRead(buttonSix);
delay(10); // software de-bounce
if(buttonState6 != lastButtonState6 && buttonState6 == 1 && toggleState6 == 0) {
MIDI.sendControlChange(63, 127, 1);
delay(250);
toggleState6 = 1;
}
else if(buttonState6 != lastButtonState6 && buttonState6 == 1 && toggleState6 == 1) {
MIDI.sendControlChange(63, 0, 1);
toggleState6 = 0;
}
lastButtonState6 = buttonState6;
buttonState7 = digitalRead(buttonSeven);
delay(10); // software de-bounce
if(buttonState7 != lastButtonState7 && buttonState7 == 1 && toggleState7 == 0) {
MIDI.sendControlChange(86, 127, 1);
delay(250);
toggleState7 = 1;
}
else if(buttonState7 != lastButtonState7 && buttonState7 == 1 && toggleState7 == 1) {
MIDI.sendControlChange(86, 0, 1);
toggleState7 = 0;
}
lastButtonState7 = buttonState7;
if(digitalRead(buttonEight) == HIGH) { // check button state
delay(10); // software de-bounce
if(digitalRead(buttonEight) == HIGH) { // check button state again
midiOut.sendControlChange(64,127,1); // send a MIDI CC -- 64 = note, 127 = velocity, 1 = channel
delay(250);
}
midiOut.sendControlChange(64,127,1); // send a MIDI CC -- 25 = note, 63 = velocity, 1 = channel
delay(250);
}
}
https://www.makeuseof.com/tag/make-midi-controller-arduino/
https://www.electrogeekshop.com/fabrica-tu-propio-controlador-midi-con-arduino/
Materiales cable DIN de 5 polos hembra
2 resistencias de 220 ohmios
8 interruptores momentáneos,
8 resistencias de 10k ohmios
hilos para conexión
un tablero de circuitos,
cable MIDI y un dispositivo MIDI o interfaz USB.
libreria midi para arduino
https://github.com/FortySevenEffects/arduino_midi_library/
Soft de monitoreo
http://www.midiox.com/ win
https://www.snoize.com/MIDIMonitor/
https://kmidimon.sourceforge.io/
Código final que no es el de los tutoriales ya que necesitaba que cada pulsador envíe un velocity de 127 para encender y un 63 para apagar, el pulsador 8 esta dedicado a tap tempo y es el único que utiliza el código del tutorial
[ Imagen no disponible ] Esquema
[ Imagen no disponible ] Asi va mi proyecto
si hay dudas no duden en preguntar, hoy es mi primer dia en arduino por lo que mi conocimiento es nulo pero ya anda a la perfección, seguramente nos podamos ayudar con algunos hispasonicos.
el código
#include <MIDI.h>
#include <midi_Defs.h>
#include <midi_Message.h>
#include <midi_Namespace.h>
#include <midi_Settings.h>
MIDI_CREATE_DEFAULT_INSTANCE();
const int buttonOne = 2; // assign button pin to variable
const int buttonTwo = 3; // assign button pin to variable
const int buttonThree = 4; // assign button pin to variable
const int buttonFour = 5; // assign button pin to variable
const int buttonFive = 6; // assign button pin to variable
const int buttonSix =7; // assign button pin to variable
const int buttonSeven = 8; // assign button pin to variable
const int buttonEight= 9; // assign button pin to variable
int buttonState1 = 0; // se asignan 3 variables para cada boton
int lastButtonState1 = 0;
int toggleState1 = 0;
int buttonState2 = 0; // se asignan 3 variables para cada boton
int lastButtonState2 = 0;
int toggleState2 = 0;
int buttonState3 = 0; // se asignan 3 variables para cada boton
int lastButtonState3 = 0;
int toggleState3 = 0;
int buttonState4 = 0; // se asignan 3 variables para cada boton
int lastButtonState4 = 0;
int toggleState4 = 0;
int buttonState5 = 0; // se asignan 3 variables para cada boton
int lastButtonState5 = 0;
int toggleState5 = 0;
int buttonState6 = 0; // se asignan 3 variables para cada boton
int lastButtonState6 = 0;
int toggleState6 = 0;
int buttonState7 = 0; // se asignan 3 variables para cada boton
int lastButtonState7 = 0;
int toggleState7 = 0;
MIDI_CREATE_INSTANCE(HardwareSerial,Serial, midiOut); // create a MIDI object called midiOut
void setup() {
MIDI.begin(1);
pinMode(buttonOne, INPUT_PULLUP);// setup button as input Pullup
pinMode(buttonTwo,INPUT_PULLUP); // setup button as input Pullup
pinMode(buttonThree,INPUT_PULLUP); // setup button as input Pullup
pinMode(buttonFour,INPUT_PULLUP); // setup button as input Pullup
pinMode(buttonFive,INPUT_PULLUP); // setup button as input Pullup
pinMode(buttonSix,INPUT_PULLUP); // setup button as input Pullup
pinMode(buttonSeven,INPUT_PULLUP); // setup button as input Pullup
pinMode(buttonEight,INPUT); // setup button as input
Serial.begin(31250); // setup MIDI output
}
void loop() {
buttonState1 = digitalRead(buttonOne);
delay(10); // software de-bounce
if(buttonState1 != lastButtonState1 && buttonState1 == 1 && toggleState1 == 0) {
MIDI.sendControlChange(25, 127, 1);
delay(250);
toggleState1 = 1;
}
else if(buttonState1 != lastButtonState1 && buttonState1 == 1 && toggleState1 == 1) {
MIDI.sendControlChange(25, 0, 1);
toggleState1 = 0;
}
lastButtonState1 = buttonState1;
buttonState2 = digitalRead(buttonTwo);
delay(10); // software de-bounce
if(buttonState2 != lastButtonState2 && buttonState2 == 1 && toggleState2 == 0) {
MIDI.sendControlChange(50, 127, 1);
delay(250);
toggleState2 = 1;
}
else if(buttonState2 != lastButtonState2 && buttonState2 == 1 && toggleState2 == 1) {
MIDI.sendControlChange(50, 0, 1);
toggleState2 = 0;
}
lastButtonState2 = buttonState2;
buttonState3 = digitalRead(buttonThree);
delay(10); // software de-bounce
if(buttonState3 != lastButtonState3 && buttonState3 == 1 && toggleState3 == 0) {
MIDI.sendControlChange(28, 127, 1);
delay(250);
toggleState3 = 1;
}
else if(buttonState3 != lastButtonState3 && buttonState3 == 1 && toggleState3 == 1) {
MIDI.sendControlChange(28, 0, 1);
toggleState3 = 0;
}
lastButtonState3 = buttonState3;
buttonState4 = digitalRead(buttonFour);
delay(10); // software de-bounce
if(buttonState4 != lastButtonState4 && buttonState4 == 1 && toggleState4 == 0) {
MIDI.sendControlChange(36, 127, 1);
delay(250);
toggleState4 = 1;
}
else if(buttonState4 != lastButtonState4 && buttonState4 == 1 && toggleState4 == 1) {
MIDI.sendControlChange(36, 0, 1);
toggleState4 = 0;
}
lastButtonState4 = buttonState4;
buttonState5 = digitalRead(buttonFive);
delay(10); // software de-bounce
if(buttonState5 != lastButtonState5 && buttonState5 == 1 && toggleState5 == 0) {
MIDI.sendControlChange(107, 127, 1);
delay(250);
toggleState5 = 1;
}
else if(buttonState5 != lastButtonState5 && buttonState5 == 1 && toggleState5 == 1) {
MIDI.sendControlChange(107, 0, 1);
toggleState5 = 0;
}
lastButtonState5 = buttonState5;
buttonState6 = digitalRead(buttonSix);
delay(10); // software de-bounce
if(buttonState6 != lastButtonState6 && buttonState6 == 1 && toggleState6 == 0) {
MIDI.sendControlChange(63, 127, 1);
delay(250);
toggleState6 = 1;
}
else if(buttonState6 != lastButtonState6 && buttonState6 == 1 && toggleState6 == 1) {
MIDI.sendControlChange(63, 0, 1);
toggleState6 = 0;
}
lastButtonState6 = buttonState6;
buttonState7 = digitalRead(buttonSeven);
delay(10); // software de-bounce
if(buttonState7 != lastButtonState7 && buttonState7 == 1 && toggleState7 == 0) {
MIDI.sendControlChange(86, 127, 1);
delay(250);
toggleState7 = 1;
}
else if(buttonState7 != lastButtonState7 && buttonState7 == 1 && toggleState7 == 1) {
MIDI.sendControlChange(86, 0, 1);
toggleState7 = 0;
}
lastButtonState7 = buttonState7;
if(digitalRead(buttonEight) == HIGH) { // check button state
delay(10); // software de-bounce
if(digitalRead(buttonEight) == HIGH) { // check button state again
midiOut.sendControlChange(64,127,1); // send a MIDI CC -- 64 = note, 127 = velocity, 1 = channel
delay(250);
}
midiOut.sendControlChange(64,127,1); // send a MIDI CC -- 25 = note, 63 = velocity, 1 = channel
delay(250);
}
}