Go Down

Topic: Problema con MIDI (Read 68 times) previous topic - next topic

rockmartinez

Mar 08, 2019, 09:06 am Last Edit: Mar 08, 2019, 01:39 pm by rockmartinez
Buenos días,

Estoy trabajando en proyecto con midi y no consigo programar una orden de NoteOff, para cerrar el PIN 13.



Code: [Select]

    byte type;

    byte channel;

    byte data1;

    byte data2;

    void setup() {

    // Set MIDI baud rate:

    Serial.begin(31250);

    pinMode(13,OUTPUT);

    }

    void loop() {

    channel=0;

    type=0;

    data1=0;

    data2=0;

    readMIDI(&channel,&type, &data1,&data2);

    //type 0x90: Note On

    //data1 60: C4

    if ((channel==1)&&(type==0x90)&&(data1==80)&&(data2==1)){

    digitalWrite(13,HIGH);
    
    }

    else if ((channel==1)&&(type==0x80)&&(data1==80)&&(data2==0)){

    digitalWrite(13,LOW);

    }

    }

    void readMIDI(byte* channel ,byte* type, byte* data1, byte* data2)

    {

    int aux;

    while (Serial.available()>0){

    aux=Serial.read();

    if ((aux >= B10000000)&&(aux <= B11101111)){

    // Si es byte STATUS legal:

    *channel=(aux&B00001111)+1; //canales entre 1 y 16

    *type=(aux&B11110000);

    // Esperamos porque si aún no han llegado los datos,

    // los Serial.read() devolverán -1:

    while (Serial.available() < 2){

    }

    *data1 = Serial.read();

    *data2 = Serial.read();

    }

    }

    }


Un saludo y gracias

Go Up