Hi everyone,
i've been playing with midi out for a while, and everything works fine. ![]()
so now for midi in... i've been struggling with this some more, but after some time i found some solutions.
for an example, i can press a button and my traktor pro starts playing while returning the signal and turning on a led while the songs is being played.
so far so good. there is only one last bump in the road and that's the VU meter.
i thought this wouldn't be a problem cause traktor gives me the ability to send midi values between 0 to 127, but i just cant get the coding right...
i tried changing different examples from this forum, but no luck so far...
this is what i'm doing right now: (i know it's pretty verbose)
byte incomingByte;
byte note;
byte velocity;
byte check;
int ledA = 10;
int ledB = 9;
int ledC = 8;
int ledD = 7;
int ledE = 6;
int ledF = 5;
int ledG = 4;
void setup() {
pinMode(ledA, OUTPUT);
pinMode(ledB, OUTPUT);
pinMode(ledC, OUTPUT);
pinMode(ledD, OUTPUT);
pinMode(ledE, OUTPUT);
pinMode(ledF, OUTPUT);
pinMode(ledG, OUTPUT);
Serial.begin(31250);
}
void loop ()
{
if (Serial.available() > 0)
{
incomingByte = Serial.read();
delayMicroseconds(400);
note = Serial.read();
delayMicroseconds(400);
velocity = Serial.read();
if ((note== 0)&&(velocity>=0))
{ digitalWrite(ledA,HIGH);}
else{ digitalWrite(ledA, LOW);}
if ((note== 0)&&(velocity>=20))
{ digitalWrite(ledA,HIGH);
digitalWrite(ledB,HIGH);}
else{
digitalWrite(ledA, LOW);
digitalWrite(ledB,LOW);}
if ((note== 0)&&(velocity>=40))
{ digitalWrite(ledA,HIGH);
digitalWrite(ledB,HIGH);
digitalWrite(ledC,HIGH);}
else{
digitalWrite(ledA, LOW);
digitalWrite(ledB,LOW);
digitalWrite(ledC,LOW);}
if ((note== 0)&&(velocity>=60))
{digitalWrite(ledA,HIGH);
digitalWrite(ledB,HIGH);
digitalWrite(ledC,HIGH);
digitalWrite(ledD,HIGH);}
else{
digitalWrite(ledA, LOW);
digitalWrite(ledB,LOW);
digitalWrite(ledC,LOW);
digitalWrite(ledD,LOW);}
if ((note== 0)&&(velocity>=80))
{digitalWrite(ledA,HIGH);
digitalWrite(ledB,HIGH);
digitalWrite(ledC,HIGH);
digitalWrite(ledD,HIGH);
digitalWrite(ledE,HIGH);}
else{
digitalWrite(ledA, LOW);
digitalWrite(ledB,LOW);
digitalWrite(ledC,LOW);
digitalWrite(ledD,LOW);
digitalWrite(ledE,LOW);}
if ((note== 0)&&(velocity>=90))
{ digitalWrite(ledA,HIGH);
digitalWrite(ledB,HIGH);
digitalWrite(ledC,HIGH);
digitalWrite(ledD,HIGH);
digitalWrite(ledE,HIGH);
digitalWrite(ledF,HIGH);}
else{
digitalWrite(ledA, LOW);
digitalWrite(ledB,LOW);
digitalWrite(ledC,LOW);
digitalWrite(ledD,LOW);
digitalWrite(ledE,LOW);
digitalWrite(ledF,LOW);
}
if ((note== 0)&&(velocity>=100))
{ digitalWrite(ledA,HIGH);
digitalWrite(ledB,HIGH);
digitalWrite(ledC,HIGH);
digitalWrite(ledD,HIGH);
digitalWrite(ledE,HIGH);
digitalWrite(ledF,HIGH);
digitalWrite(ledG,HIGH);}
else{
digitalWrite(ledA, LOW);
digitalWrite(ledB,LOW);
digitalWrite(ledC,LOW);
digitalWrite(ledD,LOW);
digitalWrite(ledE,LOW);
digitalWrite(ledF,LOW);
digitalWrite(ledG,LOW);}
}