hotchk155 / arpie

A compact and full featured MIDI arpeggiator, Open source, Arduino based
78 stars 22 forks source link

In Midi Lock mode, pressing more than one key on the keyboard generates a note on event when the keys are released. #32

Open dandelion-labs opened 8 years ago

dandelion-labs commented 8 years ago

I have found a fix for this - the following change to arpie.ino is needed: In the Midi Write function (about line 665) the code needs to be changed from this:

   // send channel message
   if(midiOutRunningStatus != statusByte)
    {
      Serial.write(statusByte);
      midiOutRunningStatus = statusByte;
    }
    if(numParams > 0)
      Serial.write(param1);
    if(numParams > 1)
      Serial.write(param2);    

to this:

    // send channel message
    if(midiOutRunningStatus != statusByte)
    {
      midiOutRunningStatus = statusByte;
    }
    Serial.write(statusByte);
    if(numParams > 0)
      Serial.write(param1);
    if(numParams > 1)
      Serial.write(param2);    

I hope that this helps for anyone else with this issue.

hotchk155 commented 8 years ago

Thanks for that! I think this might be fixed in the newer firmware I'm working on (you can try it from Arpie trunk) since that enables MIDI pass through in MIDI lock mode, but I'll bear your idea in mind,

I think though you are disabling running status on output with your change (Running status can save a lot of MIDI traffic). The bug was really that the "last running status" could be updated in the variable even when it had not been send out to the synth, so they got out of step and a note off could become a note on.

dandelion-labs commented 8 years ago

Hi, I'm fairly certain I'm using the latest firmware (VERSION_HI 7, VERSION_LO 7, with the accent velocity code etc). I must admit that I'm new to programming with MIDI and was unaware of what MIDI running status was until you mentioned it, and yes, you are right - my mod does appear to disable the running status. I'll have to dig a bit deeper into the code to see if I can find a better solution. BTW - thanks for a great little project & good documentation - I've enjoyed building my own Arpie from scratch!

hotchk155 commented 8 years ago

Ah, thats interesting... I might need to look at that again. Thanks for letting me know about it Cheers Jason

dandelion-labs commented 8 years ago

I've been looking into this issue a bit more, and the problem, I think, lies with the cheap QinHeng CH345 USB to Midi adapter I'm using - it apparently does not correctly support midi running status. (see: https://audiodestrukt.wordpress.com/2012/11/18/inexpensive-usb-midi-interfaces/)