Forum Rule: Always post complete source code & details to reproduce any issue!
Results 1 to 2 of 2

Thread: USB Midi In with Teensy 3.1 and Arturia Analog Factory MIDI controller issues

  1. #1

    USB Midi In with Teensy 3.1 and Arturia Analog Factory MIDI controller issues

    I have been using the example that I shared with Paul & the PJRC community to build an interface to the Korg Monotron Duo:

    int ledPin = 13;
    void OnNoteOn(byte channel, byte note, byte velocity)
    {
    digitalWrite(ledPin, HIGH);
    }
    void OnNoteOff(byte channel, byte note, byte velocity)
    {
    digitalWrite(ledPin, LOW);
    }
    void setup()
    {
    pinMode(ledPin, OUTPUT);
    // usbMIDI.setHandleNoteOff(OnNoteOff);
    //usbMIDI.setHandleNoteOn(OnNoteOn) ;
    digitalWrite(ledPin, HIGH);
    delay(1000);
    digitalWrite(ledPin, LOW);
    delay(1000);
    usbMIDI.sendNoteOn(60, 99, 1);

    }

    void loop()
    {
    usbMIDI.read();

    }


    This works great when I control the Teensy from Midi Wrench (which is an iPad app), but when I connect the Teensy 3.1 to my MIDI controller (Arturia Analog Factory) the above code does not recognize the NoteOn and NoteOff events from that keyboard. Note that I am powering up the keyboard.
    I also used a USB monitor with my MAC to see the midi messages coming out from the MIDI controller, but again, the Teensy does not seem to recognize the NoteOn/NoteOff events.

    EDIT

    More information. I started the official Arturia SW and "snoop" this MIDI exchange:

    ====
    11:43:15.307 To Teensy MIDI SysEx Universal Non-Real Time 6 bytes
    11:43:16.077 To Analog Factory Experience SysEx Universal Non-Real Time 6 bytes
    11:43:16.078 From Analog Factory Experience SysEx Universal Non-Real Time 17 bytes
    11:43:16.282 To Analog Factory Experience SysEx Arturia 9 bytes
    11:43:16.283 From Analog Factory Experience SysEx Arturia 84 bytes
    11:43:16.305 To Analog Factory Experience SysEx Arturia 10 bytes
    11:43:16.307 To Analog Factory Experience SysEx Arturia 10 bytes
    11:43:16.310 To Analog Factory Experience SysEx Arturia 10 bytes
    11:43:16.312 To Analog Factory Experience SysEx Arturia 10 bytes
    11:43:16.314 To Analog Factory Experience SysEx Arturia 10 bytes
    11:43:16.316 To Analog Factory Experience SysEx Arturia 10 bytes
    11:43:16.318 To Analog Factory Experience SysEx Arturia 10 bytes
    11:43:16.320 To Analog Factory Experience SysEx Arturia 10 bytes
    11:43:16.322 To Analog Factory Experience SysEx Arturia 10 bytes
    11:43:16.324 To Analog Factory Experience SysEx Arturia 10 bytes
    11:43:16.326 To Analog Factory Experience SysEx Arturia 10 bytes
    11:43:16.328 To Analog Factory Experience SysEx Arturia 8 bytes
    11:43:16.414 To Analog Factory Experience SysEx Arturia 9 bytes
    11:43:16.497 From Analog Factory Experience SysEx Arturia 9 bytes
    11:43:16.497 From Analog Factory Experience SysEx Arturia 10 bytes
    11:43:16.514 To Analog Factory Experience SysEx Arturia 9 bytes
    11:43:16.515 From Analog Factory Experience SysEx Arturia 10 bytes
    11:43:16.613 To Analog Factory Experience SysEx Arturia 9 bytes
    11:43:16.614 From Analog Factory Experience SysEx Arturia 10 bytes
    11:43:16.681 To Analog Factory Experience SysEx Arturia 10 bytes
    11:43:16.692 To Analog Factory Experience SysEx Arturia 10 bytes
    11:43:16.692 To Analog Factory Experience SysEx Arturia 10 bytes
    11:43:16.692 To Analog Factory Experience SysEx Arturia 10 bytes
    11:43:16.692 To Analog Factory Experience SysEx Arturia 10 bytes
    11:43:16.692 To Analog Factory Experience SysEx Arturia 10 bytes
    11:43:16.693 To Analog Factory Experience SysEx Arturia 10 bytes
    11:43:16.695 To Analog Factory Experience SysEx Arturia 10 bytes
    11:43:16.697 To Analog Factory Experience SysEx Arturia 9 bytes
    11:43:16.698 From Analog Factory Experience SysEx Arturia 10 bytes
    11:43:58.602 From Analog Factory Experience Note On 1 F2 84
    11:43:58.676 From Analog Factory Experience Note Off 1 F2 81

    ====

    So it appears that I need to manage this SysEx message exchange between the controller and the Teensy 3.1.
    Does anybody know how to do this ?

    Also, my MIDI monitor does not show me the content of these SysEx messages, so while I have a better sense of what's going on I am still flying bind...

    Thank you
    Last edited by alfa66; 04-19-2014 at 06:48 PM.

  2. #2
    Quote Originally Posted by alfa66 View Post
    I have been using the example that I shared with Paul & the PJRC community to build an interface to the Korg Monotron Duo:

    int ledPin = 13;
    void OnNoteOn(byte channel, byte note, byte velocity)
    {
    digitalWrite(ledPin, HIGH);
    }
    void OnNoteOff(byte channel, byte note, byte velocity)
    {
    digitalWrite(ledPin, LOW);
    }
    void setup()
    {
    pinMode(ledPin, OUTPUT);
    // usbMIDI.setHandleNoteOff(OnNoteOff);
    //usbMIDI.setHandleNoteOn(OnNoteOn) ;
    digitalWrite(ledPin, HIGH);
    delay(1000);
    digitalWrite(ledPin, LOW);
    delay(1000);
    usbMIDI.sendNoteOn(60, 99, 1);

    }

    void loop()
    {
    usbMIDI.read();

    }


    This works great when I control the Teensy from Midi Wrench (which is an iPad app), but when I connect the Teensy 3.1 to my MIDI controller (Arturia Analog Factory) the above code does not recognize the NoteOn and NoteOff events from that keyboard. Note that I am powering up the keyboard.
    I also used a USB monitor with my MAC to see the midi messages coming out from the MIDI controller, but again, the Teensy does not seem to recognize the NoteOn/NoteOff events.

    EDIT

    More information. I started the official Arturia SW and "snoop" this MIDI exchange:

    ====
    11:43:15.307 To Teensy MIDI SysEx Universal Non-Real Time 6 bytes
    11:43:16.077 To Analog Factory Experience SysEx Universal Non-Real Time 6 bytes
    11:43:16.078 From Analog Factory Experience SysEx Universal Non-Real Time 17 bytes
    11:43:16.282 To Analog Factory Experience SysEx Arturia 9 bytes
    11:43:16.283 From Analog Factory Experience SysEx Arturia 84 bytes
    11:43:16.305 To Analog Factory Experience SysEx Arturia 10 bytes
    11:43:16.307 To Analog Factory Experience SysEx Arturia 10 bytes
    11:43:16.310 To Analog Factory Experience SysEx Arturia 10 bytes
    11:43:16.312 To Analog Factory Experience SysEx Arturia 10 bytes
    11:43:16.314 To Analog Factory Experience SysEx Arturia 10 bytes
    11:43:16.316 To Analog Factory Experience SysEx Arturia 10 bytes
    11:43:16.318 To Analog Factory Experience SysEx Arturia 10 bytes
    11:43:16.320 To Analog Factory Experience SysEx Arturia 10 bytes
    11:43:16.322 To Analog Factory Experience SysEx Arturia 10 bytes
    11:43:16.324 To Analog Factory Experience SysEx Arturia 10 bytes
    11:43:16.326 To Analog Factory Experience SysEx Arturia 10 bytes
    11:43:16.328 To Analog Factory Experience SysEx Arturia 8 bytes
    11:43:16.414 To Analog Factory Experience SysEx Arturia 9 bytes
    11:43:16.497 From Analog Factory Experience SysEx Arturia 9 bytes
    11:43:16.497 From Analog Factory Experience SysEx Arturia 10 bytes
    11:43:16.514 To Analog Factory Experience SysEx Arturia 9 bytes
    11:43:16.515 From Analog Factory Experience SysEx Arturia 10 bytes
    11:43:16.613 To Analog Factory Experience SysEx Arturia 9 bytes
    11:43:16.614 From Analog Factory Experience SysEx Arturia 10 bytes
    11:43:16.681 To Analog Factory Experience SysEx Arturia 10 bytes
    11:43:16.692 To Analog Factory Experience SysEx Arturia 10 bytes
    11:43:16.692 To Analog Factory Experience SysEx Arturia 10 bytes
    11:43:16.692 To Analog Factory Experience SysEx Arturia 10 bytes
    11:43:16.692 To Analog Factory Experience SysEx Arturia 10 bytes
    11:43:16.692 To Analog Factory Experience SysEx Arturia 10 bytes
    11:43:16.693 To Analog Factory Experience SysEx Arturia 10 bytes
    11:43:16.695 To Analog Factory Experience SysEx Arturia 10 bytes
    11:43:16.697 To Analog Factory Experience SysEx Arturia 9 bytes
    11:43:16.698 From Analog Factory Experience SysEx Arturia 10 bytes
    11:43:58.602 From Analog Factory Experience Note On 1 F2 84
    11:43:58.676 From Analog Factory Experience Note Off 1 F2 81

    ====

    So it appears that I need to manage this SysEx message exchange between the controller and the Teensy 3.1.
    Does anybody know how to do this ?

    Also, my MIDI monitor does not show me the content of these SysEx messages, so while I have a better sense of what's going on I am still flying bind...

    Thank you
    UPDATE

    I figured out I need to send the following from Teensy during the setup:

    byte SysExQuery[] = {0xF0, 0x7E, 0x7F, 0x06, 0x01, 0xF7};

    usbMIDI.sendSysEx(6, SysExQuery);

    but I get no response from the keyboard (or I don't know how to parse it !!!). I see not LED turning on/off ...


    void loop()
    {
    //usbMIDI.read();
    //************************************************
    // handle USB MIDI incoming data
    if( usbMIDI.read() ){
    if(usbMIDI.getType() == 0) {
    digitalWrite(ledPin, LOW);
    }
    if(usbMIDI.getType() == 1) {
    digitalWrite(ledPin, HIGH);
    }

    if(usbMIDI.getType() == 7){ // filter non-sysex
    pSysEx = usbMIDI.getSysExArray(); // get pointer to data
    if((pSysEx[0]==0xF0) && (pSysEx[1]==0x00)&&(pSysEx[2]==0x20)&&(pSysEx[3]==0x6B)){ // Arturia sysex header
    digitalWrite(ledPin, HIGH);
    delay(1000);
    digitalWrite(ledPin, LOW);
    delay(500);
    digitalWrite(ledPin, HIGH);
    delay(1000);
    digitalWrite(ledPin, LOW);
    delay(500);

    }
    }

    }

    }

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •