What's new

Reaticulate - articulation management for REAPER - 0.5.13 now available

After creating a bank for a next complex instrument, I want to return to my old (impossible?) request for more overall groups.. :) I remember, that Cubase has 4 groups, but it's not enough too - there are a couple of instruments with a lot of independent switchable options (for this bass 8 groups needed, see att.pic) - is it very hard limit to programming?
It's not impossible. It might not even be all that hard, if I take the easy way out. In the underlying articulation data structure managed by the JSFX, I've allocated 4 bits for the group number, which would support 16 total groups.

The basic problem is that there are a number of arrays in the JSFX that are multiples of MAX_GROUPS, and many code paths that iterate over those arrays. This means that by increasing the max number of groups from 4 to 16, some things will take 4x more memory and execute 4x slower.

That kind of increase is uncomfortable to me for what actually is a pretty fringe use-case. Needing more than 4 groups is rare. So I'd rather optimize things properly so that we're iterating over the number of groups in use, rather than MAX_GROUPS. And that just takes more effort than is worth spending right now while I have more pressing problems to solve (like the GUI bank editor :)).

A related problem is that the more groups you use, the higher the probability you'll be hit by the chasing problem: Reaper doesn't know about Reaticulate groups and only chases the last program on a given channel, as you know. It can be worked around putting the different groups in different banks assigned to separate source channels, but that's a bit of a hack. So I'd rather explore this idea and see if it's workable before bumping the groups limit.
 
Just a quick bugfix release for today in version 0.4.1.

Installing
If you're a new user (not upgrading), just follow these installation instructions.


Upgrading
If you've installed using ReaPack, you should eventually receive the update, but you can force it by following the updating instructions.


Here are the changes since 0.4.0:

Bug Fixes
  • Fixed a bug with the inline MIDI editor when the option to insert articulations at selected notes was enabled
  • Fixed a related bug where articulations would fail to insert at the edit cursor if the active item in the MIDI editor was different than the one under the edit cursor
  • When "Track selection follows MIDI editor target item" is enabled, don't vertically scroll the arrange view to show the track as that behavior ends up being particularly obnoxious
 
Thanks to another post on the forum I tried reaticulate for a second time and for some reason I made it work this time. Now I have to rework my template, cause this is so much better then any other solution I had so far. Thank you so much for developing this. I love reaper and was super close to jump ship to Cubase to get the expression manager.
 
Glad you didn't... After having used expression maps in Cubase, I hated it so much. It's basically an abandonned place. Has been implemented and never got an update ever since.
Reaticulate is the future :grin:
 
Hi all,

Have just updated to latest Reaticulate via the Reapack sync (and I'm getting back into my VIs after many months away from the template due to work stuff so I'm a bit rusty). I've noticed a couple of things.

1) I've started looking at using VEPro and have VEPro 6. I've started tentatively building a new template up using it and I've just noticed that Reaticulate is not chasing the PCs at all when I'm using Kontakt inside VEPro. Natively in Reaper the PCs chase perfectly. Everything else works fine with VEPRo bar the chasing.

*Update* I've found the culprit. I have a JS Midi Nudge on the whole track to pull back CSS shorts/longs etc by 60ms etc so they are in time. I prefer doing it this way rather than nudging the notes before the grid as that messes up the score view.

If my JS Midi Nudge is ON then Reaticulate doesn't chase. If it's OFF Reaticulate chases perfectly (both Native and via VEPro)

2) My Program Change lane in the Reaper Midi Editor doesn't show any names on the PC events like I see in Reaticulate screengrabs. They're there in the Event List view (under Parameters), matching the articulation name in the Reaticulate bank but in the Piano roll view with Lanes underneath, nothing shows up. I think I may have to load my reaticulate.reabank file somewhere so they show up in the PC lane but I don't know where!

Both of these are undoubtedly pilot errors on my part. Grateful for any pointers. I've taken about ten months out and I feel like I've gone back three years in knowledge :shocked::grin:
 
Last edited:
*Update* I've found the culprit. I have a JS Midi Nudge on the whole track to pull back CSS shorts/longs etc by 60ms etc so they are in time. I prefer doing it this way rather than nudging the notes before the grid as that messes up the score view.
It sounds like the plugin is only adjusting the delay on notes, but not the PCs? It might be easy to hack the plugin to include PCs as well. (As an aside, eventually I want to add a per-articulation delay configuration to Reaticulate, so on a given articulation you can control note delays based on note velocity. But this is a pretty invasive and complex change, so it's more of a future thing.)

My Program Change lane in the Reaper Midi Editor doesn't show any names on the PC events like I see in Reaticulate screengrabs.
Make sure you have the CC lane called "Bank/Program Select" visible in the MIDI editor. The "Program" lane isn't the one that shows the program text. Reaticulate takes care of making sure all the reabank stuff is visible to Reaper and the program changes will resolve correctly to the right name. So you just need to show the Bank/Program Select lane in the MIDI editor.

Good luck!
 
Hi Tack, Thanks for your continued development of Reaticulate, it really is fantastic. I can see you're adding to it's functionality all the time. So many times I've thought about hopping over to Cubase but Reaticulate keeps me in Reaper!

Brilliant, I can see all the names now. Oh boy, I tried everything I could think of for a few hours this morning and yet they were there all the time... in a different lane haha :)

I can live with shifting the notes back, it's really only CSS that needs major shifts on the legatos which messes with the notation view but that's way down the list of current essentials. I have another script to shift CSS notes based on velocity that was developed by a VI contributor (CRT_Midi_CSS_Nudge).

Thank you, as always!
 
0.4.3 just landed with another set of bugs squashed. Thanks everyone for your continued feedback.

Installing
If you're a new user (not upgrading), just follow these installation instructions.


Upgrading
If you've installed using ReaPack, you should eventually receive the update, but you can force it by following the updating instructions.


Here are the changes since 0.4.1 (including fixes from 0.4.2 which I forgot to announce):

Bug Fixes
  • Fixed a crasher on OSX when "Track selection follows FX focus" is enabled
  • Fixed bug where duplicating tracks containing the Reaticulate JSFX may not reflect the same bank assignments
  • Fixed an issue loading projects or importing track templates saved with older versions of Reaticulate where changes made to banks would not be automatically synced to the track
  • Fixed inserting articulations when the edit cursor is at the boundary between two MIDI items
  • Fixed a regression with the track configuration screen where it failed to properly reflect additions or removals of banks when the Refresh toolbar button was pressed
 
Used method "2" above to get all the Spitfire LABS articulations for Strings on one track by adding 3 instances of the LABS Vsti to one track (with an articulation loaded on each) and then adding a child track that has Reaticulate on using the following bank routing:

//----------------------------------------------------------------------------
//! g="Spitfire/Labs" n="Strings"
//! chase=1,11,16-21,64-69
Bank 04 3 LABS - Strings

//! c=long i=note-whole o=@1
1 long
//! c=long i=note-whole o=@2
2 ensemble
//! c=short i=staccato o=@3
40 short

This is a great way of condensing the LABS instruments which have no form of keyswitching or UACC available inside the VSTi.


Hi,
I am relatively new to Reaper and Reaticulate. I have installed Reaticulate and today experimented with some examples copied from the factory banks. The problem is, I need a Solo Violin, and I have none of the libraries for which there are Reabank files in the Reaticulate repository on Github. I have EW Hollywood Strings but think the articulations are different, not sure whether I could just copy them.
I wanted to get into the practical use of Reaticulate by adding articulation to a Solo violin part, and as I have the EW Solo Violin, I would like to try to write a ReaBank file for it, but it's still very daunting for me. Anyway... I'm aiming at using the resulting audio of my project as an accompaniment - it is a Bach aria from the Christmas oratorio which I will sing on Christmas Eve in our church, and presumably, I won't have an organ player available, so need to create a playback track. So the time is drawing near ;) ).
The EW Solo Violin has more than 16 articulations, but I also have other instruments, namely an organ, and a cello. The organ will be a Kontakt instrument and the Solo Cello, again, from EastWest.
The midi input for the accompaniment is a section of the midi file for BWV 248 cantata 3 which I imported from classical archives into MuseScore (where I notate), clipped out the aria section and imported the resulting MIDI into Reaper. So the violin's midi input is on one track.

I have seen this post and the suggestion to have different instances of EW Play and add Reaticulate.
My questions are:

- What would be the best way to route all these articulations now that Reaticulate supports multiple busses: Would it be ok to have one MIDI output per FX (to MIDI bus 1 to 3, i.e. one each for Long, Short and Legato patches) and have Reaticulate on the very same track before the 3 EW Play instances?
Given that I'd like to keep the MIDI on one track, is this the best solution or should I rather go for a different setup?

- Does anyone here use the EW Solo Violin with Reaticulate and would share their Reabank file with me just for a start? What would also be very helpful would be a track template with a short sample MIDI that I could import and listen to. It would be helpful to figure out which of the articulations I should select to get the solo violin sound right. I have figured out how I add these articulations to my MIDI track, just the first notes, but the result still sounds awkward to me...
Any help would be very much appreciated. If I can get this done in time, I'll share my ReaBank file and whatever anyone could need. ( And of course, the recording, if anyone cares to listen to the Bach aria :) It's in cantata 3 of the Christmas oratorio, "Schliesse, mein Herze".)

Last but not least, @tack, thanks very very much for this great functionality :)
and to all of you who contribute!
 
So my way of using Reaticulate and East West Instruments is to use one instance of Play and add all the articulations I need, routed to a different Midi channels. As an example for the Solo Violine here is my Bank File:

//! g="East West/Hollywood Solo Strings" n="Solo Violine"
Bank 1 30 EWHSS Solo Violine
//! c=legato-dark i=legato-vibrato o=@1
2 Lyrical Legato
//! c=legato i=legato-bowed o=@2
3 Legato Bow Change
//! c=legato-light i=legato o=@3
4 Legato Expressive
//! c=short-dark i=marcato o=@4
5 Marcato
//! c=short i=sfz o=@5
6 Sforzando
//! c=short-light i=spiccato o=@6
7 Spiccato
//! c=short-light i=pizz o=@7
8 Pizzicato

I can just play on one channel and reaticulate takes care of switching to the right channel. The East West Instruments have so many articulations, that you might need to pick individual sets for your needs.
 
Given that I'd like to keep the MIDI on one track, is this the best solution or should I rather go for a different setup?
I'm afraid I'm not very familiar with PLAY instruments at all. So I'll speak generally in case it helps, even though I think you did give enough information.

If you just need one VSTi instance on the track, then you can stay within bus 1.

If the PLAY instruments are keyswitched on a single channel, then the Spitfire factory banks would be a decent model. Those banks don't bother specifying a channel (in which case it depends on the channel mapping you use when you assign the bank to the track), and just keyswitch over the different articulations on the same channel.

If the VSTi is multi-timbral such that different articulations are on different channels, then Dementum's Reabank suggestion is the way to go. That's the standard multi approach where Reaticulate will just route to different channels based on the current articulation.

On the other hand, if you do need multiple VSTi FX on the same track running in parallel, assigning them to different buses is definitely a good option. And since you said "3 EW PLAY instances" I'm gathering this is the case. It's technically possible to do all this on one bus if you don't need more than 16 channels by telling Reaper to merge with the MIDI bus on output, but IMO it's cleaner to just use different buses.

You could do this all within a single Reabank. It's like a multi-timbral instrument on steroids, instead of spanning multiple channels, now spanning multiple channels across multiple VSTi instances.

Hacking up Dementum's bank (as it's conveniently right there), maybe that looks like this:

Code:
//! g="East West/Hollywood Solo Strings" n="Solo Violine"
Bank 1 30 EWHSS Solo Violine
//! c=legato-dark i=legato-vibrato [email protected]
2 Lyrical Legato
//! c=legato i=legato-bowed [email protected]
3 Legato Bow Change
//! c=legato-light i=legato [email protected]
4 Legato Expressive
//! c=short-dark i=marcato [email protected]
5 Marcato
//! c=short i=sfz [email protected]
6 Sforzando
//! c=short-light i=spiccato [email protected]
7 Spiccato
//! c=short-light i=pizz [email protected]
8 Pizzicato

This bank assumes 3 FX instances, each assigned to input from buses 1, 2, and 3 respectively.

Alternatively, you could use separate Reabanks for each VSTi instance, and not hardcode the bus in the Reabank file. Then you would map it to the specific bus when you assign the bank to the track in Reaticulate's GUI. This could be useful if you'd like to reuse the bank on different buses on some other track. But then you'd see them shown as 3 separate banks in the UI (3 different groups separated by the bank title) which you may or may not want.

Hopefully that was helpful!
 
@tack - this is indeed helpful. Tomorrow, after some days of vacation I have to start working again, but I hope to try out what works best during the next evenings and weekend and report back. Thanks very much!
 
I'm afraid I'm not very familiar with PLAY instruments at all. So I'll speak generally in case it helps, even though I think you did give enough information.

If you just need one VSTi instance on the track, then you can stay within bus 1.

If the PLAY instruments are keyswitched on a single channel, then the Spitfire factory banks would be a decent model. Those banks don't bother specifying a channel (in which case it depends on the channel mapping you use when you assign the bank to the track), and just keyswitch over the different articulations on the same channel.

If the VSTi is multi-timbral such that different articulations are on different channels, then Dementum's Reabank suggestion is the way to go. That's the standard multi approach where Reaticulate will just route to different channels based on the current articulation.

On the other hand, if you do need multiple VSTi FX on the same track running in parallel, assigning them to different buses is definitely a good option. And since you said "3 EW PLAY instances" I'm gathering this is the case. It's technically possible to do all this on one bus if you don't need more than 16 channels by telling Reaper to merge with the MIDI bus on output, but IMO it's cleaner to just use different buses.

You could do this all within a single Reabank. It's like a multi-timbral instrument on steroids, instead of spanning multiple channels, now spanning multiple channels across multiple VSTi instances.

Hacking up Dementum's bank (as it's conveniently right there), maybe that looks like this:

Code:
//! g="East West/Hollywood Solo Strings" n="Solo Violine"
Bank 1 30 EWHSS Solo Violine
//! c=legato-dark i=legato-vibrato [email protected]
2 Lyrical Legato
//! c=legato i=legato-bowed [email protected]
3 Legato Bow Change
//! c=legato-light i=legato [email protected]
4 Legato Expressive
//! c=short-dark i=marcato [email protected]
5 Marcato
//! c=short i=sfz [email protected]
6 Sforzando
//! c=short-light i=spiccato [email protected]
7 Spiccato
//! c=short-light i=pizz [email protected]
8 Pizzicato

This bank assumes 3 FX instances, each assigned to input from buses 1, 2, and 3 respectively.

Alternatively, you could use separate Reabanks for each VSTi instance, and not hardcode the bus in the Reabank file. Then you would map it to the specific bus when you assign the bank to the track in Reaticulate's GUI. This could be useful if you'd like to reuse the bank on different buses on some other track. But then you'd see them shown as 3 separate banks in the UI (3 different groups separated by the bank title) which you may or may not want.

Hopefully that was helpful!

Hi @tack,

This is an extract of my Reabank File definition, I have used the hardcoded bus indication for a start. I just numbered the program changes. Afterward, I saw that there would also have been a few key switches but I wanted to give the channel / bus output assignments a try.
Code:
//! g="East West/Hollywood Solo Violin Gold" n="Solo Violin"
Bank 1 30 EWHSS Solo Violine
//!c=long i=flautando [email protected]
1 Flautando
//!c=long i=flautando [email protected]
2 Grand Detache RR
//!c=long i=flautando [email protected]
3 Lyrical Muted
//!c=long i=vibrato [email protected]
4 Lyrical Vibrato
//!c=long i=note-whole [email protected]
5 Sustain Expressive
//!c=long i=note-whole [email protected]
6 Sustain NonVib+Vib
//!c=long i=note-whole [email protected]
7 Sustain NonVib2+Vib
//!c=long i=note-whole [email protected]
8 Sustain NonVib+Vib2
//!c=long i=note-whole [email protected]
9 Sustain Vibrato

//!c=short i=marcato [email protected]
10 Marcato+Vib+RR4
//!c=short i=marcato [email protected]
11 Martele+RR4
//!c=short-light i=pizzicato [email protected]
12 Pizzicato
//!c=short i=sforzando [email protected]
13 Sforzando
//!c=short-light i=spiccato [email protected]
14 Spiccato

//!c=legato i=legato-bowed2 [email protected]
15 Legato BowChange Fast
//!c=legato i=legato-bowed2 [email protected]
16 Legato BowChange Smooth
//!c=legato i=legato-bowed2 [email protected]
17 Legato BowChange
//!c=legato i=vibrato [email protected]
18 Legato Expressive Vib
//!c=legato i=vibrato [email protected]
19 Legato Lyrical Vib
//!c=legato i=legato-runs [email protected]
20 Legato Runs
//!c=legato i=legato-slurred [email protected]
21 Legato Slurred
//!c=legato i=note-whole [email protected]
22 Legato Sustained
So I can see the articulation symbols with the texts that I've defined on the right side in the docked window. I haven't yet gone through my SoloViolin and added any of them, but in the status line at the bottom, when I move my mouse over one of them, let's say the first of the legato ones, it correctly states "Routes to ch 3 bus 1".
Next step will be to actually use the articulations. - Today I took some time to search whether and how Reaper would interpret articulations in the input file into program changes in MIDI that Reaticulate can understand automatically?
I know that the MusicXML standard can contain articulation elements, but when it is imported in Reaper, it is converted into MIDI. For this particular project, I used a MIDI file as input.
Do you know whether that makes any difference in Reaper, i.e. would it be worth converting the MIDI that I have in MusicXML and add the necessary articulations there, then as the last step importing the music XML into Reaper?
I know there's the notation editor in Reaper, too, but once I use Reaper to produce my own music, I'd prefer to do the notation including phrasing and articulation in one place (MuseScore), and then use the DAW for the processing of this input and producing a satisfactory output.
 
Today I took some time to search whether and how Reaper would interpret articulations in the input file into program changes in MIDI that Reaticulate can understand automatically?
Right now Reaticulate doesn't provide any integration with Reaper's (presently limited) native idea of articulations and the notation editor. New capabilities are being added to Reaper to make this possible (like this one) but for now Reaticulate and the way it uses program changes stands independently of notation in Reaper.

This would also translate to MusicXML. Reaper is able to translate some of the notation information from MusicXML (though not all), and do the extent it does that, this is independent from Reaticulate.

I have ideas on how to tackle this type of integration, but it's a big work item and it depends on some new things in Reaper, and I was really waiting to see how native articulation maps were going to shake out first. (That's coming up on 3 years since the idea was introduced, so I'm not holding my breath much longer.) I have a few very important things to finish in Reaticulate first before I look at how to provide this type of notation integration.
 
@tack - noted, thanks for your info. If you need anyone to work at this type of notation integration in future, I'll be pleased to know and help to test (that is, providing music XML from musescore and processing it in Reaper).
 
@tack, an update ... I noticed I had the channel/bus assignment wrong, in your example it was the other way round. Sorry in case I've confused anyone. I wanted to post an updated file, but right now I have difficulties. I've worked on a violin track and added those articulations, and for a while, it seemed it worked ok, but then some short articulation suddenly is being played for any note - I have tried to undo what I did, and close the project and re-opened it... it happened twice, even after I corrected my Reabank file, and now that I've spent more than half of my Saturday in vain with that, I've decided to give myself a break and ask... just in case... has there been any change with Reaper v.6.0 which requires changes in reabank files or otherwise related to Reaticulate?
 
Last edited:
Hi @tack,
I would like to select articulations with my Akai MPK225, using pads. The pads can send note/program change or bank data. If set to program change I can select articulations but not insert them unless I hit record. Is it possible to use the pads as a remote? Or is this feature midi CC only?

Just discovered a weird behavior. Moving the modwheel changes articulations as shown below.
The bank looks like this: 1575930099750.png
View attachment 2019-12-09 23-14-59.mp4
 
Last edited:
has there been any change with Reaper v.6.0 which requires changes in reabank files or otherwise related to Reaticulate?
Not as far as I've experienced or has been reported.

For troubleshooting, you can insert a ReaControlMIDI instance with logging enabled before and after Reaticulate, and verify what's going in and what's coming out is what you expect. (If you're using multiple MIDI busses, the ReaControlMIDI instance after Reaticulate will need to be assigned to the input bus you're interested in monitoring.)

If set to program change I can select articulations but not insert them. Is this possible? Or is this feature midi CC only?
I'm afraid it's CC only due to a Reaper limitation. Or, at least, the only known way to actually do this is to create 2176 new Reaper actions, which I refuse to do on the grounds that it's insane. (See this post for more details.) You could use something like Bome MIDI translator in between your controller and Reaper to translate incoming program changes to a CC.

Sorry there's not a better answer. I invite you to +1 that thread on the Reaper forum. :)
 
Just discovered a weird behavior. Moving the modwheel changes articulations as shown below.
Reaticulate tries to detect when an articulation is manually being activated. It's a cosmetic thing in that it just updates the GUI, it doesn't cause Reaticulate to emit any output events to change an articulation.

It should only happen when you've activated one of the articulations that route to channel 6 though, yeah? I mean, if CC1 value 67 activates staccato and you're currently on staccatissimo, if you manually move the modwheel to send CC1 value 67, isn't the underlying patch activating staccato anyway? Isn't it reasonable if Reaticulate reflects the underlying articulation has changed in the GUI?

(BTW the 'o=@6' in those articulations is redundant since the CC output event will already ensure subsequent events are routed to channel 6.)
 
Top Bottom