jtackaberry / reaticulate

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

Naming Issues with Controller #71

Closed Phfraiengngchkxzcs closed 5 years ago

Phfraiengngchkxzcs commented 5 years ago

Hi Tack, I've been using the Lemur/Reaticulate setup for a week now and it's working pretty well. Just noticed something odd and wondered if it's on my end or something that is currently not supported. (sorry if this should be under the Allow Articulations by Midi Notes thread, i wasn't sure in reading that if this was the same thing.)

When recording a new midi item, playing in the line and then recording the articulations in with Lemur, Reaper was recording something that looked like the MSB/LSB, although the 1st digit is always 121 instead of my Bank number for some reason. So, for my legatos, I'd get 121-0-1. However, if i go in manually with Reaticulate and right-click the articulation, the name of the articulation is displayed in the Bank/Prog Select lane.

After that, when I record articulations into that particular MIDI item, they are recorded from Lemur with the correct names. You can see this clearly in the pictures because (due to another little issue i'm having with Lemur) PC changes recorded from my iPad record 2 PC data every time I hit the pad. So you can see in the 2nd picture, the double-input from the live-recorded articulation switch is properly named. (side note, after i follow this procedure, if i hit a pad that has no articulation mapped to it, the MSB/LSB info is correct. instead of 121-0-2, i now get the correct bank 52-0-2, since pad 2 is blank. it seems like it has to be guided to interact correctly with Reaticulate. EDIT: and if i go into a MIDI Item that is showing all the 121-0-x info and Right-click-insert a Reaticulate articulation, all articulations in that item are then updated to the correct names.

1st pass 2nd pass
jtackaberry commented 5 years ago

I think what's happening here is Lemur is just outputting a Program Change message without a bank select. Without a bank select, Reaper doesn't know what bank the PC belongs to, so it's just using some default.

But of course it's not reasonable to expect Lemur to know what bank to select. That changes by track. And even on a given track, you might have multiple banks.

The solution to this problem is to use one of Reaticulate's "Activate articulation" actions, probably Reaticulate_Activate articulation by CC on default channel.lua. Can you have Lemur emit a CC to change articulations instead of PC? Then you can bind the CC to this articulation, and Reaticulate figures out what bank is intended based on the context of the track.

If you need to make sure Reaticulate is sending to the control surface the same thing it's receiving, then in Reaticulate's settings under the Feedback section, change Articulations to CC values and specify the same CC # you have Lemur sending.

In other words, you pick some unused CC as a glue to the program changes Reaticulate uses. I use CC 119 myself. So the sequence of events would look like:

  1. Lemur sends CC 119 value 42 (for example) on a MIDI device Reaper is listening on for control messages (but not general performance events lest the CC land in your MIDI item)
  2. Reaper activates the action CC119 is bound to: Reaticulate_Activate articulation by CC on default channel.lua
  3. Reaticulate interprets the CC value (42) as a program number, finds which bank on the current track has this program number, and sends the bank select message followed by a program change message. Those events land in the MIDI item, causing Reaper to display the proper articulation name.
  4. The Reaticulate JSFX receives the program change message, and outputs to the control surface CC 119 value 42 (because that's how you configured articulations to be output in Reaticulate's settings).
  5. Lemur receives CC 119 value 42, and maps that back to the button that sent that MIDI event, completing the round trip. (Or I assume: I don't actually know Lemur and can't use it because I'm not an Apple person.)

Alternatively -- and this is what I do -- if you want to be able to work with multiple MIDI channels, you can have the actions mapped like so:

Hopefully that helps!

Phfraiengngchkxzcs commented 5 years ago

Hi Jason, that was extremely helpful! Thank you! That's awesome. It took me a minute but I got things working on the CC front, at least for the input. It's inputting a single Bank/PC change that matches the correct Reaticulate patch, so that's great!
I haven't totally figured out how to get the info back into Lemur in order auto-update my articulations on screen as I had before. When using CCs for Feedback to Control Surface, how is the info transmitted (what format)? Is there a way to still get the MSB/LSB if it's only sending back a CC value on 119? Before i was using CC0 50 (and up) for the bank and then the CC32 Value to trigger the particular patch. Not sure how to do that with the single value coming in.

Also, this may be related to not having my articulations making it through the round trip, as you put it... but when when I hit record and touch the iPad screen I can enter in the articulation changes, however I can only drop them at the edit cursor. they will continue to update if i keep hitting different pads, but only in the single location. any idea why?

jtackaberry commented 5 years ago

@Phfraiengngchkxzcs sorry about the delay in replying

Is there a way to still get the MSB/LSB if it's only sending back a CC value on 119?

The 14-bit bank select message (the two 7-bit CC0 + CC32 events) is still fed back to the controller as it is. Translation to CC is only done for program changes.

but when when I hit record and touch the iPad screen I can enter in the articulation changes, however I can only drop them at the edit cursor. they will continue to update if i keep hitting different pads, but only in the single location. any idea why?

There was a recent bug with live recording that I fixed in version 0.3.2 released 8 days ago. This sounds like it's probably related. Can you check the version of Reaticulate via ReaPack's "Browse Packages" window and confirm you're on version 0.3.2? If not, try updating.

jtackaberry commented 5 years ago

I'm going to close this as answered, but if you have further questions/issues feel free to reopen.