(Ayuda) potenciometro midi sin solucionar

Que tal! Hace rato q estoy queriendo hacer un controlador midi con arduino para usarlo en traktor (aclaro q soy principiante con el tema programacion y electronica). Para mandar las señales midi uso el SerialToMidi converter

y el LoopBe q sirve como instrumento midi virtual

Buscando sobre el tema encontre un codigo para enviar señales midi, con los pulsadores no hay problema, el tema se presenta con los potenciometros, cuando quiero mapear uno en traktor se puede ver q envia varias notas midi a la vez y unos segundos despues el LoopBe se pone en MUTE y tira el mensaje de feedback

el codigo que estoy usando es este:

(lo puse en pastebin xq se excedia de caracteres)
la conexion es la siguiente (potenciometro de 10k ohms):

si alguien me puede hechar una mano o ayudarme con algun codigo para leer las entrada analogicas del arduino uno y mandar las señales como notas midi se lo agradeceria

Hola yo estoy intentando realizar un proyecto que encontre en la red,el proyecto consiste en un controlador midi de 6 potenciometros lineales de 10 k,el problema esta en que una vez montado los valores que arrojan son muy inestables y al momento de probar con algun software de edicion musical (ableton ,cubase) la inestabilidad de valores sigue .Mipregunta es si habra un problema con el codigo o es por problema de cableado o tierra .Aqui dejo el codigo empleado y el esquema
gracias

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=0;
int iAn1Val=0;
int iAn2Val=0;
int iAn3Val=0;
int iAn4Val=0;
int iAn5Val=0;

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

//6
int iAn5ValPrev = iAn5Val;
iAn4Val = analogRead(5)/8;
analogPinMidiTX(6,iAn5Val,iAn5ValPrev);

}

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

circuito midi.png

Mira, los potenciómetros son una resistencia variable, como una canilla de agua, en donde vos regulas el voltaje que entra a la placa y segun cuanto este abierto va a dejar pasar el voltaje para el lado de la placa. Estos afectan el voltaje dependiendo de su valor (1 k, 10 k, etc) estos valores no siempre son perfectos, este varia dependiendo de la marca y calidad de los potenciómetros.

Esta tolerancia puede variar mucho o poco, pero siempre está presente, los potenciometros de mayor calidad tienen un tolerancia del 5% , y es por esto que se produce es esa inestabilidad en la lectura, es el potenciometro q fluctua ese porcentaje, asi que la solucion seria comprar unos de mayor calidad y probar. Creo que los mas baratos suelen tener una tolerancia en torno al 20%, lo ideal seria conseguir los primeros.

Acabo de probar con unos potenciometros de 10k ohms y tolerancia +/- 5 % (los anteriores eran de +/- 20 % ) y el problema sigue igual, asi q ya nose q puede ser... nose q tipos de potenciometros usaran los controladores midi.
si alguien puede aportar...

Rupo8:

Intenta este código, ya que esta mal tu lectura de puerto digital (0 en lugar de A0 por ejemplo) y el envio de datos tambien esta mal en orden, ademas de que el canal debe ser 144 o 0x90 mas el numero de canal (por ejemplo el canal 3 seria 0x92)

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=0;
int iAn1Val=0;
int iAn2Val=0;
int iAn3Val=0;
int iAn4Val=0;
int iAn5Val=0;

void loop()
{

//Canal 1
int iAn0ValPrev = iAn0Val;
iAn0Val = analogRead(A0)/8;
analogPinMidiTX(1,iAn0Val,iAn0ValPrev);

//Canal 2
int iAn1ValPrev = iAn1Val;
iAn1Val = analogRead(A1)/8;
analogPinMidiTX(2,iAn1Val,iAn1ValPrev);

//Canal 3
int iAn2ValPrev = iAn2Val;
iAn2Val = analogRead(A2)/8;
analogPinMidiTX(3,iAn2Val,iAn2ValPrev);

//Canal 4
int iAn3ValPrev = iAn3Val;
iAn3Val = analogRead(A3)/8;
analogPinMidiTX(4,iAn3Val,iAn3ValPrev);

//Canal 5
int iAn4ValPrev = iAn4Val;
iAn4Val = analogRead(A4)/8;
analogPinMidiTX(5,iAn4Val,iAn4ValPrev);

//Canal 6
int iAn5ValPrev = iAn5Val;
iAn4Val = analogRead(A5)/8;
analogPinMidiTX(6,iAn5Val,iAn5ValPrev);

}

void analogPinMidiTX(int iChan, int iVal, int iValPrev)
{
if(iValPrev != iVal)
{
MidiTX(0, iChan, iValPrev);
MidiTX(0x64,iChan,iVal);
}
}

void MidiTX(unsigned char VELOCITY, unsigned char CANAL, unsigned char VALOR) //pass values out through standard Midi Command
{
CANAL += 0x90 - 1;
Serial.write(CANAL);
Serial.write(VALOR);
Serial.write(VELOCITY);
}

Pablo a ti tambien te funcionaria ese codigo, solo utiliza un solo potenciometro y borra lo demas de codigo en la funcion loop =)