What's new

Reaticulate - articulation management for REAPER - 0.5.13 now available

t would be amazing to have like a check box to activate or disable delay compensation
Yes I think actually this would have to be disabled by default. It's maybe just a bit too magical, you know? So I'd provide a way in the to toggle delay compensation at the track level when there is some bank loaded that offers it.

I like the new CSS Bank in the video (no toggles), but since it's a factory bank, will it overwrite the banks that we already have? If I load a project that used the old bank, does the info stay loaded in the script or does it reload from the file every time the project opens?
Actually there are still toggles for sordino :)

The new bank definition will deprecate the old one, but it will live at a different bank number so as not to conflict with the current one. So while the old one won't be available to add to new tracks, existing projects that used it will continue to work.

Although it will be ok in this case, I'd highlight that during the alpha release, backward compatibility of banks isn't a goal. I've made a few tweaks along the way to existing banks. Caveat emptor. :)

Though I should like to find a way to deal with this basic problem before beta. I'm not too happy with the idea that existing factory banks are immutable and can never improve for fear of breaking users' projects.

OMG Tack, I'm speechless, that's the best thing since sliced bread!
Thanks! Of course I can't take credit for the idea: Noam's solution works this way for LPX, and even before then a user (on the Reaper forum I believe) had asked for this feature.
 
Although it will be ok in this case, I'd highlight that during the alpha release, backward compatibility of banks isn't a goal. I've made a few tweaks along the way to existing banks. Caveat emptor. :)

Though I should like to find a way to deal with this basic problem before beta. I'm not too happy with the idea that existing factory banks are immutable and can never improve for fear of breaking users' projects.
What about the option for a user to save a copy of the bank within the project file and then load things from that internal copy rather than from the external definitions file? I'm using a custom articulation system in which I save the definitions in the notes section of an item on the track it applies to, so the definitions get saved with the project/track template and are still user editable.
 
What about the option for a user to save a copy of the bank within the project file and then load things from that internal copy rather than from the external definitions file?
Hm, yes, I think this might be the right thing to do. Maybe not even as an option, but just by default. Thanks for the idea.
 
This script is already working really well for me. I am about to rebuild my setup, including my template. I plan on using TouchOSC or Lemur in combination with your script to switch articulations in my orchestral template. I managed to switch articulations using TouchOSC to trigger the "Activate articulation by CC on default channel" action.
Now I am trying to figure out how to make it work with many different libraries. Ideally there would be a way for the controller app to know automatically which articulations are available, and auto-populate a page, but I don't think it is possible? The second best possibility would be to have an action similar to "Activate articulation by CC on default channel", but the first articulation in the list would always be linked to a value of 1, the second to a value of 2 etc.
Or is there another and better solution I haven't been thinking of?
 
Ideally there would be a way for the controller app to know automatically which articulations are available, and auto-populate a page, but I don't think it is possible?
Under normal circumstances, you can't pass the sort of complicated data (such as text strings) between Reaper and Lemur that would be required to make this work. It can be coded around -- I've successfully constructed a system that can deal with this kind of stuff by sending data from the script to a JSFX plugin that encodes it as a sysex message that can be decoded from within Lemur -- but it requires a lot of tailoring of both the Reaper scripts and the Lemur scripts so each can understand what the other is sending. There isn't an out-of-the-box solution, unfortunately, and custom solutions are difficult to set up and need to be pretty tightly integrated with the scripts that are involved.
 
Ideally there would be a way for the controller app to know automatically which articulations are available, and auto-populate a page, but I don't think it is possible?
I'm not aware of a mechanism for this myself. It wouldn't be hard to have Reaticulate send some custom MIDI to a control surface when the track is selected (in fact the next version will support sending last CC values to a control surface on track selection for purposes of syncing faders or encoders for control surfaces that support input this way). The problem probably would be in having TouchOSC or Lemur switch its (predefined) context based on that incoming MIDI.

Perhaps that capability does exist. If so, maybe someone could explain more. :)

The second best possibility would be to have an action similar to "Activate articulation by CC on default channel", but the first articulation in the list would always be linked to a value of 1, the second to a value of 2 etc.
If I understand you right, this is doable. It's just up to you to create banks for your workflow such that all the program numbers are this way.

But what would that look like on the control surface? You'd just have generic numbered buttons that trigger the articulations as listed in Reaticulate's UI? Definitely doesn't seem like ideal control surface integration.
 
I'm not aware of a mechanism for this myself. It wouldn't be hard to have Reaticulate send some custom MIDI to a control surface when the track is selected (in fact the next version will support sending last CC values to a control surface on track selection for purposes of syncing faders or encoders for control surfaces that support input this way). The problem probably would be in having TouchOSC or Lemur switch its (predefined) context based on that incoming MIDI.

Perhaps that capability does exist. If so, maybe someone could explain more. :)
Lemur is scriptable so I think it would be possible. For a given incoming MIDI message Lemur would create a button with a given name. Maybe there is even a way for the MIDI message to tell Lemur which MIDI message the button should send based on the Reabank file. I will ask zvukofor, he's the creator of the Binder template and probably knows if it's a possible.

If I understand you right, this is doable. It's just up to you to create banks for your workflow such that all the program numbers are this way.

But what would that look like on the control surface? You'd just have generic numbered buttons that trigger the articulations as listed in Reaticulate's UI? Definitely doesn't seem like ideal control surface integration.
I need to learn more about banks. I thought that the program numbers depended on the library. It wouldn't be generic numbered buttons. I would still create different pages. It would simply make the creation of these pages a little bit easier.
 
I need to learn more about banks. I thought that the program numbers depended on the library. It wouldn't be generic numbered buttons. I would still create different pages. It would simply make the creation of these pages a little bit easier.
The program numbers are completely arbitrary. The library-specific stuff is the MIDI output events that are assigned to the articulation. But program 39 can send note C-1 velocity 50 to your underlying VI library as easily as program 77. Or whatever.

The factory banks use program numbers that, when possible, align to the UACC specification (so e.g. program 1 would be longs, program 42 would be spiccato, program 56 would be pizz, etc.) and the reason for that is exactly so that you can have "pizz" button somewhere that sends CC value 56 for some CC that's bound to the "Activate articulation by CC" action and have this pizz button work regardless of the library.

Admittedly this only works up to a point, because of course libraries are vastly different -- sometimes wildly so (e.g. Albion V) -- but my primary motivation is to at least have a basic palette of common articulations that I can count on to work across libraries for sketching. If you trigger program 1 on a factory bank, you should get whatever would be considered as the default non-legato sustain articulation for that library. Or program 7 would be a muted non-legato sustain. Or program 42 would be a very short articulation. Then you can have a palette of basic articulations for sketching from a control surface, and use the Reaticulate GUI itself for more library-specific fine tuning.

That's my goal for the factory banks anyway. For user banks you're of course free to pick whatever program numbers you want.
 
I found in another thread someone who did something that could work well:
The automatic change of the articulations is all done in one function, depending on the polypressure value that cubase returns (which identified the instrument track) a variable keeping an array of strings is used to fill in the value of the labels of the pads.
Only thing you have to do is that you have an array of strings which matches with your articulations and is correctly used depending on polypressure sent

Then you can link this in expression maps assuming that articulations click on lemur will trigger a program change in sequential order
He explains more in depth the concept in the second part of this video:
I think this would be actually quite a bit easier to do in Reaper with the help of Reaticulate. Reaticulate would make sure that the articulations follow UACC specifications when possible. Actually we could even have a script that automatically creates the list of articulations to be used in Lemur (see video at 23:00) based on the Reabank files. Non standard articulations could always be added manually after the fact.
 
I finally got a tablet and installed Lemur. After watching a few videos it wasn't too difficult to achieve what I wanted. Now I have a concept that work. On the left side of the screen I have a system to choose my instruments, on the right side i have 16 buttons for normal articulations (turning one on turns the others off) and right under I have 4 more buttons that are for non exclusive articulations (for example muted, which can work both for legato and short notes.)
Every time I click on an instrument the articulations buttons are automatically updated to display the correct name and send the correct cc. UACC specifications are followed when possible.
So finally the current version of Reaticulate does a wonderful job at making sure that all the libraries are as consistent as possible, which made this much easier to implement.
 
Every time I click on an instrument the articulations buttons are automatically updated to display the correct name and send the correct cc.
Cool. Ideally now when you select a track in Reaper, Lemur would update automatically to reflect the instrument selection. I skimmed the video and it looks like you can do this kind of thing with Lemur using arbitrary MIDI messages, it's just he decided to use polypressure? (I'd try it myself but it's fairly expensive and it has all the trappings of abandonware.)

Wouldn't be difficult to augment the "CC feedback to Control Surface" feature that's in the next version of Reaticulate. Right now it just emits last-seen CC values when a track is selected. I could probably add some special per-track configuration to send an additional specific MIDI event to the control surface when the track is selected.

So finally the current version of Reaticulate does a wonderful job at making sure that all the libraries are as consistent as possible, which made this much easier to implement.
Great to hear. :)
 
Last edited:
Hi all,

I could use a bit of help testing the next version of Reaticulate before I officially release it. In particular I'm interested in regressions and general compatibility with existing projects. I've done the best I can, but there's no substitute for environment variation.

Also, I completely changed the structure of the ReaPack index which is more correct (based on input from cfillion) but it's not compatible with the previous one. Consequently, upgrading to this new version will require removing the old package and installing a new one. This can safely be done without risk to your custom reabanks.

So if you're willing to be a guinea pig helpful tester, please follow these steps to uninstall the previous 0.1.0 release:
  1. Close current project (if one is open)
  2. Menu: Extensions | ReaPack | Manage Repositories
  3. Right click Reaticulate and click Uninstall
  4. Click ok and say yes to the prompt
  5. Restart Reaper (necessary to stop existing Reaticulate instance)

And these steps to try the prerelease:
  1. Menu: Extensions | ReaPack | Manage Repositories
  2. Click Import/Export | Import Repositories
  3. Paste: http://reaticulate.com/prerelease.xml
  4. Click ok and double click on Reaticulate in the Repository list
  5. Click Install/update Reaticulate button and select Install all packages
  6. Close the ReaPack windows and invoke the action "Script: Reaticulate_Main.lua"

At this point you should back up any project before loading (don't we all already do that? :)) and test the usual things.

Please do report back any regressions or other weird behavior. You shouldn't find things look very different, but there's a lot of rework under the hood so I had plenty of opportunity to break stuff. :)

At any time you can uninstall the prerelease (by going through the first set of steps) and reinstalling the last release using the instructions on the website. Projects saved with this version of Reaticulate will not work with the old version, hence project backups are important.

Many thanks!

[Cross-posted to The Sound Board and the Reaper forum.]
 
What's new in the update, feature wise, if I may ask?
Will announce that along with the release. (Working on some docs and a video over the next couple days.) For now I'm just hoping for regression sanity checking if you're feeling adventurous. :)
 
Unfortunately hollywood strins doesnt contain to many key switches an play doesnt offer custom keyswitches. Maybe mapping articulations to midi channels is an option than
Ah. Sorry I can't be of much help with the specifics, as I don't have anything from the Hollywood series, but yes, if there's no keyswitching capability in the underlying library, assigning articulations to different channels could work. Standard multi type config. Obvious limitation is that you'd be limited to 16 articulations per track.
 
Top Bottom