Hola!, estoy contruyendo un controlador midi muy simple.
Quiero que tenga 5 potenciometros (uno por cada analog in)
Me he basado en este esquema:
y en este codigo que es una mejora del codigo del proyecto de la imagen:
void setup()
{
Serial.begin(31250); // Default speed of MIDI serial port
pinMode(13, OUTPUT); // Light LED on pin 13 to notify of readynes
digitalWrite(13, HIGH);
}
int iAn0Val, iAn1Val;
void loop()
{
//Slider X
int iAn0ValPrev = iAn0Val; //Get the previous value of slider X
iAn0Val = analogRead(0)/8;
analogPinMidiTX(1,iAn0Val,iAn0ValPrev); //TX the value of slider X
//Slider Y
int iAn1ValPrev = iAn1Val; //Get the previous value of slider Y
iAn1Val = analogRead(1)/8;
analogPinMidiTX(2,iAn1Val,iAn1ValPrev); //TX the value of slider Y
}
void analogPinMidiTX(int iChan, int iVal, int iValPrev)
{
//only TX the value over midi if it is changed, as to prevent spamming the midi port and thus confusing the receiving application in learning mode
if(iValPrev != iVal)
{
MidiTX(176,iChan,iVal);
}
}
void MidiTX(unsigned char MESSAGE, unsigned char CONTROL, unsigned char VALUE) //pass values out through standard Midi Command
{
Serial.print(MESSAGE);
Serial.print(CONTROL);
Serial.print(VALUE);
}
El problema es que este codigo está hecho para ser utilizado con solo 2 potenciometros, y a mi me gustaría utilizar 5 como ya dije. Qué modificaciones tengo que hacer en el codigo para conseguirlo?
Cada uno de los 5 potenciometros manda una señal midi distinta, para controlar distintos parametros de un software de sonido. No se si me explico.
Aqui te dejo un video de como funciona el proyecto de la imagen, para ver si aclara algo:
Lo tienes muy facil. Ya tienes creadas dos variables, una para cada potenciometro. Debes de crear tantas como potenciometros mas vayas a usar.
Y luego copiar la funcion que tiene cada variable dentro del loop y pegarla tantas veces como variables hayas creado, cambiado el nombre de la variable.
Si te fijas vien veras lo que cambia en cada variable, y podras añadir otras nuevas.
Ademas creo que el codigo no esta bien del todo, pero primero prueba a añadir los potenciometros.
Ten en cuenta que para poder usar el arduino como controlador midi, tienes que usar programas como el midiyoke o el midiox, si no, no te lo reconocerá ningún software.
gracias por las respuestas, ya lo tengo todo controlado, excepto un potenciometro que no funciona y creo que es porque lo he quemado con el soldador... falta de experiencia
aquí dejo el código:
void setup()
{
Serial.begin(31250); // Default speed of MIDI serial port
pinMode(13, OUTPUT); // Light LED on pin 13 to notify of readynes
digitalWrite(13, HIGH);
}
int iAn0Val, iAn1Val, iAn2Val, iAn3Val, iAn4Val;
void loop()
{
//1
int iAn0ValPrev = iAn0Val;
iAn0Val = analogRead(0)/8;
analogPinMidiTX(1,iAn0Val,iAn0ValPrev);
//2
int iAn1ValPrev = iAn1Val;
iAn1Val = analogRead(1)/8;
analogPinMidiTX(2,iAn1Val,iAn1ValPrev);
//3
int iAn2ValPrev = iAn2Val;
iAn2Val = analogRead(2)/8;
analogPinMidiTX(3,iAn2Val,iAn2ValPrev);
//4
int iAn3ValPrev = iAn3Val;
iAn3Val = analogRead(3)/8;
analogPinMidiTX(4,iAn3Val,iAn3ValPrev);
//5
int iAn4ValPrev = iAn4Val;
iAn4Val = analogRead(4)/8;
analogPinMidiTX(5,iAn4Val,iAn4ValPrev);
}
void analogPinMidiTX(int iChan, int iVal, int iValPrev)
{
//only TX the value over midi if it is changed, as to prevent spamming the midi port and thus confusing the receiving application in learning mode
if(iValPrev != iVal)
{
MidiTX(176,iChan,iVal);
}
}
void MidiTX(unsigned char MESSAGE, unsigned char CONTROL, unsigned char VALUE) //pass values out through standard Midi Command
{
Serial.print(MESSAGE);
Serial.print(CONTROL);
Serial.print(VALUE);
}
mañana subo una foto de como me ha quedado todo ensamblado con su caja y todo, es bastante original el diseño
hola, tengo un controlador midi con tan solo un potenciometro,tarjeta Arduino Leonardo,he copiado tu plano tal y como esta ahí,solo que con un potenciometro y me funciona, solo que el potenciometro en el pluguin no funciona como debería,da saltos y se queda tembleque, pienso que s tema de valores en la programacion,ni idea, pero seguro eu tu sabes.gracias