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);
}
}