ajp
Seeker
Posts: 4
|
Post by ajp on Jan 12, 2020 0:10:16 GMT
Hi Nic, I believe I've found a bug: mfxConvert will correctly convert MIDI notes that are comprised of Note On (0x90) messages with "Offs" that are Note On messages of value 0. However, if the source sends a discrete Note Off message (0x80) it gets converted to something else. Here's a video of the issue: youtu.be/ca6xWc55nZ0In the clip, mfxConvert is set to convert a note D6 (0x90 62 xx) to CC 2 (B0 02 xx). However, when sent a note that is comprised of discrete Note On and Note Off messages, the Note On is converted to the CC, but the Note Off is converted to Poly Pressure (0xA0 02 00) If the conversion is to a: Note, the note off is sent on release (correct behavior) PolyPressure, a note off is sent on release Controller, Poly Pressure 0 is sent on release Pitchbend, Channel Pressure 0 is sent on release BTW, in the app notes you state: note to controller: Controller value will be the note on velocity. Note offs are treated as note ons with zero velocity.So does that mean they will be converted to the controller at a 0 value? That's what I'm seeing with Note Offs that are 0x90 with velocity 0. Just want to be clear on the expected behavior. Thanks!
|
|
nic
Soapbox Supremo  
Troublemaker
Press any key to continue
Posts: 2,011
|
Post by nic on Jan 12, 2020 10:48:25 GMT
Hi ajp , Yeah, that's a (stupid) bug allright. Thanks for reporting it. I have a fix and will push out an update some time this week. Regards, Nic.
|
|
nic
Soapbox Supremo  
Troublemaker
Press any key to continue
Posts: 2,011
|
Post by nic on Jan 13, 2020 9:01:08 GMT
Hi ajp , Yes, note offs (80 (post next release) or 90 XX 00) will be converted to the CC's zero value. Regards, Nic.
|
|
ajp
Seeker
Posts: 4
|
Post by ajp on Jan 14, 2020 22:10:09 GMT
Hi Nic, Just got the update! Thank you so much for your rapid support, it's appreciated!
One thing: When Note to Pitch Bend conversion is set to MSB, the Note Off sends a 0 instead of 8192. (with LSB it's correctly sending 8192 with Note Off)
Also, is there a way to get downward pitch bends? It just seems to be upward pitch motion.
And is there a way to get the 7 bit incoming value scaled to the full 14 bits? With MSB conversion it tops out at 16256. In most cases that's probably close enough, but it's not quite to full scale (an LSB off).
|
|
ajp
Seeker
Posts: 4
|
Post by ajp on Jan 14, 2020 22:15:05 GMT
BTW, I was wondering why Note to Controller sends a 0 value on Note off while Note to Channel Pressure doesn't, but I realized that the different behavior means I could get either single or dual messages from both if I use two instances of mfxConvert.
1:(Note On to Channel Pressure) > 2:(Channel Pressure to Controller) = Only a Controller message for Note On
1:(Note On/Off to Controller) > 2:(Controller to Channel Pressure) = Channel Pressure message for both Note On (velocity) and Note Off (0)
Nifty!
|
|
nic
Soapbox Supremo  
Troublemaker
Press any key to continue
Posts: 2,011
|
Post by nic on Jan 15, 2020 12:43:31 GMT
Hi ajp , > One thing: When Note to Pitch Bend conversion is set to MSB, the Note Off sends a 0 instead of 8192. (with LSB it's correctly sending 8192 with Note Off)
> Also, is there a way to get downward pitch bends? It just seems to be upward pitch motion.
> And is there a way to get the 7 bit incoming value scaled to the full 14 bits? With MSB conversion it tops out at 16256. In most cases that's probably close enough, but it's not quite to full scale (an LSB off).Note to pitchbend conversion is not very smart - it's just replacing bytes: LSB mode: E0 XX 40 MSB mode: E0 00 XXWhere XX is the note velocity (which is zero for a note off). However note velocities < 64 should result in a downward pitch in either mode? If you want something more fancy then you're looking at some StreamByter code instead I guess. Regards, Nic.
|
|
ajp
Seeker
Posts: 4
|
Post by ajp on Jan 17, 2020 23:03:18 GMT
>Hi ajp , > >> Also, is there a way to get downward pitch bends? It just seems to be upward pitch motion. > >> And is there a way to get the 7 bit incoming value scaled to the full 14 bits? With MSB conversion it tops out at 16256. In most cases that's probably close enough, but it's not quite to full scale (an LSB off). > >Note to pitchbend conversion is not very smart - it's just replacing bytes: > >LSB mode: E0 XX 40 >MSB mode: E0 00 XX > >Where XX is the note velocity (which is zero for a note off). > >However note velocities < 64 should result in a downward pitch in either mode? Yes, you're quite right! I think I got confused because the default setting is LSB which just adds 0-127 to 8192. In MSB, you get downward bends with velocity under 64. >> One thing: When Note to Pitch Bend conversion is set to MSB, the Note Off sends a 0 instead of 8192. (with LSB it's correctly sending 8192 with Note Off) That said, I don't think this is the ideal behavior. Since it's sending 0 on note off, it doesn't reset the pitch bend to the midpoint (i.e. no pitch bend), it sets it to all the way down (potentially a couple octaves lower than the played note, depending on the synth setting). I would think ideal behavior would be to send 8192 on note off? Thanks again!
|
|