jtackaberry / reaticulate

An articulation management system for REAPER
Other
100 stars 45 forks source link

Connected notes don't play if midi channel changes #227

Open ovska opened 7 months ago

ovska commented 7 months ago

Connected notes of the same pitch don't play if the second note's articulation uses a different midi channel.

The problem is illustrated in the pictures below, first note is on Ch1 and second on Ch2. The second note refuses to play unless there's a miniscule gap after the end of the previous note. The problem happens whether the program change event is before or at the head of the second note. If the notes have different pitch, they play as expected. I'm not sure if this is possible to fix in Reaticulate or it's a limitation of MIDI, since I have some hazy memory of this happening in FL Studio with BRSO Articulate as well. Perhaps a note-off event needs to be processed before the articulation switch does it's thing. This is more of an annoyance than anything else, since after years of using inferior articulation management I've memorized what articulation goes in what Kontakt instrument ;)

image

image

jtackaberry commented 7 months ago

Could you insert a ReaControlMIDI instance directly after Reaticulate with MIDI logging enabled, play back your test case, and share the resulting events from the ReaControlMIDI log? Also, would you be able to attach a single track RPP with that MIDI item to be sure I'm testing the right thing?

I tried your scenario out, same banks and articulations, gapless adjacent quarter notes as in your screenshot, but (un?)fortunately couldn't reproduce. This is what I see from the MIDI logger:

0: B0 20 01 [CC32 Bank Select LSB] chan 1 val 1
1: 90 36 60 [Note On] chan 1 note 54 vel 96
2: B1 20 0B [CC32 Bank Select LSB] chan 2 val 11
3: 80 36 00 [Note Off] chan 1 note 54
4: 91 36 60 [Note On] chan 2 note 54 vel 96
5: 81 36 00 [Note Off] chan 2 note 54
6: 81 36 00 [Note Off] chan 2 note 54

And this looks ok to me. Sure, there's a superfluous note-off on channel 2 but that won't hurt anything. But articulation output events (CC32) are going to the right channels, and both channels have note-on and note-off events. Can't test this with SSB directly at the minute (I'm on my Linux laptop presently) but from what I see above this should play back properly.

jtackaberry commented 7 months ago

Could you insert a ReaControlMIDI instance directly after Reaticulate with MIDI logging enabled, play back your test case, and share the resulting events from the ReaControlMIDI log? Also, would you be able to attach a single track RPP with that MIDI item to be sure I'm testing the right thing?

Ok, disregard that, I'm with you now. The superfluous note-off on channel 2 is actually the first one, not the second one, and it's the source of the problem because the timing is wrong. Definitely a bug here. Will look to fix for the next minor release.