# Reaticulate - articulation management for REAPER - 0.5.10 now available



## tack

(*See the 0.5.10 release post*.)

Hello REAPER users,

I'd like to announce an alpha preview release of Reaticulate: an articulation management system for REAPER.

reaticulate.com

There are other solutions to this problem available of course, but I believe Reaticulate offers a few unique things.

A few highlights:

Simple, (hopefully) attractive, dockable UI
Highly flexible output events to control the underlying patches in just about every imaginable configuration
Articulations are chased and clearly labeled on the piano roll
Coexists with manual triggering of instrument keyswitches
A number of factory banks for a variety of vendors are bundled to get you started
Free and open source












Reaticulate is installable via ReaPack: https://reaticulate.com/release.xml

As this is an initial alpha preview release there are a few things missing, and probably a few things unintentionally broken. Notably, there is not yet a GUI for creating custom banks, so you'll have to edit bank files by hand and learn a bit about Reaticulate's custom markup used to extend reabank files. This is all documented, although the documentation, as with everything else, is a WIP. 

If you can stand my rambling, I've done a video to cover the features and operation of Reaticulate. Even if you tune out after the 2 minute mark, you should have a pretty good sense of what it's about.




I welcome all bug reports, suggestions, and other feedback, either here, or on the GitHub issue tracker.

[Cross-posted on the Reaper forum, vi-control.net, and thesoundboard.net. Apologies if you frequent multiple forums and this is feeling spammy.]


----------



## Stevie

I mentioned this in another forum already, this articulation management makes dreams come true and surpasses the way that Cubase does it with Expression Maps. I'm so celebrating you, Jason!


----------



## d.healey

Oh this looks good. I look forward to checking it out when I have some free time. Does it work with the score editor too?


----------



## tack

d.healey said:


> Does it work with the score editor too?


I'm afraid there's no special integration with the notation view right now. The main reason for that is articulation maps are going to change everything (when they are eventually available) and I'd rather wait and see what that solution looks like and how Reaticulate can align with them before investing a lot of effort into a custom implementation to support the notation view. 

But if I complete most of the other things I'm planning for the beta and find myself with some free time, I may look into whether there is a relatively easy way to do it.


----------



## tack

Stevie said:


> I mentioned this in another forum already, this articulation management makes dreams come true and surpasses the way that Cubase does it with Expression Maps. I'm so celebrating you, Jason!


Thanks Stevie for your kind support


----------



## Sami

Tack Tack!

Hoppas du är nordisk annars funkar det inte...


----------



## tack

Sami said:


> Hoppas du är nordisk annars funkar det inte...


I'm not Nordic (Google Translate to the rescue!), but I've long since been informed what "tack" means in Swedish.


----------



## gregh

looks great, thanks for your efforts and I hope this continues


----------



## d.healey

I hadn't realised that program changes actually show up in the controller lane in Reaper! I'm going to see if I can implement this in my notation to KS and UACC scripts, should work nicely alongside Reaticulate


----------



## sazema

Hi @tack
Just spent some time with reaticulate. Nice work. Best add-on for R of this type so far.
Tried myself to add some new banks for Albion II & III with success, which is great.
Also, opened one issue https://github.com/jtackaberry/reaticulate/issues/13


----------



## tack

sazema said:


> Tried myself to add some new banks for Albion II & III with success, which is great.


Great! Stevie also contributed banks for these libraries so they should also be available in the factory banks in the next release. (Of course you can continue to use your own without any conflict as long as they're in your user Reaticulate.reabank file.)


----------



## sazema

tack said:


> Great! Stevie also contributed banks for these libraries so they should also be available in the factory banks in the next release. (Of course you can continue to use your own without any conflict as long as they're in your user Reaticulate.reabank file.)



That's great. I have Spitfire percussion redux also so I can contribute myself too. But I will let you know.
Now, I'm wondering is there a chance for handling n bank files? Now, everything is stored in one file factory + user and it's finally merged into one "tmp" file.
What if you change things a little bit to include folder with banks like

/banks/spitfire_percussion.bank
/banks/spitfire_css.bank
/banks/spitfire_albion_one.bank
/...

It would be easier to handle what is already included or not, or easier for exchange.


----------



## tack

sazema said:


> What if you change things a little bit to include folder with banks like


The real goal is to build a GUI to manage the banks, so editing bank files won't be necessary. Then improved organization can be done via the GUI and it doesn't matter what the underlying files look like.


----------



## sazema

Also, Bank name above preset would be great


----------



## sazema

tack said:


> The real goal is to build a GUI to manage the banks, so editing bank files won't be necessary. Then improved organization can be done via the GUI and it doesn't matter what the underlying files look like.



Understand of course. For me, even like this is ok, but I'm coming from dev world


----------



## Stevie

sazema said:


> That's great. I have Spitfire percussion redux also so I can contribute myself too. But I will let you know.
> Now, I'm wondering is there a chance for handling n bank files? Now, everything is stored in one file factory + user and it's finally merged into one "tmp" file.
> What if you change things a little bit to include folder with banks like
> 
> /banks/spitfire_percussion.bank
> /banks/spitfire_css.bank
> /banks/spitfire_albion_one.bank
> /...
> 
> It would be easier to handle what is already included or not, or easier for exchange.




I agree, handling the files as single banks would be easier.
The problem I encountered, when creating my own banks, is the fact that we have to keep track of the taken and free bank numbers. Of course, this issue is not relevant anymore, when we use a GUI based editor, because the GUI would assign them automatically, I guess.


----------



## tack

Stevie said:


> because the GUI would assign them automatically, I guess.


Yup.


----------



## robgb

Wow.
Just wow.
First Flex Router, now this?
Thank you, kind sir.


----------



## tack

robgb said:


> First Flex Router, now this?


It's all I can do to procrastinate on making music.


----------



## robgb

I've gotten this error a couple of times and I'm not sure what it means. I first got it when I chose "section" under the Cinematic Strings 2 bank that you provided. I got it again when I attempted to add my own user bank:

"Application Support/REAPER/Scripts/Reaticulate//app/lib/rtk.lua:36: attempt to index a nil value (local 's')"

Any idea how to fix this?


----------



## tack

robgb said:


> Any idea how to fix this?


It's possible you have an invalid color name or icon name. I recently improved robustness with the parser to more gracefully ignore invalid names, but the initial alpha release will throw this kind of error. 

Can you paste your bank? I can take a look if you're not able to see an invalid color or icon name yourself. Or perhaps there's a different problem.


----------



## robgb

tack said:


> It's possible you have an invalid color name or icon name. I recently improved robustness with the parser to more gracefully ignore invalid names, but the initial alpha release will throw this kind of error.
> 
> Can you paste your bank? I can take a look if you're not able to see an invalid color or icon name yourself. Or perhaps there's a different problem.


Rather than bother you with that yet, let me take a closer look at the website instructions to make sure it isn't simply user error (which it most likely is). If I can't figure it out, I'll post what I have. Thanks!


----------



## eboats

robgb said:


> I've gotten this error a couple of times and I'm not sure what it means. I first got it when I chose "section" under the Cinematic Strings 2 bank that you provided. I got it again when I attempted to add my own user bank:
> 
> "Application Support/REAPER/Scripts/Reaticulate//app/lib/rtk.lua:36: attempt to index a nil value (local 's')"
> 
> Any idea how to fix this?



Null pointer, a common beginner programmer's error. Not likely to see that with professional products that have been tested by an experienced QA team.


----------



## tack

eboats said:


> Not likely to see that with professional products that have been tested by an experienced QA team.


Hysterical 

I work at a corporation that does a _lot_ of in-house development (multiple and very large development organizations) and as a member of the team that engineers their solutions for production, I can tell you that NPEs are perhaps the most common thing I see from their professionally developed and professionally QAed software.

I must also point out that this is an alpha release. So I'm really not sure why you're trolling here.


----------



## eboats

Hehe, I'm a software engineer myself. Users don't see null pointers from apps released to production where I work. That's what dev and QA teams are for.


----------



## tack

eboats said:


> That's what dev and QA teams are for.


It's true, it can't be disputed: no public beta of professional software has ever caused user-visible errors as a result of null pointers. Why, the very idea is absurd!


----------



## robgb

robgb said:


> Rather than bother you with that yet, let me take a closer look at the website instructions to make sure it isn't simply user error (which it most likely is). If I can't figure it out, I'll post what I have. Thanks!


Yep. Totally user error. I've got it sorted out now.


----------



## tack

robgb said:


> Yep. Totally user error. I've got it sorted out now.


Great! Was it related to an invalid color or icon name? As I said, I did fix that particular bug but if it was something else, I should like to improve the reabank parser's robustness.

(Even if the upcoming bank creation GUI will prevent malformed banks, Postel's Law is a good thing.)


----------



## robgb

tack said:


> Great! Was it related to an invalid color or icon name? As I said, I did fix that particular bug but if it was something else, I should like to improve the reabank parser's robustness.
> 
> (Even if the upcoming bank creation GUI will prevent malformed banks, Postel's Law is a good thing.)


Yes. It was me using the wrong color name. I was trying to use "staccato" when I should have been using "short." Works like a charm now. My next question, is there a way to integrate this into the Reaper Web Remote or TouchOSC? John Tidey has done a cool little interface with the Web Remote I'd like to use to trigger the articulations.

https://reaperblog.net/course/reaperwrb/


----------



## tack

robgb said:


> My next question, is there a way to integrate this into the Reaper Web Remote or TouchOSC? John Tidey has done a cool little interface with the Web Remote I'd like to use to trigger the articulations.


Definitely yes with TouchOSC. You'd bind a CC of your choice (I use CC119) to the one of the "Reaticulate_Activate articulation by CC" actions (you probably want to use the "on default channel" variant of that action unless you want a more sophisticated multi-channel workflow). Then in your TouchOSC template, have the buttons emit CC119 where the value corresponds to the program number for the articulation.

I don't know about Web Remote, I'm afraid I haven't taken much time to investigate the new web interface stuff yet. It depends if it's possible to pass action context along with invoking the action. That is to say, it's not enough to just invoke the "Activate articulation by CC" action, but you'd also need to be able to pass in the CC value, as if you had triggered the action from a CC, as that indicates which articulation to activate.

If that's not possible, and the web remote isn't able to send arbitrary MIDI in the way TouchOSC does, and all it can do is invoke actions without specifying action context, then theoretically I would need to create 2176 separate actions to provide the full functionality ("Activate articulation 1 on channel 1", "Activate articulation 2 on channel 1", ..., "Activate articulation 42 on channel 11", ..., "Activate articulation 127 on default channel") which is a little absurd.


----------



## robgb

tack said:


> which is a little absurd.


Yes. Absolutely. I'll see what I can do with Touch OSC.


----------



## aaronventure

I've been using stephane's Inspector for quite some time now and the only gripes I have with it are that it's introducing visual lags to the interface during playback and higher loads and that if I have Solo-ed a MIDI track that is inside a group whole the Inspector.lua script is open, there will be no sound - I have to solo the main group track as well.

Are there similar issues here? I would like to have it open at all times and I can't do it with Inspector for reasons stated above.


----------



## tack

aaronventure said:


> Are there similar issues here? I would like to have it open at all times and I can't do it with Inspector for reasons stated above.


I haven't experienced anything like that myself. I'd be quite curious to know if you do have any performance issues with Reaticulate, as I personally wouldn't find the kind of behavior you describe acceptable.

Reaticulate isn't trying to be a track inspector though. I'll be adding more functionality that wanders somewhat outside the realm of articulations (like integration of this CC sync functionality), but it's not aiming to be a generic track inspector.


----------



## tack

As a side note, it does seem like Stephane has gotten busy with life, and there hasn't been an update of his inspector since 2016. This is a problem with closed source options like his, and it's the reason I never felt compelled to try it. There are a lot of smart folks in the Reaper community who could probably address issues like what you described if they were given access to the source code.

Reaticulate being open source should hopefully insulate it from this kind of fate, should I similarly become busy with life for a time.


----------



## aaronventure

tack said:


> I haven't experienced anything like that myself. I'd be quite curious to know if you do have any performance issues with Reaticulate, as I personally wouldn't find the kind of behavior you describe acceptable.


I agree, I was sad to realize that this is what it's gonna be like but it wasn't too disruptive overall (just a little bit of swearing every now and then, especially when the whole thing starts to lag because I haven't closed the inspector and I haven't saved in 15 minutes :D)



tack said:


> Reaticulate isn't trying to be a track inspector though. I'll be adding more functionality that wanders somewhat outside the realm of articulations (like integration of this CC sync functionality), but it's not aiming to be a generic track inspector.


I can see that. I've just watched the video and WOW, I am truly impressed by the depth of it. I'll give it a try tomorrow. Thanks, and it looks like fantastic work.


----------



## tack

aaronventure said:


> I've just watched the video and WOW, I am truly impressed by the depth of it. I'll give it a try tomorrow. Thanks, and it looks like fantastic work.


Thanks Aaron! Looking forward to hearing about your experience.


----------



## robgb

I haven't experienced any problems like those mentioned above. Reaticulate seems to work great. I've set up a generic template that I can use on most of my libraries and so far it's working like a charm.

Question: I've noticed that when I use my normal key switches (using flex router) while playing that they are sometimes reflected in reaticulate and sometimes not. And the midi bank/program change lane (in the midi editor) never reflects the changes if entered via key switch. Is this normal?


----------



## tack

robgb said:


> Question: I've noticed that when I use my normal key switches (using flex router) while playing that they are sometimes reflected in reaticulate and sometimes not.


Reaticulate only knows if a MIDI event corresponds to an articulation if it matches the output event configured for the program. In other words, if you have a program with an output event that sends G1, when you press G1, it assumes that you're triggering that program and the GUI reflects it.

But if you're using FlexRouter as an additional translation layer such that the key you're pressing is different than the one in the Reaticulate bank, it won't know that you're triggering it.

I've personally done away with FlexRouter in most cases, using Reaticulate as the sole translation layer for most patches.

Now, the manual keyswitch detection has some limitations: if you have a program with multiple note output events, right now it's the case that manually pressing _any_ of the notes in the program will make Reaticulate think you've activated it. This is probably too surprising (and probably wrong), so I plan to tweak the logic such that if a program has multiple notes in the output events, it will ignore manual triggering.



robgb said:


> And the midi bank/program change lane (in the midi editor) never reflects the changes if entered via key switch. Is this normal?


It's normal. I'm not sure how feasible this kind of realtime transformation is. But I do plan to create an action to trawl through the notes in selected MIDI items and convert manual keyswitches to program changes. (Tracked here.)


----------



## robgb

tack said:


> I've personally done away with FlexRouter


Yeah, I thought it might be a bit redundant. Getting TouchOSC set up will be the best solution.


----------



## robgb

tack said:


> program changes.


Oh, one last question. I've been using the straight forward [email protected] for channel selection, and @1/@8 for combinations. Is there any way to connect to Kontakt's ports B, C, and D? And, if so, how would I indicate this?


----------



## robgb

By the way, here's my generic template so far, in case anyone wants to adapt it to their own use:


//! g=Strings n=Long
Bank 55 1 Long
//! c=legato i=legato [email protected]
1 legato
//! c=long i=note-whole [email protected]
2 sustains
//! c=long i=tremolo [email protected]
3 tremolo
//! c=long i=trill-maj2 [email protected]
4 trills Maj2
//! c=long i=trill-min2 [email protected]
5 trills Min2

//! g=Strings n=Short
Bank 55 2 Violins Short
//! c=short-light i=marcato [email protected]
6 marcato
//! c=short i=staccato [email protected]
7 staccato
//! c=short i=spiccato [email protected]
8 spiccato
//! c=short i=pizz [email protected]
9 pizzicato
//! c=short i=pizz-bartok [email protected]
10 bartok

//! g=Strings n=Sordino
Bank 55 3 Sordino
//! c=legato i=legato-con-sord [email protected]
11 legato cs
//! c=long i=con-sord [email protected]
12 sustains cs
//! c=long i=tremolo-con-sord [email protected]
13 tremolo cs
//! c=short-light i=marcato [email protected]
14 marcato cs
//! c=short i=staccato-con-sord [email protected]
15 staccato cs
//! c=short i=spiccato-con-sord [email protected]
16 spiccato cs


//! g=Strings n=Combinations
Bank 55 4 Combination
//! c=legato i=legato [email protected]/@11
17 legato+legato cs
//! c=short i=spiccato [email protected]/@16
18 spiccato+spiccato cs
//! c=short i=spiccato [email protected]/@8
19 spiccato+staccato


----------



## tack

robgb said:


> Is there any way to connect to Kontakt's ports B, C, and D? And, if so, how would I indicate this?


No, REAPER isn't able to address those ports. For that you would have to leverage something like FlexRouter as an additional layer.


----------



## robgb

tack said:


> No, REAPER isn't able to address those ports. For that you would have to leverage something like FlexRouter as an additional layer.


Okay. Thanks.


----------



## tack

For example, you could use note C-2 with 4 different velocities to address the different ports. C-2 velocity 1 for port A, C-2 velocity 2 for port B, etc. You'd need keyswitches in FlexRouter to setup routing like:

C-2 vel 1 chan 1 -> [A]1
C-2 vel 2 chan 1 -> [B ]1
C-2 vel 3 chan 1 -> [C]1
C-2 vel 4 chan 1 -> [D]1
C-2 vel 1 chan 2 -> [A]2

C-2 vel 2 chan 2 -> [B ]2
...
C-2 vel 4 chan 16 -> [D]16

Then with Reaticulate, if you wanted to route to D[16], you'd have like:



Code:


//! c=long i=note-whole o=note:0,[email protected]
120 whatever


Of course that's just one possibility.


----------



## Levitanus

robgb said:


> connect to Kontakt's ports B, C, and D? And, if so, how would I indicate this?


https://bitbucket.org/Levitanus/multi-scripts/src/e833d2325ec6244813ac15c9a7295d6b7c631572/Kontakt 5/?at=master
Sorry, documentation in Russian (I haven't thought about international publication). But interface is intuitive)


----------



## tack

Levitanus said:


> https://bitbucket.org/Levitanus/multi-scripts/src/e833d2325ec6244813ac15c9a7295d6b7c631572/Kontakt 5/?at=master
> Sorry, documentation in Russian (I haven't thought about international publication). But interface is intuitive)


FlexRouter solves this problem too (and it's open source):

https://github.com/jtackaberry/flexrouter


----------



## robgb

tack said:


> //! c=long i=note-whole o=note:0,[email protected] 120 whatever


Works like a freaking charm. Have I mentioned you're a genius?


----------



## tack

Flattery will get you everywhere.


----------



## robgb

tack said:


> Flattery will get you everywhere.


I can't seem to get OSC to work properly. I've set it at CC 119, but when I hit the "legato" button, for instance, it merely scrolls through the articulations rather than choosing just one. I've tried difference combinations of value ranges, but can't for the life of me make it work beyond scrolling. My brain hurts.


----------



## tack

robgb said:


> I can't seem to get OSC to work properly. I've set it at CC 119, but when I hit the "legato" button, for instance, it merely scrolls through the articulations rather than choosing just one.


It sounds like you assigned CC119 to one of the "Reaticulate_Activate articulation by CC in group <X> on default channel (MIDI CC relative or mousewheel)" actions? This is for scrolling.

Instead you want "Reaticulate_Activate articulation by CC on default channel" (or perhaps "Reaticulate_Activate articulation by CC on channel 01" for example if you want to force channel 1 regardless of which default channel is selected in the Reaticulate GUI). Also ensure it's set to absolute mode.


----------



## robgb

tack said:


> It sounds like you assigned CC119 to one of the "Reaticulate_Activate articulation by CC in group <X> on default channel (MIDI CC relative or mousewheel)" actions?


Bingo. Thanks.


----------



## bradleybboone

I added the following reabank files to the Reaticulate GitHub issues page:
EastWest - Hollywood Brass Diamond
EastWest - Hollywood Orchestral Woodwinds Diamond
Impact Soundworks - Bravura Scoring Brass
Native Instruments - Session Horns Pro
Native Instruments - Symphony Series Brass Ensemble
Native Instruments - Symphony Series Brass Solo
Native Instruments - Symphony Series String Ensemble
Native Instruments - Symphony Series Woodwind Ensemble
Native Instruments - Symphony Series Woodwind Solo
Orchestral Tools - Metropolis Ark 1
Orchestral Tools - Metropolis Ark 2

Please consider for inclusion in the factory reaticulate.


----------



## tack

bradleybboone said:


> Please consider for inclusion in the factory reaticulate.


Thanks for your work here, Bradley!

Just responding to something you said over on GitHub on the forum here, because I think it may benefit from the wider audience:



bradleybboone said:


> I previously used Stephané's Inspector, so I have a fair about of reabank info already saved, it is just a chore to convert non-Spitfire libraries to UACC (clusters, bends, rips + shakes, multi vibrato types, etc.). The GUI editor will be a much welcome addition.


Yeah, I do understand the inconvenience of adapting the program numbers to UACC. Truth be told, I'm having some second thoughts about the suitability of UACC for this purpose. Some form of standardization for the most common articulations is definitely needed, because I put a high value on the "sketching" use-case (where we can quickly switch to the most common types of articulations for sketching and realtime input, and then massage it later with more nuanced articulations), but sifting through _all_ the articulations in UACC for a match is definitely a burden.

So things may change before we hit beta in this regard. (I plan to have things locked for beta and onward, barring major errors.) But don't worry, I'll adapt all submitted factory banks to whatever the new thing is, if I decide at all to change it, so you won't need to go back to the drawing board. 

My first instinct was to avoid creating a new list of program number assignments for articulations (because this), however:

UACC was never really that widely adopted
UACC spec hasn't been updated in ages
Spitfire itself has a history of failing to adhere to their own standard

The alternative I'm contemplating would be to pick the major 10-15 articulations, assign well-known program numbers for use in Reaticulate factory banks, where the program would include all output events necessary to trigger exactly that articulation (e.g. in CSS the program for long normale would set legato off, con sordino off, switch to sustains, etc.). Outside of these primary articulations, there wouldn't be any further requirements.

The major sketching ones for me would be something like:

legato normale
long normale (chords)
long muted (e.g. con sordino)

long soft (e.g. flautando, or sul tasto)
long hard (e.g. marcato)
long harmonics

tremolo/flutter
measured tremolo

short (e.g. staccato)
shorter (e.g. spiccato or staccatissimo)
short hard (e.g. staccato digs or marcato shorts)
pizzicato
trill m2
trill M2
The ones in purple I'm on the fence about, while the ones in red I see as non-negotiable (if applicable to the instrument).

I'd be interested to hear from others here about what they see as the essential general articulations for sketching out an idea (across any instrument, really).

Again, the idea for this use-case would be that you have easy access to these articulations (e.g. via a control surface for quick activation), which will work on any track regardless of instrument, to quickly record an idea, and then go back over later to tweak things to more specialized articulations if necessary.


----------



## tack

Also @bradleybboone as someone who's used Stephane's inspector, I'd be curious to know if there's any important articulation related functionality you used his project that's missing from Reaticulate?


----------



## lucor

As usual, fantastic work tack! Brings me even closer to finally saying goodbye to Cubase. 

If I may already bring up a feature request: I'd love it, if the interface of Reaticulate would be freely adjustable. What I mean by that is, that you'd be able to set a table with a specific number of rows and columns, and then drag around the articulations to whatever cell you like.

The reason for this is, that this way you could eliminate the need for complicated Lemur setups, and just hook up a touchscreen to your computer and then have your articulations on there (or use a screensharing app with your iPad). And being able to set the type of table and placing the articulations would allow for some organization of the patches (for example, in my current Cubase setup I have a table with 4 columns, where Column 1 is dedicated to long articulations (Legato, Sustain, Tremolo, etc), Column 2 is dedicated to Shorts (Spiccato, Pizzicato,...), Column 3 to Dynamics (Crescendi, Diminuendos,...) and Column 4 for all types of FX and 'unusal' articulations).
Just a thought.


----------



## bradleybboone

@tack Thanks for the follow up on both boards. New poster here (I just lurk), but I love the different approaches people take to expanding the functionality of Reaper. I've only been working with Reaticulate for about a week, and am quite pleased!

1. I appreciate the desire to keep a sketch-ready standard (possibly modeled on UACC), and I will think further about the list of articulations you mentioned. There is just so much variability in sample mappings and styles that it may be a tough hill to climb.

2. Regarding Inspector by Stephané, it is a wonderful script (I have also used your FlexRouter, Blake Robinson's BRSO Articulate, & numerous scripts by David Healey). I like the following features in Inspector:
-adding/deleting "scenes" to the Piano Roll Editor (to show and hide unwanted midi controller lanes)
-horizontal page scroll for larger articulation lists
-easy access to track functions (color track, arm, monitor, height, etc.)
That said, none of these capabilities are deal breakers for me.


----------



## bradleybboone

My current wish list for Reaticulate (other than whatever native articulation mapping is coming from the Reaper developers) is:
-a GUI for reabank creation and assigning banks
-More documentation/explanation of midi routing and CC chasing cases (the reaticulate.com site is a great introduction, and the ability to read through your factory reabank file answered many of my routing questions)
-CC range switching (utilized in many of my libraries), not necessary because they can all be used with standard keyswitches as well


----------



## tack

lucor said:


> If I may already bring up a feature request: I'd love it, if the interface of Reaticulate would be freely adjustable. What I mean by that is, that you'd be able to set a table with a specific number of rows and columns, and then drag around the articulations to whatever cell you like.


It's an interesting idea. A significant amount of work though, just in the UI alone. Perhaps worth considering this kind of thing once the basic capabilities are ironed out.

It'd also require a completely new strategy for maintaining track-specific data. Right now I'm restricted to a fairly small amount of data because I'm leveraging FX parameters (sliders) in the Reaticulate JSFX, and there's a limit on the amount of data that can be stored that way (192 bytes, specifically).

I think it's probably worth exploring an alternative, as there are other features that would need to be able to persist more than that at the track level. I have an idea on that, though.

Thanks for the feedback!


----------



## tack

bradleybboone said:


> -adding/deleting "scenes" to the Piano Roll Editor (to show and hide unwanted midi controller lanes)


I use SWS's CC lane slots with various custom buttons in the MIDI Editor toolbar for this. I could see an argument for integrating this into Reaticulate, especially when also combined with custom note/CC name lists.



bradleybboone said:


> -horizontal page scroll for larger articulation lists


From your perspective, what are the benefits for horizontal page scroll versus vertical scrolling currently used by Reaticulate?



bradleybboone said:


> -easy access to track functions (color track, arm, monitor, height, etc.)


I think as there are already other mechanisms to make these things easily accessible (via the various native or SWS actions), I don't personally feel a strong itch to scratch in those areas. But if enough users ask for it, I'd definitely consider it.



bradleybboone said:


> -a GUI for reabank creation and assigning banks


Yep, it's definitely a big ticket item before the first beta (tracked here). Hoping to work on it during the Christmas break. We'll see how that goes. 



bradleybboone said:


> -More documentation/explanation of midi routing and CC chasing cases (the reaticulate.com site is a great introduction, and the ability to read through your factory reabank file answered many of my routing questions)


Do you remember some of the initial questions or confusions you had? I'd certainly like to make sure they're answered in the documentation.  As the author I'm really rather too close to it all and it's sometimes hard to anticipate where the main areas of confusion will be.



bradleybboone said:


> -CC range switching (utilized in many of my libraries), not necessary because they can all be used with standard keyswitches as well


Of course we can already trigger articulations in libraries that use CC ranges just by sending a single CC value anywhere in the range.

The aspect where support for ranges make sense is for manually triggering by CC. Or by note velocity range, as it's the same principle. Taking this example from CSS:



Code:


//! c=short i=spiccato o=note:17,1
42 spiccato
//! c=short i=spiccato o=note:17,33
41 staccatissimo
//! c=short i=staccato o=note:17,65
40 staccato
//! c=short i=sfz o=note:17,127
54 sfz


Here CSS will activate the articulations so long as we're anywhere in the range 1-32, 33-64, 65-96, 97-127. As it is with the above bank, although the articulations will activate fine, it's not compatible with manually triggering the articulation by keyswitch since right now Reaticulate requires exactly the right velocity to detect the user actually manually activated it. I'll definitely be adding the capability for CC range and velocity range soon. (Tracked here.)

Is that what you meant?


----------



## bradleybboone

tack said:


> From your perspective, what are the benefits for horizontal page scroll versus vertical scrolling currently used by Reaticulate?


The vertical scrolling in Reaticulate is great. I used horizontal scrolling in Inspector when it was un-docked or with very large (percussion) patches. +1 for discovering I can scale the Reaticulate UI with CTRL+MouseWheel (which wasn't possible in Inspector). The only thing I could see gained is freezing the bank name at the top of the menu, which may be helpful for some people who use multiple libraries with the same articulation names.


tack said:


> Do you remember some of the initial questions or confusions you had? I'd certainly like to make sure they're answered in the documentation. As the author I'm really rather too close to it all and it's sometimes hard to anticipate where the main areas of confusion will be.


General initial questions:
-how to clone banks (I learned from scanning the reaticulate-factory, but did not apply it to my submitted reabanks)
-the significance/use cases of the g= attribute in the program line
-should I create banks that combine all articulations with complex channel routing, or just add banks (see below for a simple scenario)


Code:


//! g="Developer/Library" n="Flute COMBI"
Bank 20 1 Flute COMBI
//! c=long i=note-whole o=note:24
1 sustain
//! c=long i=vibrato o=note:25
16 vibrato
//! c=legato i=legato [email protected]
20 legato

vs


Code:


//! g="Developer/Library" n="Flute Sustain"
Bank 20 1 Flute Sustain
//! c=long i=note-whole o=note:24
1 sustain
//! c=long i=vibrato o=note:25
16 vibrato

//! g="Developer/Library" n="Flute Legato"
Bank 20 2 Flute Legato
//! c=legato i=legato [email protected]
20 legato


----------



## aaronventure

I just finished integrating it into my template. Fantastic. No performance hit (yet) and works while MIDI tracks are soloed. 

One downside so far: I have to enable Step Recording to input program changes. I'm being nitpicky - it's just two clicks, but if it can be done so that right-clicking the articulation adds it without enabling Step Rec, it's gonna be even better.


----------



## Sekkle

@tack - This looks amazing and since I'm about to build a template in Reaper I'll be integrating it. I'll let you know how it all goes.

Thanks for your work on this, much appreciated!!


----------



## Syneast

...ng\REAPER\Scripts\Reaticulate\\app\screens\installer.lua:49: attempt to call a nil value (field 'SNM_MoveOrRemoveTrackFX')

Any idea?


----------



## tack

Syneast said:


> Any idea?


Just a guess, but make sure you have the latest SWS extension?


----------



## Syneast

tack said:


> Just a guess, but make sure you have the latest SWS extension?


Installed the latest one. Now when I click Add Reaticulate FX, nothing happens.


----------



## tack

Syneast said:


> Installed the latest one. Now when I click Add Reaticulate FX, nothing happens.


Ah, I think you might be bit by a known bug (which was fixed, just hasn't been released yet). Try loading the Add FX window, as if you were going to manually insert any FX, close the window, and then try clicking the button?

Hopefully that works because I'm starting to run out of ideas.


----------



## Sekkle

Hey Tack I got it all set up and it's awesome!

Couple of things I couldn't figure out which may be due to my theme/pref settings..

I can't move the program change positions around with the mouse like I can midi notes. I can input when I enable the step recorder but after that the program change events are stuck where they land unless I delete and redo them. Is this usual behaviour? Maybe it's my settings..

Secondly - is there a way to have the reaticulate GUI in the right side docked in the midi editor? I worked around it by placing the floating midi editor window next to it over the main window which works but was wondering if there was a way to integrate it. I also tried docking the midi editor like in your video but it diesn't go all the way to the bottom and stops (and is covered) by the midi editor.

Amazing work on this and so generous to make it open source! 

Thanks

Erin


----------



## aaronventure

Sekkleman said:


> I can't move the program change positions around with the mouse like I can midi notes. I can input when I enable the step recorder but after that the program change events are stuck where they land unless I delete and redo them. Is this usual behaviour? Maybe it's my settings..



You should be able to move them. Try near the lower end of the stem, they're a bit hard to "pick up".


----------



## tack

Sekkleman said:


> I can't move the program change positions around with the mouse like I can midi notes. I can input when I enable the step recorder but after that the program change events are stuck where they land unless I delete and redo them. Is this usual behaviour? Maybe it's my settings..


As Aaron said, this is currently rather finicky with Reaper. I do also find it's easier to grab at the top or bottom of the step, but it's still not 100%. I wish they would improve that.



Sekkleman said:


> Secondly - is there a way to have the reaticulate GUI in the right side docked in the midi editor? I worked around it by placing the floating midi editor window next to it over the main window which works but was wondering if there was a way to integrate it. I also tried docking the midi editor like in your video but it diesn't go all the way to the bottom and stops (and is covered) by the midi editor.


Unfortunately if you have the MIDI editor in its own floating docker, although you can move Reaticulate to that docker, Reaper doesn't allow you to lay out the floating docker such that Reaticulate is mounted on the right side. That kind of flexible layout only seems possible on the main window.

Not sure why you're having problems reproducing my layout in the video. I have the MIDI editor docked at the bottom, and Reaticulate docked at the right. Drag the Reaticulate tab such that when you float it over the right side of the main window, there is a vertical blue bar spanning the full height of the window, and then drop it there. At least this is how it works for me. Maybe have a quick second glance at the video at 3:50? It would be important to ensure the MIDI editor itself is docked and attached to the bottom of the main window as opposed to floating (in which case it would be obscured by the MIDI editor as you described).


----------



## aaronventure

tack said:


> As Aaron said, this is currently rather finicky with Reaper. I do also find it's easier to grab at the top or bottom of the step, but it's still not 100%. I wish they would improve that.



The legend says the actual pixel you have to click to grab it changes every time you do it.


----------



## tack

aaronventure said:


> The legend says the actual pixel you have to click to grab it changes every time you do it.


Yes, this makes sense. Consistent with the rest of Reaper.


----------



## Sekkle

aaronventure said:


> You should be able to move them. Try near the lower end of the stem, they're a bit hard to "pick up".





tack said:


> As Aaron said, this is currently rather finicky with Reaper. I do also find it's easier to grab at the top or bottom of the step, but it's still not 100%. I wish they would improve that.



Thanks Gents,

I think it might be because I changed the mouse modifiers from the default (as I'm a Cubase deserter).

I'd set my mouse modifier in 'MIDI CC Event - Left Click/Drag' to 'Edit CC Events' but have now added ctrl+alt modifier to 'Move CC Event - Just Move'. It now allows me to move the program changes however when I do the name of the articulation disappears and a number appears in it's place like '64-2-0' and then program change no longer works. If I then move it around some more along the timeline the articulation name randomly changes to different articulations names or numbers as I do while the Program change still doesn't work. I think it may be changing to different articulation name from previous programs changes I have inserted and then deleted, like it's still seeing them or something?

Is it possible to tell me what mouse modifier setting you guys are using?


----------



## DynamicK

*@tack,* stupid question maybe. I tried to add a Toolbar shortcut for Reaticulate in the Midi Editor, and I couldn't. I would've thought that this is a script that only works with the Midi Editor? Be nice if one could dock it with the Track List


----------



## Syneast

tack said:


> Ah, I think you might be bit by a known bug (which was fixed, just hasn't been released yet). Try loading the Add FX window, as if you were going to manually insert any FX, close the window, and then try clicking the button?
> 
> Hopefully that works because I'm starting to run out of ideas.


This works. Thanks!


----------



## Syneast

Sekkleman said:


> It now allows me to move the program changes however when I do the name of the articulation disappears and a number appears in it's place like '64-2-0' and then program change no longer works. If I then move it around some more along the timeline the articulation name randomly changes to different articulations names or numbers as I do while the Program change still doesn't work. I think it may be changing to different articulation name from previous programs changes I have inserted and then deleted, like it's still seeing them or something?


It could be because you are moving your mouse up and down while dragging the program changes. It changes their value. Try setting your default mouse modifier to Move CC event on one axis only.


----------



## Sekkle

Syneast said:


> It could be because you are moving your mouse up and down while dragging the program changes. It changes their value. Try setting your default mouse modifier to Move CC event on one axis only.



Thanks so much Syneast!! That was the issue.



tack said:


> Not sure why you're having problems reproducing my layout in the video. I have the MIDI editor docked at the bottom, and Reaticulate docked at the right. Drag the Reaticulate tab such that when you float it over the right side of the main window, there is a vertical blue bar spanning the full height of the window, and then drop it there. At least this is how it works for me. Maybe have a quick second glance at the video at 3:50? It would be important to ensure the MIDI editor itself is docked and attached to the bottom of the main window as opposed to floating (in which case it would be obscured by the MIDI editor as you described).



I'll need to investigate further but I think it's because of the theme I was using - I Logic free. I found a nice solution though.. I've placed the floating midi editor on screen so it sits over the main window with Reaticulate to the right, the selected track channel strip to the left and the Transport at the bottom. It works nicely as I have everything there so I'm happy


----------



## tack

DynamicK said:


> *@tack,* stupid question maybe. I tried to add a Toolbar shortcut for Reaticulate in the Midi Editor, and I couldn't. I would've thought that this is a script that only works with the Midi Editor?


Which action are you interested in adding to the MIDI editor? Reaticulate_Main perhaps, as a way to toggle it on and off? Currently all the actions are only available in the Main section context . I could look to including at least Reaticulate_Main in the MIDI editor as well the next release, if that's what you meant.



DynamicK said:


> Be nice if one could dock it with the Track List


I could see why that'd be handy. Unfortunately that's well outside my control. Actually in general I wish Reaper had more flexibility on how the main window and even floating dockers could be arranged.


----------



## tack

My default action for MIDI CC event left click/drag is also Move CC event on one axis only. Indeed, with this setting, if you click the program and drag vertically, it will alter the program number, causing either different articulations to show or an unassigned program number like 64-2-0. The way to absolutely prevent inadvertently changing the program numbers during dragging would be to bind another modifier to "Move CC horizontally".

I also have "Allow selecting a single event in a CC lane with a mouse click" enabled.

The MIDI editor has some actions to move CC events left/right as well as moving events by mousewheel (or CC) that might improve the workflow in repositioning program changes.


----------



## Sekkle

tack said:


> My default action for MIDI CC event left click/drag is also Move CC event on one axis only. Indeed, with this setting, if you click the program and drag vertically, it will alter the program number, causing either different articulations to show or an unassigned program number like 64-2-0. The way to absolutely prevent inadvertently changing the program numbers during dragging would be to bind another modifier to "Move CC horizontally".
> 
> I also have "Allow selecting a single event in a CC lane with a mouse click" enabled.
> 
> The MIDI editor has some actions to move CC events left/right as well as moving events by mousewheel (or CC) that might improve the workflow in repositioning program changes.



Thanks for the tips! Moving with the mousewheel could be great and I'll investigate that.

I'm also putting the finishing touches to the OT Berlin Orchestra Inspire multi Bank for Reaticulate which are working well. Is Github the best place to put them for others to access?


----------



## tack

Sekkleman said:


> Is Github the best place to put them for others to access?


I think GitHub would be good for banks being submitted for inclusion into the factory banks. But I think that's only suitable for banks that describe patches as they are out-of-the-box. For custom multis, I'm not really sure that makes sense for the factory banks.

And yet surely that work would be useful to other users, even if as a starting point for further customizations. It occurs to me that some kind of marketplace of user submitted banks would be quite useful, even if they aren't part of the factory banks. Something like Reaper Stash, perhaps.

I can see that being a longer term goal. For now, assuming you're talking about a custom multi, I'd say paste it here (or perhaps on the Reaticulate thread in the Reaper forum) for others to use as inspiration, and meanwhile I'll give some thought to that Stash-like idea for the future.

Much bigger problems to tackle meanwhile. But even just dropping your work on a forum post will be quite useful to other users -- and even to me, because it's invaluable for me to see how users think and want to interact with Reaticulate.

Thanks!


----------



## Sekkle

Sorry I meant that these are the factory multi articulation patches in Inspire - they are called Multi's by OT but aren't actual Kontakt Multis. So basically its all the bank patches that can be keyswitched that come with Inspire out of the box (no customisation or anything) and I've put them in order of patch as well as a con sordino on/off switches for the strings patches (a cool feature they have using CC rather than note keyswitches).

One idea I had - it would be cool the be able to have a toggle button for the con sordino that stays highlighted when on and turns off when off... I just went with two articulations at this stage for switching as I couldn't figure out how to do it but it's working well as is.

Here's the code (updated the con sordino to a second group now)

//! g="Orchestral Tools/Inspire" n="01-1 Full Orchestra Multi"
Bank 12 1 BOI Full Orchestra Multi
//! c=long i=note-whole o=note:5
1 sustain
//! c=short i=staccato o=note:6
40 staccato
//! c=fx i=fx o=note:7
62 fx

//! g="Orchestral Tools/Inspire" n="02-1 Strings Whole Ensemble Multi"
Bank 12 2 BOI Strings Whole Ensemble Multi
//! c=long i=note-whole o=note:5
1 sustain immediate
//! c=long i=note-whole o=note:6
2 sustain soft
//! c=short i=spiccato o=note:7
42 spiccato
//! c=short-light i=pizz o=note:8
56 pizz
//! c=long i=tremolo o=note:9
11 tremolo
//! c=long-light i=con-sord g=2 o=cc:16,127
7 con sordino on
//! c=long-light i=con-sord g=2 o=cc:16,0
6 con sordino off

//! g="Orchestral Tools/Inspire" n="02-2 First Chairs Whole Ensemble Multi"
Bank 12 3 BOI First Chairs Whole Ensemble Multi
//! c=long i=note-whole o=note:24
1 sustain
//! c=short i=spiccato o=note:25
42 spiccato
//! c=long-light i=con-sord g=2 o=cc:16,127
7 con sordino on
//! c=long-light i=con-sord g=2 o=cc:16,0
6 con sordino off

//! g="Orchestral Tools/Inspire" n="02-3 High Strings 8va Multi"
Bank 12 4 BOI High Strings 8va Multi
//! c=legato i=legato o=note:24
20 legato
//! c=short i=spiccato o=note:25
42 spiccato
//! c=long-light i=con-sord g=2 o=cc:16,127
7 con sordino on
//! c=long-light i=con-sord g=2 o=cc:16,0
6 con sordino off

//! g="Orchestral Tools/Inspire" n="02-4 Low Strings 8va Multi"
Bank 12 5 BOI Low Strings 8va Multi
//! c=legato i=legato o=note:96
20 legato
//! c=short i=spiccato o=note:97
42 spiccato
//! c=short-light i=pizz o=note:98
56 pizz
//! c=long-light i=con-sord g=2 o=cc:16,127
7 con sordino on
//! c=long-light i=con-sord g=2 o=cc:16,0
6 con sordino off

//! g="Orchestral Tools/Inspire" n="02-5 Violins I & II Multi"
Bank 12 6 BOI Violins I & II Multi
//! c=legato i=legato o=note:24
20 legato
//! c=short i=spiccato o=note:25
42 spiccato
//! c=long-light i=con-sord g=2 o=cc:16,127
7 con sordino on
//! c=long-light i=con-sord g=2 o=cc:16,0
6 con sordino off

//! g="Orchestral Tools/Inspire" n="03-1 Brass Whole Ensemble Multi"
Bank 12 7 BOI Brass Whole Ensemble Multi
//! c=long i=note-whole o=note:96
1 sustain immediate
//! c=long i=note-whole o=note:97
2 sustain soft
//! c=short i=staccato o=note:98
40 staccato
//! c=long i=marcato o=note:99
9 marcato

//! g="Orchestral Tools/Inspire" n="03-2 Brass Muted Ensemble Multi"
Bank 12 8 BOI Brass Muted Ensemble Multi
//! c=long i=note-whole o=note:96
1 sustain
//! c=short i=staccato o=note:97
40 staccato

//! g="Orchestral Tools/Inspire" n="03-3 Trumpet & Horns 8va Multi"
Bank 12 9 BOI Trumpet & Horns 8va Multi
//! c=legato i=legato o=note:24
20 legato
//! c=short i=staccato o=note:25
40 staccato
//! c=long i=marcato o=note:26
9 marcato

//! g="Orchestral Tools/Inspire" n="03-4 Trombones & Tuba 8va Multi"
Bank 12 10 BOI Trombones & Tuba 8va Multi
//! c=long i=note-whole o=note:96
1 sustain
//! c=short i=staccato o=note:97
40 staccato
//! c=long i=marcato o=note:98
9 marcato

//! g="Orchestral Tools/Inspire" n="03-5 Solo Horn Multi"
Bank 12 11 BOI Solo Horn Multi
//! c=legato i=legato o=note:96
20 legato
//! c=short i=staccato o=note:97
40 staccato

//! g="Orchestral Tools/Inspire" n="03-6 Solo Trumpet Multi"
Bank 12 12 BOI Solo Trumpet Multi
//! c=legato i=legato o=note:24
20 legato
//! c=long i=note-whole o=note:25
1 sustain vibrato
//! c=short i=staccato o=note:26
40 staccato

//! g="Orchestral Tools/Inspire" n="04-1 Woodwinds Whole Ensemble Multi"
Bank 12 13 BOI Woodwinds Whole Ensemble Multi
//! c=long i=note-whole o=note:5
1 sustain
//! c=short i=staccato o=note:6
40 staccato
//! c=long i=trill o=note:7
70 trill half tone
//! c=long i=trill o=note:8
71 trill full tone

//! g="Orchestral Tools/Inspire" n="04-2 Flutes & Clarinets 8va Multi"
Bank 12 14 BOI Flutes & Clarinets 8va Multi
//! c=legato i=legato o=note:24
20 legato
//! c=long i=note-whole o=note:25
1 sustain vibrato
//! c=short i=staccato o=note:26
40 staccato
//! c=long i=trill o=note:27
70 trill half tone
//! c=long i=trill o=note:28
71 trill full tone

//! g="Orchestral Tools/Inspire" n="04-3 Bassoons & Clarinets 8va Multi"
Bank 12 15 BOI Bassoons & Clarinets 8va Multi
//! c=legato i=legato o=note:24
20 legato
//! c=short i=staccato o=note:25
40 staccato

//! g="Orchestral Tools/Inspire" n="04-4 Solo Flute Multi"
Bank 12 16 BOI Solo Flute Multi
//! c=legato i=legato o=note:24
20 legato
//! c=short i=staccato o=note:25
40 staccato

//! g="Orchestral Tools/Inspire" n="04-5 Solo Clarinet Multi"
Bank 12 17 BOI Solo Clarinet Multi
//! c=legato i=legato o=note:24
20 legato
//! c=short i=staccato o=note:25
40 staccato


----------



## tack

Sekkleman said:


> One idea I had - it would be cool the be able to have a toggle button for the con sordino that stays highlighted when on and turns off when off... I just went with two articulations at this stage for switching as I couldn't figure out how to do it but it's working well as is.


You'll still need to separate con sordino on and off into two programs, but you can improve things by putting those programs into a separate group. This way you'll have con sordino on/off always activated independent of the other articulations, so it's easy to see visually which one is active at all times. e.g.



Code:


//! c=long-light i=con-sord g=2 o=cc:16,127
7 con sordino on
//! c=long-light i=con-sord g=2 o=cc:16,0
6 con sordino off


The g=2 part places those articulations into group 2, which operates indepdently of group 1 (the default if no g attribute is specified)

Thanks for clarifying that these _are_ out of the box patches for Inspire. Given that, they could well be good candidates for the factory banks. Does what you included cover the complete set of patches for the library?


----------



## Sekkle

tack said:


> You'll still need to separate con sordino on and off into two programs, but you can improve things by putting those programs into a separate group. This way you'll have con sordino on/off always activated independent of the other articulations, so it's easy to see visually which one is active at all times. e.g.
> 
> 
> 
> Code:
> 
> 
> //! c=long-light i=con-sord g=2 o=cc:16,127
> 7 con sordino on
> //! c=long-light i=con-sord g=2 o=cc:16,0
> 6 con sordino off
> 
> 
> The g=2 part places those articulations into group 2, which operates indepdently of group 1 (the default if no g attribute is specified)
> 
> Thanks for clarifying that these _are_ out of the box patches for Inspire. Given that, they could well be good candidates for the factory banks. Does what you included cover the complete set of patches for the library?



Nice one! I'll update them and check it out.



tack said:


> Thanks for clarifying that these _are_ out of the box patches for Inspire. Given that, they could well be good candidates for the factory banks. Does what you included cover the complete set of patches for the library?



Yeah I went through it and they are all the patches that require keyswitching - everything else are single articulations.


----------



## Sekkle

tack said:


> //! c=long-light i=con-sord g=2 o=cc:16,127 7 con sordino on //! c=long-light i=con-sord g=2 o=cc:16,0 6 con sordino off



That works perfectly! I've updated the code in my previous post to reflect the changes.


----------



## Sekkle

One other question - with OT Metropolis Ark 1 a number of the patches have a note keyswitch for sustain (which allows polyphonic chord playing of a legato patch) and also for RR reset. All other keyswitches are note based. 

I think ideally for the sustain there would be a single button on a new group which when triggered it stays held down and highlighted and when triggered again it's released. While for the RR reset it's a single click on/off that doesn't stay highlighted. That way both these functions could be integrated with the main patches. 

I had a look at your demo vid again but can't figure out how I would code it on a single switch. The bohemian note-hold commands you demonstrated seemed the closest and I used your con sordino code from earlier and adapted it which works using separate on/off switches. 

//! g="Orchestral Tools/Metropolis Ark 1" n="Finckenstein Strings (High) Multi" off=39

//! c=short i=note-quarter g=2 o=note-hold:0
38 sustain pedal on
//! c=short i=note-quarter g=2 o=note:1 
39 sustain pedal off

**note:1 doesn't have anything attached as its just a trigger to release the sustain**
**I also used empty UAAC slots**

Thanks!


----------



## DynamicK

tack said:


> Which action are you interested in adding to the MIDI editor? Reaticulate_Main perhaps, as a way to toggle it on and off? Currently all the actions are only available in the Main section context . I could look to including at least Reaticulate_Main in the MIDI editor as well the next release, if that's what you meant.


Yes it was to start *Reaticulate Main*. Don't worry, as I can assign an action and call it from Metagrid or Lemur if necessary. I am trying this out on my laptop, but I think I could probably dock Reaticulate where I want once I get Reaper setup on my main DAW, which has multi monitors.


----------



## Sami

Does this actually work as good as it looks? Cause it looks pretty damn good.


----------



## tack

Sami said:


> Does this actually work as good as it looks? Cause it looks pretty damn good.


A few niggles here and there found by users, but no major showstoppers. (Small tip: after installing Reaticulate, manually open an FX chain window once to workaround the fact that the Reaticulate JSFX isn't automatically scanned. This will be fixed in the next release.)


----------



## Sami

I just installed Reaper to try this out; if this is as good as everyone says, goodbye Cubase.


----------



## robgb

Sami said:


> Does this actually work as good as it looks? Cause it looks pretty damn good.


YES.


----------



## tack

Sami said:


> if this is as good as everyone says, goodbye Cubase.


Was articulation management really the last thing holding you to Cubase? It's difficult for me to imagine, but fascinating if so. I'd be very interested to learn about your experiences using Reaticulate from the perspective of a Cubase user.


----------



## Sami

tack said:


> Was articulation management really the last thing holding you to Cubase? It's difficult for me to imagine, but fascinating if so. I'd be very interested to learn about your experiences using Reaticulate from the perspective of a Cubase user.



I'm a classically trained composer used to score paper and working with live musicians. It's EXTREMELY difficult for me to "program" music, I am used to "writing" music and thinking about articulations completely naturally, which means not thinking about them. 

I hate 90% of Cubase, especially the way it looks, it's a total aesthetic turnoff for me which kills my inspiration. The two reasons I am using it are Expression Maps and the fact that it can handle multiple MIDI ports in VEPro. Otherwise I'd be using Logic, which looks better to me, but it's stuck somewhere in the mid 2000s, around 2007 probably and also only has third party articulation switching options.

Your solution -which I tried out yesterday and it actually works phenomenally well- has all the hallmarks of well-designed software:
-Simplicity of design
-Intuitive Interface
-Easy and well documented installation and use (i.e. video tutorial)
-Free and Open Source

For these alone you deserve great congratulations. Add to that the fact that Reaper does not require a dongle and that you are actually developing this system, whereas the Expression map interface has been the same since Cubase 7 or something, and the proposition becomes extremely enticing.


----------



## DynamicK

Sami said:


> whereas the Expression map interface has been the same since Cubase 7 or something, and the proposition becomes extremely enticing.


 Since Cubase 5 actually


----------



## Sami

DynamicK said:


> Since Cubase 5 actually



Q.E.D.!


----------



## eboats

DynamicK said:


> Since Cubase 5 actually


Been around for a while but their expression maps work great and are indispensable for me. Not surprised that other daws are trying to catch up.


----------



## ghandizilla

Just began to use it today. What an awesome tool! I feel a bit faster with Reaticulate within Reaper than with BRSO Articulate within FL Studio, but I guess this improvement feeling depends upon other factors too. I hope it will be integrated by default to Reaper 6! (Or at least that it will remain complimentary to whatever will be integrated to Reaper 6.) Really great to see all those user contributions. The script doesn't seem very complicated once you get used to it, which makes those contributions easier.


----------



## robgb

Loving this tool @tack. I'm wondering it there's a way to tell it to grab a Kontakt snapshot? If I have an instrument with a snapshot variation I'd love to be able to access it. Any ideas?


----------



## kaiyoti

For "Toggle", is there anyway of defining the two toggle states? 
eg.
cc:30,1 = off
cc:30,127 = on


----------



## SchnookyPants

OK. I'll be the dumb one. I'm old, I like to keep things simple, and I'm not sure what the hell I'm looking at, here.







I just got an iPad and TouchOSC. The whole idea was to use the aforementioned combination to design a few custom layouts in order to enact articulations in certain Kontakt instruments running within REAPER. I thought the combination of an iPad and TouchOSC was all that was required to handle this for me.

Do I need this?

[BTW Tack - from one Imperial man to another, Reaticulate looks stunning.]


----------



## tack

robgb said:


> I'm wondering it there's a way to tell it to grab a Kontakt snapshot? If I have an instrument with a snapshot variation I'd love to be able to access it. Any ideas?


I'm afraid I'm not aware of a means for a Reaper script to change snapshots within Kontakt. A possible kludge might be to create a custom multiscript to run in Kontakt, which could then at least be controlled via some special MIDI from Reaper, but even then I don't think it's possible for a Kontakt multiscript to adjust current snapshots of the active patches.


----------



## tack

kaiyoti said:


> For "Toggle", is there anyway of defining the two toggle states?
> eg.
> cc:30,1 = off
> cc:30,127 = on


If you have an on/off situation that emits two different output events, then the right thing to do is to have them as separate programs in a group.

Toggle was meant for cases when the same keyswitch toggled some state on the patch, for example in the Bohemian violin where the same keyswitch B0 toggles chords on and off. In your example, it's a separate event (CC30/1 and CC30/127) so since it's possible to set on and off discretely, they should be separate programs.


----------



## tack

SchnookyPants said:


> I just got an iPad and TouchOSC. The whole idea was to use the aforementioned combination to design a few custom layouts in order to enact articulations in certain Kontakt instruments running within REAPER. I thought the combination of an iPad and TouchOSC was all that was required to handle this for me.
> 
> Do I need this?


I think you can safely skip Reaticulate if you're happy to create custom TouchOSC layouts for all your patches, emitting the appropriate keyswitch event for the patch it describes.

You could think of it this as really just another kind of implementation that solves the same problems that Reaticulate does, more or less. Reaticulate provides a GUI, which TouchOSC does, and it loads all the banks for the patches of interest and describes their articulations, which your custom TouchOSC templates can do.

One thing that I don't think TouchOSC can do is emit _multiple_ MIDI events for a single UI element, so Reaticulate has a leg up there. For example, say you wanted a single articulation button with Cinematic Studio Strings to enable non-legato sustains with con sordino enabled. That's possible with Reaticulate, by creating a program that emits all the events CSS needs to set that state:



Code:


//! c=long-light i=con-sord o=note:24/note:34,1/note:35,127
7 long con sord


But if you don't need anything fancy like that, and seeing the articulations in the piano roll as program changes isn't that important to you, and all your patches use note-based keyswitches (since you can't step record CCs or program changes) or you're not interested in step input of articulation changes, I think you'd get on just fine with a pure TouchOSC solution. I reckon that's what a lot of people are doing anyway.



SchnookyPants said:


> [BTW Tack - from one Imperial man to another, Reaticulate looks stunning.]


Thanks!


----------



## robgb

tack said:


> I'm afraid I'm not aware of a means for a Reaper script to change snapshots within Kontakt. A possible kludge might be to create a custom multiscript to run in Kontakt, which could then at least be controlled via some special MIDI from Reaper, but even then I don't think it's possible for a Kontakt multiscript to adjust current snapshots of the active patches.


That's what I was afraid of. Thanks anyway!


----------



## ghandizilla

Just noticed that with CSS, when I do divisi parts (legato off switch + expression @ 85%), and switch back to legato on, Reaticulate activates the standard legato, not the advanced one. I like to switch to advanced legato and compensate delay before rendering, therefore I wonder myself: how can I do it with Reaticulate?

EDIT: Found it. Just made the sustain articulation @CC58 = 6


----------



## tack

ghandizilla said:


> EDIT: Found it. Just made the sustain articulation @CC58 = 6


Glad you found it. I actually retrofitted the CSS banks in my development branch to fix the particular gap you found (to include articulations for both standard and advanced legato), but also to switch to note-based keyswitches. CC-based keyswitches has a problem in which Kontakt will swallow multiple events for the same CC occurring at the same time and only pass through the last one. This prevented stacking output events.

For example, if you wanted an articulation for "advanced legato sustains con sordino" it would require emitting multiple output events, but with CCs, this just wouldn't work. Kontakt swallowed all but the last CC in the output event list.

(The previous factory bank for CSS doesn't do multiple output events so this wasn't a problem, but I'm considering some changes where that would be needed, so I figured I'd just port it over to note-based keyswitches. The disadvantage is that you now need separate banks for Sections and Ensembles.)


----------



## ghandizilla

Indeed, I noticed that for multiple articulation layers I had to trigger the CC switch at different times, which imply ultra-zooming in the MIDI editor :-D I'm really glad we will be able to make note based switches in the next update!

Great to see that Reaticulate's development is going on so fast, dealing with real-situation issues


----------



## tack

ghandizilla said:


> Great to see that Reaticulate's development is going on so fast, dealing with real-situation issues


Unfortunately not going quite as quickly as I'd hoped due to some back issues preventing extended sitting periods, but, yes, solving real problems is the goal.


----------



## samphony

tack said:


> Unfortunately not going quite as quickly as I'd hoped due to some back issues preventing extended sitting periods, but, yes, solving real problems is the goal.


Time for a standup desk!


----------



## tack

samphony said:


> Time for a standup desk!


Started researching actually. It would need to elevate this. Looks like the main complaint about standup desks is that they get quite wobbly at the height I'd need to keep it at (as I'm 6'1"). My search continues. Maybe I'll start a thread.


----------



## samphony

tack said:


> Started researching actually. It would need to elevate this. Looks like the main complaint about standup desks is that they get quite wobbly at the height I'd need to keep it at (as I'm 6'1"). My search continues. Maybe I'll start a thread.


ZAOR starts building a new standup line. I have a standup table build myself which is not wobbly at all.

A simple solution would be to keep your setup and have a simple standup solution on side.


----------



## robgb

tack said:


> It would need to elevate this


What CC controller are you using there?
As for standing desks:


----------



## tack

robgb said:


> What CC controller are you using there?


That's the iCON Platform-M.



robgb said:


> As for standing desks:


I'd looked at that one as well (both business and home editions) and they seem to have a lot of wobble even much below the height I'd need (around 45"). In fact, I'm not sure I've seen one of those motorized elevating desks that didn't have significant instability above 40". It seems that only units with crossbeam support don't wobble badly, but then I would find that problematic as I do like to stretch my legs out when I'm sitting. Damned if I do ...

Cool rig though.


----------



## robgb

tack said:


> have a lot of wobble even much below the height I'd need (around 45").



I can tell you at its top height (46"?) I haven't really noticed much wobble. Yes it does wobble if you try to MAKE it wobble by grabbing hold and shaking it, but unless you're going to be dancing on it, I think you'll be fine.


----------



## Levitanus

well, awesome extention!
Now i'm confused at one moment:
How to realize both: multiple output rules adw switch (not layering) of the channel?
For example, i have about 30 patches with SSS template, being seated in 2 kontakts in VEPRO. I wat to be able layer anything with anything, so i made 2 tracks with the same JS plugins and reaticulate banks.
But for switching between banks i made simple JSFX:


Code:


slider1:1<1,127,1>CC NUM
slider2:0<0,1,1{Set BUS,Shift BUS}>mode

@init
ext_midi_bus = 1.0

@block
midirecv(offset, msg1, msg2, msg3)?(
  msg1 >= 0xb0 && msg1 < 0xc0 && msg2 == slider1  ? (
      slider2 == 0? (
        bus = msg3;
      ):(
        bus = midi_bus + msg3 + 1;
      );
    );
  midi_bus = bus-1;
  midisend (offset, msg1, msg2, msg3);
);

So, for setting the right bus i need to send CC (84 in my case) with the BUS Nr. But when i write output rule


Code:


//! c=legato i=legato g=1 o=cc:84,1/@2
2 legato_vi_II

reaticulate layers patches, but not switches.
configurations


Code:


//! c=legato i=legato g=1 [email protected]/cc:84,1
2 legato_vi_II

and


Code:


//! c=legato i=legato g=1 [email protected] 0=cc:84,1
2 legato_vi_II

don't work at all


----------



## tack

Levitanus said:


> So, for setting the right bus i need to send CC (84 in my case) with the BUS Nr. But when i write output rule


Can you describe exactly what MIDI outputs you want to be sent? e.g. which specific events on which channels.



Levitanus said:


> and
> 
> 
> Code:
> 
> 
> //! c=legato i=legato g=1 [email protected] 0=cc:84,1
> 2 legato_vi_II
> 
> don't work at all


Yeah, that's not syntactically valid, so I'm not surprised it doesn't work.


----------



## tack

Levitanus said:


> configurations
> 
> 
> Code:
> 
> 
> //! c=legato i=legato g=1 [email protected]/cc:84,1
> 2 legato_vi_II
> 
> and


I guess just to clarify on what this does (or _should_ do ):

It'll output CC84 value 1 on the default channel (the channel that's highlighted in the GUI), and thereafter will ensure all subsequent MIDI events go to this default channel and channel 2.


----------



## Levitanus

tack said:


> Can you describe exactly what MIDI outputs you want to be sent? e.g. which specific events on which channels.


CC84 has to be sent on any channel with value 1 (or whatewer value being set in bank). It will set the proper bus.
Any other messages have to be rerouted to the channel (@channel) as with construction


Code:


//! c=legato i=legato g=1 [email protected]
1 legato_vi_I


----------



## tack

Levitanus said:


> CC84 has to be sent on any channel with value 1 (or whatewer value being set in bank). It will set the proper bus.
> Any other messages have to be rerouted to the channel (@channel) as with construction


Perhaps you want:



Code:


//! c=legato i=legato g=1 [email protected]:84,1
1 legato_vi_I


This will send CC84 value 1 on channel 2 and then route subsequent events to channel 2. If I understand right, this might happen to work because your CC84 event can be sent on any channel. If you had needed to send CC84 on channel 1 and then route to channel 2 while also avoiding sending subsequent events to _both_ channels 1 and 2 (which is what your earlier syntax did), that'd have been a problem.


----------



## Levitanus

tack said:


> //! c=legato i=legato g=1 [email protected]:84,1 1 legato_vi_I


Wee!
Thanks!


----------



## MarcelM

tried reaper once again this weekend and reaticulate is really really great. i like it better than cubase expression maps or the new articulation system in logic pro.

along with your other scripts (disable track etc) you can really build a good orchestral template now in reaper.

looking forward to future updates and a more easy way to create own banks.

great work!


----------



## tack

Heroix said:


> tried reaper once again this weekend and reaticulate is really really great. i like it better than cubase expression maps or the new articulation system in logic pro.


Thanks Heroix! That's really wonderful to hear.


----------



## MarcelM

tack said:


> Thanks Heroix! That's really wonderful to hear.



well you might not wanna hear that my wife wasnt too happy that i spend the entire sunday on a reaper template. 
actually i can blame you for it (j/k  ) because of reaticulate. but besides this its also stunning how good reaper is on cpu usage.

really complicated to get started but now i have a skin and custom actions/scripts etc which mimics the features i loved from cubase and logic. and reaper beats both of them regarding cpu usage.

i have not done a single track yet , but i hope you will continue to develope this thing and dont abandon it.
iam sure reaper will get quite a few new users just because of reaticulate.


----------



## robgb

tack said:


> That's the iCON Platform-M


This can control CC1, 7, 11 etc. in Reaper, right? I have a nanoKontrol but would like something a little more solid.


----------



## tack

robgb said:


> This can control CC1, 7, 11 etc. in Reaper, right? I have a nanoKontrol but would like something a little more solid.


Yep, you can put it in custom mode and set the faders to any CC. (NB: Windows software required to push the configuration to the control surface.)

I personally keep it in Mackie mode and use Bome MIDI Translator to do the necessary conversions from the Mackie protocol and plain MIDI CCs, but then my customization is completely insane and not for the faint of heart.


----------



## Levitanus

Heroix said:


> my wife wasnt too happy that i spend the entire sunday on a reaper template.


sunday? Last time i made template it took a week without a dream)
Today i said to my wife, i'm doing it again, and reaction was:


> God bless, AGAIN?


P.S. I have a debt (new year present) of making Handel klavier for her...



robgb said:


> but would like something a little more solid.


How about lemur?


----------



## MarcelM

its only about 200 tracks yet and pretty small.  most time took configuring reaper. setting all actions, shortcuts, mouse, scripts etc.


----------



## robgb

Levitanus said:


> How about lemur?


I like something more tactile.


----------



## robgb

tack said:


> Yep, you can put it in custom mode and set the faders to any CC. (NB: Windows software required to push the configuration to the control surface.)


I'm on a Mac. Downloaded the software to check it out and don't see anything about custom mode, but will check out the manual. Thanks.


----------



## tack

robgb said:


> I'm on a Mac. Downloaded the software to check it out and don't see anything about custom mode, but will check out the manual. Thanks.


Ah! My bad. They must have just very recently released the Mac software. Its absence was a common complaint and it didn't seem like that long ago that I checked.

To do a custom configuration, you set Control Mode to User Defined. Then as you click on each element in the UI you can set its MIDI output.


----------



## robgb

tack said:


> To do a custom configuration, you set Control Mode to User Defined. Then as you click on each element in the UI you can set its MIDI output.


Unfortunately that option isn't available in the Mac version.


----------



## Levitanus

May be it will be useful someone

also here are used two little JS: in monitoring chain to filter UACC KS for spitfire TM patch and in output chain to reroute midi to BUS directly for the track, not for kontakt.


----------



## Audio Birdi

@tack Thank you for creating Reaticulate! It's truly awesome!

I've attached a ZIP file, which contains scripts and screenshots that pertain to a problem I'm having with my script V2 Reabank file.

I've managed to create some custom banks, but I'm having trouble with some articulations triggering. I've attached 2 version of how I've done the script.

With script V2... For some strange reason, when the channel 2-related and channel 8-related articulations are selected, midi channel 1 is still active when playing the ch. 2 or ch. 8 articulations.

Script V1 is seperated out and the source is manually set to the corresponding articulations. This way works fine in terms of functioning and no midi channels are sticking, only the corresponding articulation-triggered channels are used.

I'd prefer to use script V2, so that all articulations are corresponding to "VIOLINS 1" and don't have to be split up into sections. The MIDI channel 1-sticking problem is happening when using script V2 and I'm not sure how to fix it.

EastWest Play patches are triggering multiple CC-related or KS related patches.

Also, as a side thing, is there a way to split up banks for a single track and have them without a name at the top of each bank if possible?

Any help would be great!


----------



## ghandizilla

I don't know at all if it's possible with Reaticulate, so I'll try an hazardous question: can you add other CC messages to the already existing ones in your custom Reakbank file (like, do a CC32 *and *CC11 based one, so you can actually link volume levels to articulations?)


----------



## tack

ghandizilla said:


> can you add other CC messages to the already existing ones in your custom Reakbank file (like, do a CC32 *and *CC11 based one, so you can actually link volume levels to articulations?)


Yes. And that's a very clever idea!


----------



## ghandizilla

Great! It opens up a sheer amount of exciting possibilities. You can actually balance your template and create specific articulations for divisi directly in Reabanks.


----------



## tack

ghandizilla said:


> You can actually balance your template and create specific articulations for divisi directly in Reabanks.


I imagine most people balance different articulations in Kontakt (or whatever sampler) directly. For example, even with Spitfire's combination palettes, you can have separate mixes per articulation (although the implementation of this is a bit clunky). So balancing e.g. shorts against longs is probably a fairly well solved problem already.

But divisi writing is a great use-case and indeed I've been adjusting CC11 directly myself.

So while you might normally have:



Code:


//! c=long i=note-whole o=cc:32,1
1 long


You could instead have:



Code:


//! c=long i=note-whole o=cc:32,1/cc:11,127
1 long
//! c=long i=note-whole o=cc:32,1/cch11,104
121 long div 2
//! c=long i=note-whole o=cc:32,1/cc:11,86
122 long div 3
//! c=long i=note-whole o=cc:32,1/cc:11,64
123 long div 4


(Just making up the volume levels there.)

I think this is what you had in mind. Let's develop it a bit more ...

Things can get a bit out of hand if you do this for every long articulation you have. It might be nice to abstract out the different divisi levels out into separate programs and all into a separate group. So something like:



Code:


//! c=long i=note-whole o=cc:32,1
1 long

//! c=long i=note-whole g=4 o=cc:11,127
120 unison
//! c=long i=note-whole g=4 o=cc:11,104
121 div 2
//! c=long i=note-whole g=4 o=cc:11,86
122 div 3
//! c=long i=note-whole g=4 o=cc:11,64
123 div 4


The drawback of this approach stems from a known issue with groups (and either extremely difficult or impossible for me to workaround) in which Reaper (obviously) only chases the last program change on a given channel. So if you have 3 program changes on channel 1 for 3 different groups, only the last one is chased.

A workaround is actually to move the divisi programs into a separate bank, and configure that bank on a dedicated source MIDI channel (say 16):



Code:


//! g="Utilities" n="Divisi" f=!chase
Bank 1 1 Divisi
//! c=long i=note-whole g=4 o=cc:11,127
120 unison
//! c=long i=note-whole g=4 o=cc:11,104
121 div 2
//! c=long i=note-whole g=4 o=cc:11,86
122 div 3
//! c=long i=note-whole g=4 o=cc:11,64
123 div 4


Your track configuration would look something like:






Resulting in a main UI that looks like:






Then because all divisi related programs are on channel 16, as long as you avoid this channel for other things, chasing will work as expected. Technically in dedicating this channel to this purpose you wouldn't need to use articulation groups anymore.

This works if you're mocking up divisi with polyphonic patches all on the same channel, but I prefer to split this out to a separate MIDI channel per divisi part. The main benefit is that you can use different CC curves for each part. Another advantage is you can still mockup the divisi parts with monophonic patches such as legato.

So that now looks like:



Code:


//! g="Utilities" n="Divisi" f=!chase
Bank 1 1 Divisi
//! c=long i=note-whole [email protected]:11,127
120 unison
//! c=long i=note-whole [email protected]:11,104/[email protected]:11,104
121 div 2
//! c=long i=note-whole [email protected]:11,86/[email protected]:11,86/[email protected]:11,86
122 div 3
//! c=long i=note-whole [email protected]:11,64/[email protected]:11,64/[email protected]:11,64/[email protected]:11,64
123 div 4


A third benefit is that you can use different patches for different parts if you want.

Consider an example which uses Spitfire Chamber Strings (as shown above) where you have a 3-way divisi but want the third divisi part playing con sordino. Here I'd pull in another longs patch on channel 2, and con sord on channel 3. I'd set them both to UACC so that I can reuse those channels for other patches later, and continue to switch articulations across all channels using Reaticulate. So now that looks like:






And this would be pretty cool if it actually worked. 

It works fine ad hoc but there's some issue during transport playback where the divisi programs aren't registering with the Reaticulate JSFX.

There were bound to be bugs as we start poking around the edges of these use-cases. Hopefully it won't be too hard to fix.

Edit: Nevermind, it actually does work. Silly me, I had a MIDI routing matrix JSFX at the top of my FX chain explicitly filtering out channels 15 and 16 as I use those for other reasons.


----------



## Levitanus

tack said:


> but I prefer to split this out to a separate MIDI channel per divisi part. The main benefit is that you can use different CC curves for each part.


Finally i Found the guy knows what divisi have to look like) Nobody has understood me in particularly this explanation)

More than, this use-case with reaticulate can achieve the point of using several different libraries as divisi parts or unison "in one box"


----------



## tack

Levitanus said:


> Finally i Found the guy knows what divisi have to look like) Nobody has understood me in particularly this explanation)


Preach it, brother! Keep on fighting the good fight.


----------



## ghandizilla

It's incredibly useful to have all the divisis handed by a separate MIDI channel! I'm really enthusiastic to implement this in my main template.


----------



## tack

ghandizilla said:


> I'm really enthusiastic to implement this in my main template.


Great! Let me know how it works out for you.

P.S. Your profile picture makes me laugh every time I read it.


----------



## tack

Now that I test this out a bit further, I realized I should have disabled CC chasing on the special divisi bank. Because these programs are setting up routing from channel 16 to (variously) channels 1-4, in addition to sending the CC11, and because Reaticulate will chase all CCs by default, it happens that it will end up chasing whatever crap might have appeared on channel 16 into these target channels.

A cleaner solution would be to mark the CC11 output events as non-routing so that no CC chasing takes place anyway. This is enhancement is planned, but meanwhile the simple workaround is to disable CC chasing on the divisi bank by specifying f=!chase at the bank level (which is equivalent to specifying f=!chase on each individual articulation).



Code:


//! g="Utilities" n="Divisi" f=!chase
Bank 1 1 Divisi
//! c=long i=note-whole [email protected]:11,127
120 unison
//! c=long i=note-whole [email protected]:11,104/[email protected]:11,104
121 div 2
//! c=long i=note-whole [email protected]:11,86/[email protected]:11,86/[email protected]:11,86
122 div 3
//! c=long i=note-whole [email protected]:11,64/[email protected]:11,64/[email protected]:11,64/[email protected]:11,64
123 div 4


----------



## ghandizilla

Works just fine:







(A bit cropped, divs are on channel 16)

Happy up here


----------



## aaronventure

Hey tack, I saw you closed a bunch of stuff today. When can we expect a release? Really happy to be rid of Inspector soon.


----------



## tack

aaronventure said:


> Hey tack, I saw you closed a bunch of stuff today. When can we expect a release? Really happy to be rid of Inspector soon.


I've been saying to the effect of "any day now" for so long that I feel embarrassed, so I better stop trying to answer this question lest I lose all remaining credibility. 

I think what I may do though is start adding reapack indexes to the master branch to allow the more adventurous to try it, and more importantly, help with testing. Even though I'm calling Reaticulate alpha software, I'm still taking some care to make it stable. And I've introduced some pretty major changes to master such that regressions are a real possibility (in spite of my own testing). I'd probably feel better pushing a release if I had more feedback from others helping with testing.

Thoughts?

BTW, what are your hot button issues keeping you on Inspector? Was it just #20?


----------



## Virharmonic

Wow - Really nice work Tack. Only spotted it now. Let us know if there is anything we can do to support your project


----------



## tack

Virharmonic said:


> Wow - Really nice work Tack. Only spotted it now. Let us know if there is anything we can do to support your project


The Bohemian was instrumental (sorry for the pun) in shaping a lot of the design of Reaticulate. You've already helped!


----------



## aaronventure

tack said:


> Thoughts?



As long as you make it a separate instance completely so it doesn't mess up my projects, I'd love to!



tack said:


> BTW, what are your hot button issues keeping you on Inspector? Was it just #20?



Yeah, the inability to use Reaticulate with Berlin Woodwinds the way I do with Inspector (two notes at the same time lets me join vibrato and no vibrato into one expression and crossfade between them.

I also wonder if you have in the pipeline an option that inspector has - left click being the way it is now, but right click actually inserts the program change into MIDI without having to have step input.


----------



## tack

aaronventure said:


> As long as you make it a separate instance completely so it doesn't mess up my projects, I'd love to!


That's quite tricker than it sounds. You could always install it from a portable install to test projects ahead of time. But it's ok if you leave the bleeding edge to others too. 



aaronventure said:


> I also wonder if you have in the pipeline an option that inspector has - left click being the way it is now, but right click actually inserts the program change into MIDI without having to have step input.


Yes that's what @Levitanus has asked for in #20 if I understand him correctly. Although he was asking about a keyboard modifier, I think a right-click behavior would work as well. It's easy to implement and it'll be done in the upcoming release.


----------



## aaronventure

tack said:


> That's quite tricker than it sounds. You could always install it from a portable install to test projects ahead of time. But it's ok if you leave the bleeding edge to others too.



I mean there would be two separate installations to choose from, no?

Would it be tricky because you would have to rename all the scripts and everything that goes with it?



tack said:


> Yes that's what @Levitanus has asked for in #20 if I understand him correctly. Although he was asking about a keyboard modifier, I think a right-click behavior would work as well. It's easy to implement and it'll be done in the upcoming release.



Right ON! You're a true hero.


----------



## tack

aaronventure said:


> I mean there would be two separate installations to choose from, no?
> 
> Would it be tricky because you would have to rename all the scripts and everything that goes with it?


Pretty much. It would be available under a different ReaPack location, but I would need to rename all the actions and the JSFX itself to not conflict with the other installation. I think right now that's more trouble than it's worth. Maybe once the project increases in maturity. Right now I at least still have the "alpha" label to fall back on.


----------



## aaronventure

I got an idea. I don't know if it would be possible (I have a feeling that it wouldn't) but I'll ask anyway:

Could it be done so that we can drag and drop articulations from the script GUI into the Bank/Program select lane in the MIDI Editor?


----------



## robgb

aaronventure said:


> Could it be done so that we can drag and drop articulations from the script GUI into the Bank/Program select lane in the MIDI Editor?


Or you could just open the lane and click on the articulations. Much faster, actually.


----------



## aaronventure

robgb said:


> Or you could just open the lane and click on the articulations. Much faster, actually.



You can do this? Could you elaborate further? You mean in the lane in the TCP?

Wouldn't it be the same like it is right now? Click to position, click the articulation.


----------



## robgb

aaronventure said:


> You can do this? Could you elaborate further? You mean in the lane in the TCP?
> 
> Wouldn't it be the same like it is right now? Click to position, click the articulation.


Yes. That's what I'm talking about.


----------



## tack

aaronventure said:


> Could it be done so that we can drag and drop articulations from the script GUI into the Bank/Program select lane in the MIDI Editor?


I'm not sure if this is implementable either. If it is, the UX probably wouldn't be very good, given that I'm not able to paint outside Reaticulate's UI window.

But with the right-click stuff we mentioned earlier, I think all this saves you is the extra click of having to reposition the edit cursor first?


----------



## aaronventure

tack said:


> I'm not sure if this is implementable either. If it is, the UX probably wouldn't be very good, given that I'm not able to paint outside Reaticulate's UI window.
> 
> But with the right-click stuff we mentioned earlier, I think all this saves you is the extra click of having to reposition the edit cursor first?



Actually yes. My bad, I was always thinking about opening the script too since Inspector is so laggy and has to be closed and opened every time.


----------



## tack

A bit of a discussion over on The Sound Board but I thought I'd share here as well:

Very soon (this weekend or early next week) I'm going to push the next release (0.2.0). Thanks to @NoamL my interest has been rekindled in tackling the problem of legato delays. I've put together a standalone proof-of-concept just to make sure the basic plumbing will work:



As with Noam's LPX solution, this is all dynamically adjusted during playback. No note nudging involved.

Of course the I'm-totally-working-on-it-and-it's-coming-soon-honest GUI for building banks will make all this easy to configure, but in the meantime, as we're all forced to sling together our banks in a text editor, I'm considering this sort of syntax:



Code:


//! c=legato  i=legato   o=note:24,127/note:34,65
//! dc=vel:0-127,-100/vel+leg:0-64,-333/vel+leg:65-100,-250/vel+leg:101-127,-125
21 legato adv


Again, the scary syntax will eventually be hidden behind a pretty GUI, but the idea is that we have a new articulation level attribute 'dc' (delay compensation), and in the above example, that bit of dense and confusing syntax would:

for non-legato notes with velocity from 0-127, shift the note by -100ms
for legato-connected notes with velocity 0-64, shift the note by -333ms
for legato-connected notes with velocity 65-100, shift the note by -250ms
for legato-connected notes with velocity 101-127, shift the note by -125ms
This should be extendable to use CC values to trigger delays as well, so e.g. you can use the current value of the modwheel to control the note offsets during playback.


----------



## ghandizilla

That's great for a lot of users, but if you already use a workaround (in my case, CSS Control Panel) and want to keep this workaround (because of the CC-controlled short notes and one-note trills), it would be amazing to have like a check box to activate or disable delay compensation, avoiding users like me or users accustomed to write with the delay to edit the Reatictulate-factory.reabank file to delete the dc lines 

What is great with this dc idea is that the syntax remains very simple, and so users can easily implement it to other libraries with a bit of delay (like Con Moto Cellos).

I'm really glad the update is coming.


----------



## aaronventure

tack said:


> A bit of a discussion over on The Sound Board but I thought I'd share here as well:
> 
> Very soon (this weekend or early next week) I'm going to push the next release (0.2.0). Thanks to @NoamL my interest has been rekindled in tackling the problem of legato delays. I've put together a standalone proof-of-concept just to make sure the basic plumbing will work:
> 
> 
> 
> As with Noam's LPX solution, this is all dynamically adjusted during playback. No note nudging involved.
> 
> Of course the I'm-totally-working-on-it-and-it's-coming-soon-honest GUI for building banks will make all this easy to configure, but in the meantime, as we're all forced to sling together our banks in a text editor, I'm considering this sort of syntax:
> 
> 
> 
> Code:
> 
> 
> //! c=legato  i=legato   o=note:24,127/note:34,65
> //! dc=vel:0-127,-100/vel+leg:0-64,-333/vel+leg:65-100,-250/vel+leg:101-127,-125
> 21 legato adv
> 
> 
> Again, the scary syntax will eventually be hidden behind a pretty GUI, but the idea is that we have a new articulation level attribute 'dc' (delay compensation), and in the above example, that bit of dense and confusing syntax would:
> 
> for non-legato notes with velocity from 0-127, shift the note by -100ms
> for legato-connected notes with velocity 0-64, shift the note by -333ms
> for legato-connected notes with velocity 65-100, shift the note by -250ms
> for legato-connected notes with velocity 101-127, shift the note by -125ms
> This should be extendable to use CC values to trigger delays as well, so e.g. you can use the current value of the modwheel to control the note offsets during playback.




Great to hear, looking forward to it! 

I'm sure you already thought of this, but I'll ask anyway: 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?

Thanks a lot for everything, man.


----------



## Stevie

OMG Tack, I'm speechless, that's the best thing since sliced bread!


----------



## tack

ghandizilla said:


> 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.



aaronventure said:


> 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.



Stevie said:


> 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.


----------



## hsindermann

Awesome news Tack - I use Reaticulate all the time!

So... would this be part of the 0.2.0 release already?


----------



## tack

hsindermann said:


> So... would this be part of the 0.2.0 release already?


I'm afraid not. Unless I run into real problems during implementation, I should include the capability in the following release.


----------



## pmcrockett

tack said:


> 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.


----------



## tack

pmcrockett said:


> 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.


----------



## Bernard Duc

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?


----------



## pmcrockett

Bernard Duc said:


> 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.


----------



## tack

Bernard Duc said:


> 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. 



Bernard Duc said:


> 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.


----------



## Bernard Duc

tack said:


> 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.



tack said:


> 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.


----------



## tack

Bernard Duc said:


> 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.


----------



## Bernard Duc

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.


----------



## Bernard Duc

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.


----------



## tack

Bernard Duc said:


> 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.



Bernard Duc said:


> 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.


----------



## tack

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:

 Close current project (if one is open)
 Menu: Extensions | ReaPack | Manage Repositories
 Right click Reaticulate and click Uninstall
 Click ok and say yes to the prompt
 Restart Reaper (necessary to stop existing Reaticulate instance)

And these steps to try the prerelease:

 Menu: Extensions | ReaPack | Manage Repositories
 Click Import/Export | Import Repositories
 Paste: http://reaticulate.com/prerelease.xml
 Click ok and double click on Reaticulate in the Repository list
 Click Install/update Reaticulate button and select Install all packages
 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.]


----------



## vicontrolu

Hey tack,

What's new in the update, feature wise, if I may ask?


----------



## tack

vicontrolu said:


> 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.


----------



## Divico

Does anyone use this with Hollywood Strings?


----------



## tack

Divico said:


> Does anyone use this with Hollywood Strings?


One user submitted banks for Hollywood Brass and Woodwinds. They're just note-based keyswitches so there's certainly no reason why Reaticulate couldn't be used to control Hollywood Strings. It just comes down to creating the appropriate bank for it.


----------



## Divico

tack said:


> One user submitted banks for Hollywood Brass and Woodwinds. They're just note-based keyswitches so there's certainly no reason why Reaticulate couldn't be used to control Hollywood Strings. It just comes down to creating the appropriate bank for it.


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


----------



## tack

Divico said:


> 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.


----------



## Levitanus

Divico said:


> midi channels is an option than


as well as other normal methods to layer arts)) You can look at my solutions (but they quite project-connected). There'is also midi-bus mapper JS

Jack, I'll test it at morning) Congrats and Cheers!
P.S. I've been just overfilled by manuals of Tk and Qt and just started to feel normal in gui, so sorry for keeping silent on it...


----------



## Bernard Duc

tack said:


> 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.
> 
> Great to hear.



Actually because Reaper supports OSC it is much easier to do that than in the video. I can very easily link my instrument buttons to Reaper tracks. On the Reaper side the articulation list is updated by Reaticulate and on the tablet side everything is taken care of by Lemur, no feedback from Reaticulate is necessary so far. But I will definitely test the new version!


----------



## Divico

tack said:


> One user submitted banks for Hollywood Brass and Woodwinds. They're just note-based keyswitches so there's certainly no reason why Reaticulate couldn't be used to control Hollywood Strings. It just comes down to creating the appropriate bank for it.


Works like a charm. Great stuff.
I had to transpose the notes by a octave in the reabank file though. 
Seems like play doesnt recognize C0 as note 36 anymore as stated in the bank.
As soon as I´ll have corrected the whole bank I´ll put it up here. Maybe someone will benefit


----------



## Bernard Duc

tack said:


> I'd try it myself but it's fairly expensive and it has all the trappings of abandonware.


It's true that the user forum is offline but they recently had an update and I also heard that they hired a new programmer. Hopefully they will keep supporting it because it's absolutely wonderful! Playing around with my new Lemur template makes me already wonder how I could work without it. The time gain is huge, and it boosts the creativity by making the process much more fun and streamlined.


----------



## hsindermann

tack said:


> Hi all,
> 
> I could use a bit of help testing the next version of Reaticulate before I officially release it. ...



I've installed the new version yesterday and played with it for a while - works perfectly here. I love the one new functionality that I know of: Getting the program changes into the midi items with a right-click. Previously I always forgot to disable step input again, and messed up my midi data constantly...


----------



## tack

hsindermann said:


> I've installed the new version yesterday and played with it for a while - works perfectly here.


Great to hear! And a little surprising too. 

Thanks for taking the time.


----------



## Levitanus

still no bugs


----------



## robgb

Been playing with the new version. Works like a charm on both old and new.


----------



## robgb

This may be a dumb question, but is there any way to transform my articulations into menu form so that when I right click in the articulation lane I get a menu of the articulations I've set up (or can add them to the existing menu)?


----------



## Divico

@tack hey, Im currently setting up a bank for Hollywood Strings binding articulations to midi channels. So far it works really good.
Im wondering if there is a decent way to enable sordino for individual patches.
I tried to set it up this way:

//! c=long-light i=con-sord g=2 o=cc:16,127
7 con sordino on
//! c=long-light i=con-sord g=2 o=cc:16,0
6 con sordino off

Problem is that the CC is always sending to channel 1. 
Is there a way to make it relative to the chosen channel in group 1 or at least to send it to all channels?


----------



## Levitanus

Divico said:


> Is there a way to make it relative to the chosen channel in group 1 or at least to send it to all channels?


The Easiest way - use JS-transmitter. I say Jack, that such options are good to implement, but it will trougth a big modification of comunication protocol between script and JS as I understand.
But You can pretty easily use somwhat like:


Code:


@block
while(midirecv(offset, msg1,msg2,msg3))(
  msg1 >= 0xbo && msg1 < 0xc0 && msg2 == 16?(
    i = 0;
    while (i<16)(
      midisend(offset, 0xbo+i, msg2, msg3);
      i += 1;
    );
  ):(
   midisend(offset, msg1, msg2, msg3);
  );
);

If i haven't made mistakes


----------



## Vadium

Hi Tack,
Thanks a lot for a good deal - Reaticulate seems as very good and versatile system.

few words about list of articulations appearance - what about autoscroll option? (if list not fit a screen, it needs to manually scroll for see, what articulation is selected - for example, if an instrument has about 50 articulations, like VSL, WarpIV or EW Hollywood). Also, as idea, a font size option for the list and more than one column list appearance may be a good addition.


----------



## Levitanus

Well, finally i found something:
When I copy Item to other track and applying articulation by right-click, it appears on the old (currently yet unselected) Item. It seems, that selection folows the selected track first, then takes item under cursor. I think, the better to take selected items at first, then, if nothing is selected - put art on the selected track.
[UPD] And something is going on with undo points here

Future request: by the same action it would be great to create an item if there is no one on the selected track (I think a little bit left than cursor position). If overdub is turned on, then item will grow up within record.


----------



## robgb

Levitanus said:


> applying articulation by right-click


Not sure what you mean by this. Where are you right clicking to apply an articulation?


----------



## Levitanus

robgb said:


> Where are you right clicking


On to the articulation button)


----------



## robgb

Levitanus said:


> On to the articulation button)


Hmm. I left click. Does right clicking do something different?


----------



## tack

Divico said:


> Is there a way to make it relative to the chosen channel in group 1 or at least to send it to all channels?


There currently isn't a way to have an output event pass through to the the existing target channels. With the prerelease version I wrote about earlier, it's possible to blast the output event to all channels and not affect future routing. This might be good enough. It would look like this:



Code:


//! c=long-light i=con-sord g=2 o=cc:[email protected],127/cc:[email protected],127/cc:[email protected],127/cc:[email protected],127/cc:[email protected],127/cc:[email protected],127/cc:[email protected],127/cc:[email protected],127/cc:[email protected],127/cc:[email protected],127/cc:[email protected],127/cc:[email protected],127/cc:[email protected],127/cc:[email protected],127/cc:[email protected],127/cc:[email protected],127
7 con sordino on


Yeah, it's not pretty. And it uses the full limit of the number of output events (16). It leverages a new feature in the next version to not affect channel routing by prefixing the target channel with a - sign. So this articulation will fire CC 16 value 127 on all 16 channels but not interfere with any routing that was set up by a previous articulation.

But here's the problem with this approach: Reaper only chases the last program change per channel. So if your "con sordino on" program appears after a spiccato articulation, say, and you manually change the articulation in your patch to long (or whatever), depending on where the edit cursor is, Reaper could chase the con sordino (resending all those CC16-127 messages) but not the spiccato.

It's a limitation of using program changes that we'll just have to live with. This is something that proper articulation map support in Reaper should theoretically address.




Levitanus said:


> such options are good to implement, but it will trougth a big modification of comunication protocol between script and JS as I understand.


Some features would require such an overhaul. It essentially comes down to how much per-track state am I able to store in the JSFX. Currently I have room for about 90 bytes, and there's just only so much you can squeeze into 90 bytes. 

Fortunately, the kind of behavior Divico asked for wouldn't depend on that. It actually wouldn't be very difficult to implement I think.




Vadium said:


> few words about list of articulations appearance - what about autoscroll option? (if list not fit a screen, it needs to manually scroll for see, what articulation is selected - for example, if an instrument has about 50 articulations, like VSL, WarpIV or EW Hollywood).


Do you mean that the list autoscrolls during playback as different articulations are selected?



Vadium said:


> Also, as idea, a font size option for the list and more than one column list appearance may be a good addition.


Ctrl-mousewheel lets you adjust the zoom level. This affects the entire Reaticulate UI though, icons included, not just font. But maybe it's good enough for you. A couple other users have asked for multiple columns of articulations and I understand the use-case but it's pretty low on my radar. 



Levitanus said:


> I think, the better to take selected items at first, then, if nothing is selected - put art on the selected track


But this only makes sense if the currently selected track and the track with the selected MIDI item have the same banks. Otherwise you could easily end up inserting a program change referenced by a bank on the selected track that just doesn't make sense on the track with the selected MIDI item. And I'm not sure I like the idea of an exception here (i.e. if the bank on the selected track is compatible with the track containing the selected MIDI item then insert it into the selected item, otherwise insert at the item under the cursor on the selected track). I think that UX starts to become too confusing.



Levitanus said:


> And something is going on with undo points here


Yes, I've noticed this too. It's on the to-do list to investigate. Might be a regression due to the amount of hacking I've needed to do to prevent Reaticulate from mangling the last touched FX. This is another area where I have to go through some heroics to work around limitations in Reaper's API.




robgb said:


> Hmm. I left click. Does right clicking do something different?


In the prerelease, right clicking an articulation always inserts a program change in the MIDI item under the edit cursor on the selected track. Even if the MIDI editor isn't open. (Or if the MIDI editor is open but step record isn't turned on.)


----------



## robgb

tack said:


> In the prerelease, right clicking an articulation always inserts a program change in the MIDI item under the edit cursor on the selected track. Even if the MIDI editor isn't open.


Ahh. Learn something new every day...


----------



## Levitanus

tack said:


> But this only makes sense if the currently selected track and the track with the selected MIDI item have the same banks.


Yep, I haven't thought about that. I understand, that my style of work is a little bit creepy from the view of usual users, but this issue really confusing because it's tricky to select the track with an already selected item. And I always forgot about that)))
Hmm... Really strong logical question. For using item as reference during record it is bad to put programm to selected. Within multiple parts of one bank editing it's uncomfortable to put one programm at time, for selecting items for midi-editor, oened in other window by right-clicking, or by navigating inside midi-editor it's bad to add programm to the selected track... Leave as it is


----------



## Bernard Duc

Hi Tack, I haven't checked the new version yet (I don't want to mess up with my current setup that works really well), but is it possible to trigger the equivalent of right clicking on the articulation by sending a CC?


----------



## tack

Bernard Duc said:


> but is it possible to trigger the equivalent of right clicking on the articulation by sending a CC?


No, but that's a good idea. Rather than creating a pile of new actions to insert by CC, what about a single new action to toggle the force insert behavior for the current actions?


----------



## Bernard Duc

tack said:


> No, but that's a good idea. Rather than creating a pile of new actions to insert by CC, what about a single new action to toggle the force insert behavior for the current actions?


That would be perfect!


----------



## Divico

Right clicking doesnt do anything here oO
Updating the reapack should give me the newest version right?


----------



## tack

Divico said:


> Updating the reapack should give me the newest version right?


No, it's at a new location because the ReaPack format is different and backward incompatible. I haven't officially released the next version yet but I released a preview. See this post. If you're feeling adventurous even just to try it temporarily I'd be grateful for the feedback testing against any existing projects for regressions. (Just don't overwrite your projects with the new version loaded and you'll be able to revert if needed.)


----------



## Divico

tack said:


> No, it's at a new location because the ReaPack format is different and backward incompatible. I haven't officially released the next version yet but I released a preview. See this post. If you're feeling adventurous even just to try it temporarily I'd be grateful for the feedback testing against any existing projects for regressions. (Just don't overwrite your projects with the new version loaded and you'll be able to revert if needed.)


Thanks mate. Couldnt find the post here earlier.
Gonna check it out


----------



## Vadium

In such situation, as showed on the screenshot, the second legato note is hangs without note-off. Is it normal?


----------



## tack

Vadium said:


> In such situation, as showed on the screenshot, the second legato note is hangs without note-off. Is it normal?


No, not normal. Do you have any articulation changes during the second note? Try inserting a ReaControlMIDI with midi logging enabled before and after the Reaticulate FX to confirm that the note-off is being sent into Reaticulate but yet is not being passed through by Reaticulate .


----------



## Divico

Vadium said:


> In such situation, as showed on the screenshot, the second legato note is hangs without note-off. Is it normal?


Nope. This works here so I use Reaticulate similar to Keyswitches


----------



## Vadium

As I understand, general cause is a pressed hold pedal value from previous notes. but sometimes, if I drag a second legato note to the different pitch, this note is correctly closing even with pressed pedal. (it is a CSS library, where hold pedal used for a rebow in legato articulations)


----------



## Levitanus

@Vadium ,Oh. That's it. You have to use chase-cc option. (enable for the bank). That would send CC64 to the previous articulation within the new one. In case it's not the bug of CSS patch.


----------



## Vadium

Levitanus said:


> @Vadium ,Oh. That's it. You have to use chase-cc option. (enable for the bank). That would send CC64 to the previous articulation within the new one. In case it's not the bug of CSS patch.



It seems like a chase option for a same case in Plogue Bidule)


----------



## Vadium

I am not familiar with this code yet - but it just a factory bank from Reaticulate-factory.reabank - is all ok with chase in this one?


----------



## tack

After a longer-than-expected development cycle, I’m happy to release the next alpha version of Reaticulate.

Please do read the write-up on the website where I provide a lot more detail about the new features of this release.

*Eh?*
Reaticulate is an articulation management system for REAPER. Check the website to be assaulted with information you never wanted.

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

*Upgrading*
Unfortunately due to significant backward-incompatible changes in the ReaPack structure, upgrading requires _uninstalling the old version_ and installing the new one.

I did warn you this was alpha software, right? 

Follow these steps to uninstall the old version:

Close current project (if one is open)
Menu: Extensions | ReaPack | Manage Repositories
Right click Reaticulate and click Uninstall
Click ok and say yes to the prompt
Restart Reaper (necessary to stop existing Reaticulate instance)

And now follow the installation instructions.

*Full Change Log*
Again, please read the 0.2.0 announcement on the website for much more detail.

_New Features_

Added support for MIDI CC feedback to a control surface or other controller
Articulation output events may refer to other articulations in the same bank via new 'art' output type (#18)
Articulations can now be inserted from the arrange view (or MIDI editor without step input needing to be enabled) by right clicking the articulation button (#28)
Banks can now specify which CCs should be chased. Factory banks are much more selective about what's chased. (#33)
Added support for conditional output events, where output events may now be optionally dependent on the state of articulations in other groups (#32)
Output events to specific target MIDI channels can now be optionally configured to not affect future routing (#30)
Added Settings UI to configure Reaticulate to autostart when Reaper starts


_Minor Enhancements_

Spacebar in Reaticulate's window will now toggle transport and focus arrange view
Bank list in track configuration can now be reordered via drag-and-drop (#37)
Ctrl-left/right now skips words in the articulation filter text input box (#9)
Existing program changes at edit cursor will be removed before inserting a new one (#35)

_Bug fixes_

Fixed problem where UI may not use correct background color from theme
Fixed parsing of invalid colors and icons (#13)
Fixed "Add Reaticulate FX" button not working after first install (#15)
Fixed ultra critical bug where trill-min2 and trill-maj2 icons were swapped (#16)
Fixed routing issue when articulation had no output events defined (#27)
For articulations with multiple note outputs, all note-ons will now be sent before any note-offs (#20)
Articulations with multiple note-hold outputs now works as expected (#26)
Fixed embarrasing bug where channel 16 couldn't be used for bank's source channel
Reduced the likelihood of Reaticulate munging the last touched FX
Other minor bug fixes


----------



## G-Sun

I've been trying Reaticulate with Soundirons Voices of Rapture (Solo voices)
and I find it really amazing. Outstanding work!


----------



## Levitanus

Is there more or less centralized repository of banks?
I know only of two on the issues page on GitHub, but surely someone has already done more)
SampleModeling brass for example?


----------



## G-Sun

Yes, ideally there should be a place to share user-banks that would be useful to others.
Programming these entries are the hardest part of using Rearticulate.
A few suggestions:
- Reaper stash
- User banks get approved and included in Factory banks
- Github?
- Forum-threads (not the best)


----------



## tack

Levitanus said:


> Is there more or less centralized repository of banks?


Not yet. I haven't received a lot of contributions myself. I've had some ideas churning in my mind to provide a Stash-like capability for user submitted banks. In fact, I'm increasingly unsure if the factory bank approach is the way to go. I'm thinking that a repository of user submissions with the ability for others to vote on quality is the better way. Ideally this capability to submit, browse and vote was provided in the GUI. 

Because as is probably apparent to everyone including me, any process that involves yours truly as a bottleneck is not going to go well. 

So, ultimately it is something I want to look at after the bank GUI (which is in progress) and some core work on how banks are stored and managed in a way that allows for changes without breaking project compatibility. (I don't see any good solution except to store banks inside the project itself, as opposed to the current method which is global.)


----------



## G-Sun

Thanks! I'll share banks in the Reaper-thread/stash when I feel they work fine.

Bank GUI with editing? That could be very very helpful

A question about storing. What works of project-templates, track templates? Any plans for instrument presets (banks, source, destination)?


----------



## aristoxenus

Has Divico finished creating a User Bank for Hollywood Strings?
This would be a really welcome thing for EastWest users. It would be worth paying for.

Tom Wagner


----------



## Jaybee

@tack Late to the party (as usual) here but just wanted to say that having recently had time to install Reaticulate and get to grips with it I think it's an absolutely _brilliant_ articulation management system and I've already started "rolling my own" multis, based on the examples on your site. A thousand thanks, this is even better than using Touch OSC (which I can now free up for triggering scripts & macros etc). Reaticulate combined with the fine work on envelope/CC lanes by @pmcrockett is making Reaper into a really nice place to work with multi-articulation sample libraries. Cheers!


----------



## Jaybee

@tack You see I spoke to soon....  I'm redoing my template so that my strings/woods/brass patches are split into long & short outputs by creating a multi (both on same Midi Ch A1) containing two instances of a multi articulation patch (set to outputs 1&2 for longs 3&4 for shorts), loading only the longs in the first instance (to route to 1&2), only the shorts in the second (to route to 3&4) and using Reaticulate to switch across all the artics via UACC. Thus allowing me to write long & short Midi on one track but have separate mixing options. All working wonderfully until..... 

CSS. I want to split a CSS section (say 1st Violins) into longs and shorts but CSS has other ideas. The keyswitches seem to be sticky so that even if the second instance of shorts (all longs unloaded) is triggered, the first instance still plays it's last triggered patch in the longs (unlike UACC of course which switches away). 

I've spent a few hours today trying to get my head round this (is it something to do with using note rather than CC58 for CSS?) but I'm not au fait enough yet with the multi-switching of Reaticulate to do manage this. Any ideas would be very much appreciated.. Thanks!


----------



## Jaybee

> CSS. I want to split a CSS section (say 1st Violins) into longs and shorts but CSS has other ideas. The keyswitches seem to be sticky so that even if the second instance of shorts (all longs unloaded) is triggered, the first instance still plays it's last triggered patch in the longs (unlike UACC of course which switches away).



**SOLVED**

Would you believe it, the next thing I tried cured it... I added another bank of Reaticulate so put some long artics in Bank 1 listening to Midi Ch1 and short artics into Bank 2 listening to Ch2 with both input sources set to omni. Now, as with UACC, only one articulation at a time triggers. Not sure if it's the most efficient way to accomplish the split but it's working!


----------



## Levitanus

Jaybee, You can send for several channels from one bank indeed.


----------



## Jaybee

Levitanus said:


> Jaybee, You can send for several channels from one bank indeed.



Thanks! Will take a closer look. Still cutting my teeth on this code!


----------



## tack

Jaybee said:


> Would you believe it, the next thing I tried cured it... I added another bank of Reaticulate so put some long artics in Bank 1 listening to Midi Ch1 and short artics into Bank 2 listening to Ch2 with both input sources set to omni. Now, as with UACC, only one articulation at a time triggers. Not sure if it's the most efficient way to accomplish the split but it's working!


That'll certainly do it. As Levitanus said, you can also specify the destination channel per articulation. This means you're overriding the target channel as specified in the track config.

So instead of:



Code:


//! c=short i=spiccato o=note:29,1
42 spiccato


You have:



Code:


//! c=short i=spiccato [email protected]:29,1
42 spiccato


Then you can combine longs and shorts (explicitly specifying [email protected] for longs and [email protected] for shorts) into one bank representing your custom multi.


----------



## Jaybee

Fantastic, thank you @tack, I had the @channel in the wrong place. So close...haha...


----------



## Ivan Duch

Hey @tack, really amazing piece of software. I switched from Studio One to Repear because of the notation and your plugin. I then discovered it was way better in so many ways. So thanks for the hard work.

I've been using reaticulate with all my libraries but I'm trying to make it work with Kontakt instances where I want to be able to switch between different channels for the articulations.

So I created this just for testing:



Code:


//! g="Audibro/LASS" n="1st Vls"

Bank 6 6 LASS - 1st Vls

//! c=long-light i=note-whole [email protected]
1 long notes

//! c=long-light i=staccato [email protected]
2 spiccato



The orchestral template I created has a main track with the Kontakt instance (one for brass, other for strings, etc) and several other midi channels routed to that main one in a specific channel. I later realized that didn't work for channel switching.

So I'm trying to route midi to Kontakt in a way that allows me to use Reaticulate channel switching feature properly. Any recommendations? What I did so far is to route the track to Midi All -> All. But that is behaving weirdly.

Thanks a lot,

Ivan


----------



## tack

Ivan Duch said:


> The orchestral template I created has a main track with the Kontakt instance (one for brass, other for strings, etc) and several other midi channels routed to that main one in a specific channel. I later realized that didn't work for channel switching.


The example code you gave would be for a conventional multi, where within Kontakt you had a longs patch on channel 1 and a spiccato patch on channel 2.

It sounds like your actual Kontakt setup is different. Can you expand a bit more on what patches you have on which channels, and how you'd like it to behave overall? Armed with that, I should be able to give you better advice.


----------



## Ivan Duch

tack said:


> Can you expand a bit more on what patches you have on which channels, and how you'd like it to behave overall? Armed with that, I should be able to give you better advice.



Thanks for the answer.

What I'm testing right now is the following:

1. One main track for the LASS strings kontakt instance.
2. One track for 1st Violins which sends midi All -> All (All -> channel 1 didn't work) to the main track with the Kontakt instance.
3. That 1st violins track loads the reaticulate user bank I posted above.
4. In the Kontakt instance I load a full legato patch in channel 1 and a spiccato patch in channel 2. Separately. I'm not sure if that's considered a multi but I did exactly what you did in your video. Where you show how to layer to different libraries.

Problems I'm getting:

As I click in the different articulations, all seems to be routed to channel 2 instead of channel one. While being in channel 01 in the articulation filter inside reaticulate.

If I switch to channel 02 in reaticulate. Then I get to be able to switch between both articulation correctly. (this is new, just realized this). So it seems like it sorts of work this way. But I don't understand why do I have to pick channel 2 in Reaticulate for it to work.


----------



## tack

Ivan Duch said:


> 1. One main track for the LASS strings kontakt instance.
> 2. One track for 1st Violins which sends midi All -> All (All -> channel 1 didn't work) to the main track with the Kontakt instance.


The image you showed of your track layout was that your 1st violins track is a child of your LASS Strings track. So you actually don't need to setup any special sends here -- just let Reaper's normal child->parent routing take its course.

In other words, you can remove all specific sends, and make sure your child tracks have the "Parent send" checked in their routing window (it is enabled by default).




Ivan Duch said:


> 4. In the Kontakt instance I load a full legato patch in channel 1 and a spiccato patch in channel 2. Separately. I'm not sure if that's considered a multi but I did exactly what you did in your video. Where you show how to layer to different libraries.


Yep that qualifies as a multi. 



Ivan Duch said:


> As I click in the different articulations, all seems to be routed to channel 2 instead of channel one. While being in channel 01 in the articulation filter inside reaticulate.


The grid of 16 channels there is called the "default channel" which you can read about here.



Ivan Duch said:


> If I switch to channel 02 in reaticulate. Then I get to be able to switch between both articulation correctly. (this is new, just realized this). So it seems like it sorts of work this way. But I don't understand why do I have to pick channel 2 in Reaticulate for it to work.


The only thing I can think of is that you're actually sending your MIDI from your keyboard on channel 2. Then when you set the default channel to 2 and click the articulations, it creates a mapping from source channel 2 (from your MIDI controller) to the Kontakt instance on either ch1 or ch2.

Let's take a step back and cover all this from the top. Using your approach with the folder track, here's what I'd do:

Kontakt on your parent track, as you have, loaded with different articulations on different channels as a conventional multi. In this example, to get us started, you have V1 longs on ch1 and V1 spiccato on ch2.
V1 child track. No special sends, just default parent routing. Track is configured for MIDI input on all channels as you normally do in Reaper.
V1 child track has Reaticulate FX. The bank you pasted earlier is added to the track, with Omni -> Source in the Reaticulate track configuration. (The target doesn't really matter here, because you're defining the target channel per articulation so it overrides whatever you use there.)
Send from your MIDI controller on ch1. Select ch1 as your default channel in Reaticulate's UI.
Now when you click articulations, it will route from ch1 to the target channel as defined by the bank. MIDI sent from your controller on channel 1 will route to the patch on the channel for the activated articulation

A quick and dirty video demonstration using your bank, except I used a couple patches from Spitfire Chamber Strings as I don't have LASS.


----------



## Ivan Duch

Wow, thanks a lot @tack! Seriously! The video was really helpful. 


In the end the issue was mainly wrong midi routing and just sending to parent makes it way simpler (great tip there). 

The issue with it sending to midi channel 2 was the midi controller as you suggested. I wouldn't have guessed that in a million years. 
Thanks again! I'll go back to enjoying Reaper and this great plugin. 

p.s. I've been creating Reaticulate banks for most of my libraries so if anyone could benefit from them just let me know where to post them.


----------



## Vadium

is it possible to switch between different instruments (kontakt, play, uvi) from one articulation list? (to switch an output MIDI port additionally to MIDI channel)


----------



## tack

Vadium said:


> is it possible to switch between different instruments (kontakt, play, uvi) from one articulation list?


Sure, this would be possible. At the end of the day, activating an articulation with Reaticulate can send pretty much whatever MIDI you need and route to any channel. So as long as the different instruments responded on different MIDI channels, you could do this with Reaper.

Two possible Reaper setups come to mind:

Have separate tracks for Kontakt, Play, UVI, etc. and then have your combined all-instruments-in-one track send to the VI tracks depending on the channel.
Use one track, put all the instruments on separate FX slots on that track, and for those FX instances, set the MIDI output mode to "Merges with MIDI bus" in Reaper. Configure each FX to do what they need to do on the desired MIDI channel (but this only works if they ignore MIDI events from unrelated channels as those are used by the other FX instances).
In either case, you'd create a bank with Reaticulate like a standard multitimbral instrument (discussed earlier) where articulations are routing to different MIDI channels. The appropriate VI would handle the various channels based on how you configured them with Reaper.


----------



## Vadium

tack said:


> you could do this with Reaper


As I understand, these variants works for a half-empty instruments, coupled to one: ch1-3 from Kontakt, ch4-7 from Play etc.
will it work if all instruments are full, all 16 channels are used in each of 3 Play instances?


----------



## tack

Vadium said:


> As I understand, these variants works for a half-empty instruments, coupled to one: ch1-3 from Kontakt, ch4-7 from Play etc.
> will it work if all instruments are full, all 16 channels are used in each of 3 Play instances?


Your understanding was right. The problem if they're all full with 16 channels is we'd need some way to address the instances independently.

Technically Reaper has this facility in that you could place the different VI instances on different MIDI buses. But Reaticulate itself only addresses bus 1. It might be possible to add this support in future, but using multiple MIDI buses isn't terribly common and so there are probably some gotchas and other corner cases. (Also it'd be quite invasive to implement and has a high likelihood I'd break stuff, so already there's a good reason not to press my luck.)

The only other thing I can think of is if there was some custom MIDI message that could be used to activate/deactivate instances for processing MIDI, and then you just have Reaticulate send these custom messages for each articulation (to enable the instance we want to target, and disable the others). I know that this could be done with a custom Kontakt multiscript. So if you had 16 channels full with Kontakt, we could probably work something out. Play, UVI, etc. I don't know them well enough to know if this level of customization is possible.


----------



## Levitanus

Vadium said:


> is it possible to switch between different instruments (kontakt, play, uvi) from one articulation list? (to switch an output MIDI port additionally to MIDI channel)


----------



## Levitanus

tack said:


> isn't terribly common


Hmmm... Let me think...


----------



## Jaybee

tack said:


> Sure, this would be possible. At the end of the day, activating an articulation with Reaticulate can send pretty much whatever MIDI you need and route to any channel. So as long as the different instruments responded on different MIDI channels, you could do this with Reaper.



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 [email protected]
1 long
//! c=long i=note-whole [email protected]
2 ensemble
//! c=short i=staccato [email protected]
40 short

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


----------



## tack

Jaybee said:


> and then adding a child track that has Reaticulate on using the following bank routing:


You shouldn't need the child track. It ought to work putting Reaticulate on the same track as the 3 VSTi instances as well.


----------



## Jaybee

tack said:


> You shouldn't need the child track. It ought to work putting Reaticulate on the same track as the 3 VSTi instances as well.



That does work too, with the exception that my Nanokontrol ( controlling cc 1&11) only responds to the vsti on Ch1 and not those on Ch2 or 3... unless I'm being super dim (very possible!)


----------



## Vadium

Feature request - "organ keyswitch mode" for organ and accordion stops. If organ keyboard has, for examples, 14 stops, it needs 14 keyswitches in toggle mode for each stop, and all 14 are must be able to be active at once in one group (for tutti), or any <14 for combinations


----------



## Headlands

Reaper is getting very close to making me permanently retire Cubase. This is great!


----------



## Vadium

tack said:


> Of course the I'm-totally-working-on-it-and-it's-coming-soon-honest GUI for building banks will make all this easy to configure, but in the meantime, as we're all forced to sling together our banks in a text editor, I'm considering this sort of syntax:
> 
> 
> 
> Code:
> 
> 
> //! c=legato i=legato o=note:24,127/note:34,65
> //! dc=vel:0-127,-100/vel+leg:0-64,-333/vel+leg:65-100,-250/vel+leg:101-127,-125
> 21 legato adv
> 
> Again, the scary syntax will eventually be hidden behind a pretty GUI, but the idea is that we have a new articulation level attribute 'dc' (delay compensation), and in the above example, that bit of dense and confusing syntax would:



Is delay compensation not implementet in current version of Reatiqulate? I has try to add this code, but it seems as not working

And, is it possible to obtain this plugin CSS autodelay from your video?


----------



## tack

Vadium said:


> Is delay compensation not implementet in current version of Reatiqulate? I has try to add this code, but it seems as not working
> 
> And, is it possible to obtain this plugin CSS autodelay from your video?


Sorry, it's not yet integrated into Reaticulate or otherwise released. That was just a very rough proof of concept, to establish it could work.

Wow, was that back in May? Time flies. :(


----------



## Jaybee

tack said:


> You shouldn't need the child track. It ought to work putting Reaticulate on the same track as the 3 VSTi instances as well.



Indeed it does! 

My fault: I had not set the I/O MIDI in the FX instance to "Merges with MIDI bus"... Doh!


----------



## Vadium

it is strange, but same CSS control panel works ok in Cubase with expression map and buggy with Reaper/Reatiqulate:
https://vi-control.net/community/th...tion-other-features.70174/page-2#post-4290132


----------



## Jaybee

Vadium said:


> it is strange, but same CSS control panel works ok in Cubase with expression map and buggy with Reaper/Reatiqulate:
> https://vi-control.net/community/th...tion-other-features.70174/page-2#post-4290132



Weird. I'm not seeing any issues with the stock Reaticulate CSS Section or Ensemble banks here. All working fine 'out of the box'. 

Just saw your 'CSS autodelay' request in a post above. Try the 'Reaper toolbox' from @calebfaith There's some very good ways to tackle the CSS note delays depending on how your workflow is set up. I use the 'select in the Midi Editor' techinique as with Reaticulate I'm sharing several articulations on one track.


----------



## Vadium

a question related remote controllers feedback. I try to see on the midi monitor what's going out from reaticulate to control surface (Bidule 1 bus). All I see is CC1=34 if I run actions Enable/disable/toggle remote device, and nothing else. If I switch articulations no any messages received by midi monitor. what's wrong?


----------



## tack

Vadium said:


> a question related remote controllers feedback. I try to see on the midi monitor what's going out from reaticulate to control surface (Bidule 1 bus). All I see is CC1=34 if I run actions Enable/disable/toggle remote device, and nothing else. If I switch articulations no any messages received by midi monitor. what's wrong?


If CC1 is the only CC you've sent on the track, that's the only one Reaticulate will feed back to the MIDI control surface. Articulation changes are program change events rather than CCs, so they aren't being passed to the control surface.


----------



## Vadium

tack said:


> so they aren't being passed to the control surface.


in other words, if I switch articulation by mouse in Reaper, remote device will not know about it?


----------



## tack

Vadium said:


> in other words, if I switch articulation by mouse in Reaper, remote device will not know about it?


Yeah, it was really meant as an ancillary feature specifically for syncing CCs.

I can see the use-case for sending articulation changes as well. I'll add that feature. (Tracked here.)


----------



## Vadium

tack said:


> I'll add that feature


Nice!
Is anybody has tried to switch articulation in Reaticulate by tablet (Lemur, TouchOSC?) if yes, any suggestion how to?


----------



## tack

Vadium said:


> Is anybody has tried to switch articulation in Reaticulate by tablet (Lemur, TouchOSC?) if yes, any suggestion how to?


The way to do this is to allocate a CC to articulation switching, say CC119 (which is what I use) and then have TouchOSC (or whatever) send out values on CC119. Then bind CC119 to one of the "Activate articulation by CC" actions (probably the "default channel" unless you want to address specific channels).

Then when you send CC119 value 42, it will activate the articulation for program 42 on the current track.


----------



## Jaybee

@tack Weird things are happening....  To my knowledge I've not changed a thing but wondering if I've accidentally _unhidden_ something .....

*****SOLVED***** *
Had TouchOSC feedback enabled in reaticulate prefs. Why is it that posting on a public forum unlocks the solution...?!  I'll leave the problem here in case anyone else does it accidentally too! 


Like most, I've got a few Kontakt setups with various routing saved as _track templates_. Today, I noticed as soon as reaticulate.jsfx is added to an existing Kontakt track template (via the 'add' button in the Reaticulate panel) I am seeing a send (I didn't add) appear in the track send-list routed to 'Reaticulate MIDI Feedback on B16'? Screenshot below.

Never seen this before with reaticulate and I've added many many tracks to my template in exactly the same way without issue - i.e. track template containing Kontakt then add reaticulate or lately, I have a track template *with* reaticulate saved as the first item. It's suddenly happening on that too. I'm on 5.961 but reinstalled 5.95 as it wasn't happening then and it's still happening there so pretty sure it's not a Reaper build.






Happens with a fresh track set to record midi input too. As soon as I add reaticulate to the track I see the send magically appear!


----------



## tack

Jaybee said:


> Had TouchOSC feedback enabled in reaticulate prefs. Why is it that posting on a public forum unlocks the solution...?!  I'll leave the problem here in case anyone else does it accidentally too!


Glad you sorted it out 

Yes, this is how the MIDI feedback feature works: Reaticulate creates a hidden track for MIDI feedback with a special JSFX that does some MIDI event filtering/translation and ultimately outputs to your desired MIDI device. Then when you select a track in your project that has Reaticulate installed on it, it automagically sets up a send to the hidden feedback track (and automagically removes the send when you click away).


----------



## Jaybee

tack said:


> Glad you sorted it out
> 
> Yes, this is how the MIDI feedback feature works: Reaticulate creates a hidden track for MIDI feedback with a special JSFX that does some MIDI event filtering/translation and ultimately outputs to your desired MIDI device. Then when you select a track in your project that has Reaticulate installed on it, it automagically sets up a send to the hidden feedback track (and automagically removes the send when you click away).



Excellent, I was doing some TouchOSC experiments over the weekend with Reaper.osc and of course, the minute I posted to the thread I remembered I may have set the transmit status in Reaticulate to 'on'...  Fantastic program though, really getting comfortable with it now


----------



## Vadium

tack said:


> Do you mean that the list autoscrolls during playback as different articulations are selected?


Yes! I mean if I select an articulation from external device by CC or PrCh, and this articulation exist in low end of big articulation list, I cann't see, which one is currently selected - to do this, you need to perform an extra movement - do a list scrolling.. Zooming is not a way, because words brings to be very small and invisible.

If put Reaticulate as separate window to second monitor, it is possible to use it with tablet for indication/selection. But all articulations in one column list is not such usable - a best way is to see all articulations at once without any scrolling - as multiple-column spreadsheet


----------



## tack

Vadium said:


> I mean if I select an articulation from external device by CC or PrCh, and this articulation exist in low end of big articulation list, I cann't see, which one is currently selected - to do this, you need to perform an extra movement


Ah yes, I see. A sort of "scroll position follows active articulation" type of behaviour. This makes sense and isn't difficult. Tracked here.

The question I put to everyone is: should this be an configurable option, or should that just be the default behaviour? It would mean for long lists during playback you would see the list jump around as articulations get activated. But at least then it would ensure the active articulation is always visible on screen. Seems like a reasonable tradeoff and I'm wondering if I shouldn't bother making it optional and just make that the default behaviour?



Vadium said:


> But all articulations in one column list is not such usable - a best way is to see all articulations at once without any scrolling - as multiple-column spreadsheet


Yeah, I understand the use-case for that (undocked Reaticulate windows, mainly). It's has been requested before and I'm open to the idea. I just had an idea of how it could be implemented without significant effort (making a small compromise in that each bank will have its own independent grid, so multiple banks will always be stacked on top of each other). Tracked here.


----------



## Vadium

tack said:


> or should that just be the default behaviour?


I think, it must be as default. 
For example, in Cubase users can see in the list only 12 articulations at once, without autoscroll - it is that headache, why I going from Cubase to Reaper with Reaticulate


----------



## Robin Wade

+1 for default behaviour


----------



## Audio Birdi

+1 Default behaviour please!


----------



## tack

Sold. Made it default behavior for the next release.


----------



## Audio Birdi

@tack most likely a silly question, will there be beta testing needed to be done for the next release?


----------



## tack

Replying here from this thread, just as it's more on-topic here.


robgb said:


> By the way, is there a way to control host automation in Kontakt with Reaticulate?


Indirectly, through MIDI learn in Reaper.

In the FX window for Kontakt, click the Param button at the top of the FX window, and then FX Parameter List | Learn. Once you can associate a MIDI event with one of the host automation parameters, then you can use Reaticulate to control it via an output event for the articulation.


----------



## tack

Audio Birdi said:


> @tack most likely a silly question, will there be beta testing needed to be done for the next release?


Definitely. And I should have a prerelease out later this week. (Sorry about the delayed reply.)


----------



## Audio Birdi

tack said:


> Definitely. And I should have a prerelease out later this week. (Sorry about the delayed reply.)


No problem! at all  Looking forward to assisting with testing! :D 

Since REAPER 6 is probably forever away and most likely will have lesser features as reaticulate. I'm sticking with it for the long term! :D


----------



## axb312

Will post some banks I've worked on. I'm not too particular about icons, colors etc. but the banks should work pretty well. Let me know if you run into any issues:


Chris Hein Winds:

//! g="Chris Hein/Winds"
//! m="CC1 - Vibrato, CC96 - Flutter tongue, CC98 - Trill minor, CC94 - Trill major"
//! chase=1
Bank 1 1 Chris Hein Winds
//! c=long i=note-whole o=note:25
25 Sustain
//! c=long i=note-whole o=note:24
24 Sustain Vibrato
//! c=legato i=legato o=note:26
26 Dynamic Expression Long
//! c=legato i=legato o=note:27
27 Dynamic Expression Short
//! c=fx i=multitongues o=note:28
28 Flutter Tongue
//! c=short-light i=staccato o=note:29
29 Short 1
//! c=short-light i=staccato o=note:30
30 Short 2
//! c=short-light i=staccato o=note:31
31 Short 3
//! c=short-light i=staccato o=note:32
32 Short 4
//! c=short-light i=staccato o=note:33
33 Short 5
//! c=short-light i=staccato o=note:34
34 Short 6
//! c=fx i=run-major o=note:35
35 Run Up
//! c=fx i=run-major o=note:38
38 Run Down
//! c=fx i=trill-min3 o=note:36
36 Trill Minor
//! c=fx i=trill-maj2 o=note:37
37 Trill Major
//! c=default i=trill-min3 o=note:44
44 Trill Minor Hotkey
//! c=default i=trill-maj2 o=note:43
43 Trill Major Hotkey


----------



## axb312

//! g="Cinematic Series/Studio Brass" 
//! chase=1,2,5,11,20,64-69

Bank 2 1 Cinematic Studio Brass Section

//! c=legato i=legato o=note:24,1/note:34,65
20 Legato
//! c=long i=note-whole o=note:24,1/note:34,1
21 Sustain
//! c=short i=spiccato o=note:29,1

42 Repetitions
//! c=short i=spiccato o=note:29,33
41 Staccatissimo
//! c=short i=staccato o=note:29,65
40 Staccato
//! c=short i=sfz o=note:29,127
54 Sfz

//! c=short i=staccato o=note:25,1
1 Short Mutes
//! c=long i=note-whole o=note:25,65/note:34,1
2 Sustained mutes
//! c=legato i=con-sord o=note:25,65/note:34,65
3 Legato mutes

//! c=fx i=multitongues o=note:28,1/note:34,1
4 Sustained Fluttertongue
//! c=fx i=multitongues o=note:28,1/note:34,65
5 Legato Fluttertongue

//! c=fx i=trill-maj2 o=note:27,1/note:34,1
6 Sustained Trills
//! c=fx i=trill-maj2 o=note:27,1/note:34,65
7 Legato Trills

//! c=short i=multitongues o=note:26
8 Double Tongue

//! c=short i=marcato o=note:30,1/note:34,1
9 Marcato w/o repetition overlay
//! c=short i=marcato o=note:30,1/note:34,65
10 Marcato legato w/o repetition overlay
//! c=short i=marcato o=note:30,127/note:34,1
11 Marcato w repetition overlay
//! c=short i=marcato o=note:30,127/note:34,65
12 Marcato legato w repetition overlay

//! c=fx i=rip o=note:31
13 Rips


----------



## axb312

Embertone Herring Clarinet:
CC15 is set to vibrato and CC96 to flutter.

//! g="Embertone/Herring Clarinet"
//! chase=1,15,96

//! m="Velocity less than 13 is portamento. Velocity at 127 is ornament"

Bank 3 1 Embertone Herring Clarinet

//! c=legato i=legato o=note:36/note:41
20 Legato
//! c=legato i=legato o=note:36/note:37
21 Tongued Legato

//! c=short i=staccato o=note:38
40 Short

//! c=fx i=trill-min3 o=note:39
36 Trill Minor hotkey
//! c=fx i=trill-maj2 o=note:40
37 Trill Major hotkey

//----------------------------------------------------------------------------


----------



## axb312

8dio Claire Alto flute:

//! g="8Dio/Claire Alto Flute" n="Legato"
//! chase=1,11

Bank 7 1 Legato

//! c=legato i=legato o=note:24
20 Natural Legato

//! c=legato i=legato o=note:25
21 Soft 1 - Gentle, light vibrato

//! c=legato i=legato o=note:26
22 Soft 2 - Gentle, progressing vibrato

//! c=legato i=legato o=note:27
23 Medium

//! c=legato i=legato o=note:28
24 Strong

//! c=short i=staccato o=note:30
25 Staccattissimo

//! c=short i=marcato o=note:31
26 Marcato

//----------------------------------------------------------------------------

//! g="8Dio/Claire Alto Flute" n="Trills"
//! chase=1,11

Bank 7 2 Trills

//! c=fx i=trill-min3 o=note:28
20 Minor 2nd Trill

//! c=fx i=trill-maj2 o=note:29
21 Major 2nd Trill

//----------------------------------------------------------------------------

//! g="8Dio/Claire Alto Flute" n="Bonus"
//! chase=1,11

Bank 7 3 Bonus

//! c=fx i=legato-runs o=note:24
20 Major run

//! c=fx i=legato-runs o=note:25
21 Major run 2 Oct

//! c=fx i=legato-runs o=note:26
22 Minor run up

//! c=fx i=legato-runs o=note:27
23 Minor run 2 Oct

//! c=fx i=fx o=note:28
24 Breaths

//! c=fx i=fx o=note:29
25 Valve clicks
//----------------------------------------------------------------------------


----------



## axb312

@tack, could you tell me the best way to use Re-articulate with somthing like the ISW Ventus Bansuri.

This has separate keyswitches for attack and release ornaments, on the same note.

Which basically means keyswitches have to be stacked.

I do not want to code in every possible combination in the bank file.

Thank you in advance!


----------



## tack

axb312 said:


> @tack, could you tell me the best way to use Re-articulate with somthing like the ISW Ventus Bansuri. This has separate keyswitches for attack and release ornaments, on the same note. Which basically means keyswitches have to be stacked.


Reaticulate doesn't handle this case as nicely as it might.

The obvious way to deal with this is to use different groups for attack and release ornaments. The limitation here is that Reaper doesn't understand Reaticulate's notion of groups and so it'll only chase the most recent program change, regardless of the group. In practice, this means that you need to ensure the playhead is positioned before all relevant program changes to get proper playback.

I don't know how to solve this (so that chasing will Just Work across all groups regardless of playhead position). Implementing customized chasing behavior in Reaticulate is really daunting, and I'm not sure if it could be done performantly. The only implementation I can think of is, when transport switches to playing or recording, have Reaticulate enumerate every MIDI item under the playhead, crawling backwards looking for all program changes until all applicable groups are found. If anyone has better ideas I'd be interested. It's on my to-do list to prototype that and see how badly it sucks on large projects (or maybe be surprised to learn it doesn't).

In the meantime, one workaround is to use separate banks for attack and release, and on the track definition, map the banks onto different source channels, say channel 1 for attacks and channel 2 for releases. They can both still ultimately route to channel 1 (or whatever) where your patch is in Kontakt, but then the program changes for these two types of articulations will be on different channels in your MIDI item. Because of this, Reaper will chase them properly.

Hope any of that made sense. 

And thanks for sharing those banks!


----------



## pmcrockett

tack said:


> I don't know how to solve this (so that chasing will Just Work across all groups regardless of playhead position). Implementing customized chasing behavior in Reaticulate is really daunting, and I'm not sure if it could be done performantly. The only implementation I can think of is, when transport switches to playing or recording, have Reaticulate enumerate every MIDI item under the playhead, crawling backwards looking for all program changes until all applicable groups are found. If anyone has better ideas I'd be interested. It's on my to-do list to prototype that and see how badly it sucks on large projects (or maybe be surprised to learn it doesn't).


I'm not certain how it would scale on a project with hundreds of MIDI tracks that need to be chased, but my experience has been that Reaper is reasonably fast at MIDI processing unless you're doing things that involve tons of iteration. I think just chasing program changes wouldn't hit performance too hard.

If the performance hit becomes enough of an issue that it lags the start of playback/recording, you might be able to set it up to chase and cache the program changes at a better time and then retrieve them on playback/record -- for example, a table storing the program change state for each measure of each track that gets built initially when Reaticulate launches and then updates itself every time MIDI data on a track changes. I think there's a hash compare function that will tell you when a MIDI change occurs on a track. That way, after the initial table is built, you'd only ever need to chase program changes on one track at a time, and never on playback/record.


----------



## axb312

tack said:


> Reaticulate doesn't handle this case as nicely as it might.
> 
> The obvious way to deal with this is to use different groups for attack and release ornaments. The limitation here is that Reaper doesn't understand Reaticulate's notion of groups and so it'll only chase the most recent program change, regardless of the group. In practice, this means that you need to ensure the playhead is positioned before all relevant program changes to get proper playback.
> 
> I don't know how to solve this (so that chasing will Just Work across all groups regardless of playhead position). Implementing customized chasing behavior in Reaticulate is really daunting, and I'm not sure if it could be done performantly. The only implementation I can think of is, when transport switches to playing or recording, have Reaticulate enumerate every MIDI item under the playhead, crawling backwards looking for all program changes until all applicable groups are found. If anyone has better ideas I'd be interested. It's on my to-do list to prototype that and see how badly it sucks on large projects (or maybe be surprised to learn it doesn't).
> 
> In the meantime, one workaround is to use separate banks for attack and release, and on the track definition, map the banks onto different source channels, say channel 1 for attacks and channel 2 for releases. They can both still ultimately route to channel 1 (or whatever) where your patch is in Kontakt, but then the program changes for these two types of articulations will be on different channels in your MIDI item. Because of this, Reaper will chase them properly.
> 
> Hope any of that made sense.
> 
> And thanks for sharing those banks!



Hi Tack ,

That last bit sort of made sense. How do I get different channels on my Midi item though?

So say, I have bank 1 - attacks
bank 2 - releases
Do I configure these as normal or do I need to include some Midi channel info there?

Then do I add both banks on Midi Channel 1 in rearticulate? (I assume this is what numbers 1-16 at the top of the window mean).

Do I then need to route two Midi events to one kontakt instance and have attacks on one and releases on the other?


----------



## tack

axb312 said:


> That last bit sort of made sense. How do I get different channels on my Midi item though?



Supposing you have your ISW patch in Kontakt set to channel 1, add the two banks to the track like so:

Bank 1 - Attacks: Ch 1 -> Ch 1
Bank 2 - Releases: Ch 2 -> Ch 1



axb312 said:


> Then do I add both banks on Midi Channel 1 in rearticulate? (I assume this is what numbers 1-16 at the top of the window mean).


The 1-16 buttons are to control what's called the default channel. That's documented here.

The default channel comes into play when you have the source channel for the banks (as they are configured on the current track) set to Omni. When set to Omni, this allows the user to have different source channels set to different articulations using the same bank. The page I linked to above describes this as well in more detail. (The default mapping of Omni -> Source works fine for most use-cases.)

But when you specifically map a bank to a particular source channel -- ch1 and ch2 in the above cases -- then the default channel buttons aren't relevant. When you insert an articulation from a bank that's mapped a specific channel, the program change event will always be assigned that specific source channel.




axb312 said:


> Do I then need to route two Midi events to one kontakt instance and have attacks on one and releases on the other?


No custom routing is needed. Sit your ISW patch on channel 1, and Reaticulate takes care of ensuring program changes on channel 2 (for releases) will be controlling the patch in Kontakt on channel 1.

All this can get a bit complicated, admittedly. My goal was to make things reasonably straightforward in the common case, but still make more advanced configurations and channel mappings possible.


----------



## tack

pmcrockett said:


> I think just chasing program changes wouldn't hit performance too hard.


If it was just a matter of enumerating program changes, I think I'd agree. But I don't see a way to do that. I think I'd have to enumerate over _all_ CC events (via MIDI_GetCC() which will also return program changes) which could include quite a large number of CCs used for regular MIDI performance, especially when your CC resolution is quite high. Hence my skepticism about this being able to be done efficiently.



pmcrockett said:


> for example, a table storing the program change state for each measure of each track that gets built initially when Reaticulate launches and then updates itself every time MIDI data on a track changes.


Hm, that's an interesting idea. Unfortunately as far as I can tell this would require continuously polling all MIDI items in the project all the time. Worse still, there doesn't seem to be any kind of timestamp metadata or other means of determining if the item changed since last poll, so it'd require enumerating all CC events on all MIDI items constantly.

Do you see another way?


----------



## pmcrockett

tack said:


> If it was just a matter of enumerating program changes, I think I'd agree. But I don't see a way to do that. I think I'd have to enumerate over _all_ CC events (via MIDI_GetCC() which will also return program changes) which could include quite a large number of CCs used for regular MIDI performance, especially when your CC resolution is quite high. Hence my skepticism about this being able to be done efficiently.
> 
> 
> Hm, that's an interesting idea. Unfortunately as far as I can tell this would require continuously polling all MIDI items in the project all the time. Worse still, there doesn't seem to be any kind of timestamp metadata or other means of determining if the item changed since last poll, so it'd require enumerating all CC events on all MIDI items constantly.
> 
> Do you see another way?


If I understand the reaper.MIDI_GetHash and reaper.MIDI_GetTrackHash functions correctly (I've never actually used them for anything), you would take the hash value of each track periodically and check that value against the hash value that was returned at the last check. If the values differ, it means the MIDI data on that track has changed, so then you compare the new hash value of each take on the track to the old hash values of the takes to find the one that changed, then you crawl through the data on the changed take, then you update the program change table and record the takes' hash values so you can check against them in the future. The hashes should save you from having to evaluate the actual data until the data changes. You'd still have to evaluate track hashes continually, but that shouldn't impact performance.

Even large takes can be evaluated pretty quickly. I'm using an articulation system that reads/writes/interprets the literal MIDI keyswitch data, which involves a huge amount of MIDI processing that goes way beyond just stepping through MIDI events to see what type they are, and while it's not entirely lag free (which is fine because it's effectively a sophisticated editing macro that doesn't have to run on playback), the lag is negligible, and I expect that the lag involved in implementing chased program changes would be even less perceptible. And I think even a lot of the lag in my own code could be optimized out by properly caching data so I don't have to continually run expensive functions.


----------



## tack

pmcrockett said:


> If I understand the reaper.MIDI_GetHash and reaper.MIDI_GetTrackHash functions correctly (I've never actually used them for anything)


Ah, good call. And those are quite speedy functions, clearly the hash value is cached internally.

I actually think your idea here would work to augment my original idea to make it efficient enough that it might be practical.

Chasing is still necessary on transport play/record though, because it's possible for the user to change articulations ad hoc without editing the MIDI item. This means the JSFX on each of the tracks would need to be updated with the programs to chase on each group on all 16 channels each time the edit cursor changes or MIDI data changes.

I've thought through the design and it's pretty complicated. So this will be a future thing for sure.


----------



## tack

Vadium said:


> hm, strange - if I switch short to supershort from Cubase Expression map or just press keyswitch on midi keyboard, all works. If I switch same from Reaticulate - not works (but similar neighboring keyswitches works well) - what's wrong?


First, thanks for doing the video. It's quite useful. 

I do see something weird from Reaticulate here in the MIDI log, where it seems to be duplicating the output events, once the right way (with both note-ons grouped together before note-offs) and once the wrong way (note-on, note-off, note-on, note-off). I've fixed some issues in loosely related areas, so it's possible the latest code will behave better here. If you're willing to try a prerelease, I plan to cut one later today.

Apart from that, I see a couple differences with what Cubase is doing:

Cubase's expression maps are deferring note-offs until the next articulation is activated. The way to reproduce this with Reaticulate is to use _note-hold_ output event types rather than _note_.
Cubase is sending note 24+41 for super short and 24+42 for short. But your Reaticulate bank is sending 24+45 for super short and 24+46 for short.
It's possible changing the above two things will fix your problem, despite what does appear to be a bug in the note behavior (and I'd still be quite interested to know if the latest code behaves the same way).


----------



## Vadium

tack said:


> First, thanks for doing the video. It's quite useful.
> 
> .



Tack, thank you! everything was easier:

It was my mistake - I wrote a wrong notes in Reaticulate list, 45 and 46 instead 41 and 42. It happens in the moment to translate note names to note numbers

Now all works OK without note hold mode.




tack said:


> If you're willing to try a prerelease, I plan to cut one later today.


Yes, it's very appreciate!


----------



## tack

Audio Birdi said:


> No problem! at all  Looking forward to assisting with testing! :D


That's great, thanks! I could use the help. 

I've created a pre-release version of the ReaPack which those of you interested in helping with testing can use. Obviously this isn't recommended for production use.



Code:


http://reaticulate.com/prerelease.xml


More details on how to switch over to it can be found on the download page.

Included in this pre-release:

Activating an articulation now scrolls it into view in the GUI
Articulations are now fed back to control surface
CC0/32 bank select indicates bank for articulation
Articulations can be expressed either as native program change events or custom CC events

Ensure articulations on same MIDI tick as notes are processed before the notes
Improve First Run experience (especially for portable Reaper installations)
Minor cosmetic improvements with drag-and-drop to reorder banks on the track configuration page


----------



## Vadium

Great!
Are there any simple templates for test a feedback from Reaticulate to Lemur or TouchOSC?

I attempt to highlight a button corresponding to selected articulation in Lemur, but my skills in Lemur scripting is not enough for get a feedback - all I can is only send PrCh to Reaticulate, but I have a loop feedback if attempt to return a signal to Lemur - it seems as a routing is not well.

Also, first articulation is not present in a program articulation list - is it a bug? (
(update:
On the other computer first articulation string appears OK!)

//----------------------------------------------------------------------------
//! g=Lemur/test n=Lemur_test_Instrument_1

Bank 10 1 Lemur_test_Instrument_1

//! c=long-light o=note:24
1 Art 1

//! c=long-light o=note:25
2 Art 2

//! c=long-light o=note:26
3 Art 3

//----------------------------------------------------------------------------
//! g=Lemur/test n=Lemur_test_Instrument_2

Bank 10 2 Lemur_test_Instrument_2

//! c=long-light o=note:24
1 Art 1

//! c=long-light o=note:25
2 Art 2

//! c=long-light o=note:26
3 Art 3


----------



## Vadium

Vadium said:


> Also, first articulation is not present in a program articulation list - is it a bug?



update:
On the other computer first articulation strings appears OK!


----------



## Vadium

One articulation still be selected in any case - strange:


//----------------------------------------------------------------------------
//! g=VSL/Chamber_Strings_SY n=VSL_Chamber_Cellos
//! chase=1,2,11

Bank 8 2 VSL_Chamber_Strings_SY_Cellos


//! c=long-light o=note:25,120/note:89,120
0 Long soft

//! c=long-light o=note:25,120/note:90,120
1 Long normal

//! c=long-light o=note:25,120/note:91,120
2 Long marcato

//! c=legato o=note:26,120/note:89,120
3 Legato soft

//! c=legato o=note:26,120/note:90,120
4 Legato normal

//! c=legato o=note:26,120/note:91,120
5 Legato marcato

//! c=legato o=note:26,120/note:92,120
6 Legato fast

//! c=legato o=note:26,120/note:93,120
7 Legato fast marcato

//! c=legato o=note:26,120/note:94,120
8 Legato slur/Portamento

//! c=legato o=note:26,120/note:95,120
9 Legato auto-speed

//! c=long-light o=note:24,120/note:92,120
10 Detache long (2VI,VA and Cello only)

//! c=long-light o=note:24,120/note:91,120
11 Detache (2VI,VA and Cello only)

//! c=long-light o=note:28,120/note:89,120
12 Tremolo

//! c=long-light o=note:28,120/note:90,120
13 Tremolo marcato

//! c=short o=note:24,120/note:90,120
14 Staccato

//! c=short o=note:24,120/note:89,120
15 Spiccato

//! c=short o=note:31,120/note:89,120
16 Pizzicato

//! c=short o=note:31,120/note:90,120
17 Snap pizzicato

//! c=long-light o=note:25,120/note:92,120
18 Flautando

//! c=long-light o=note:27,120/note:89,120
19 Sforzato

//! c=long-light o=note:27,120/note:90,120
20 Fortepiano

//! c=long-light o=note:29,120/note:89,120
21 HT trill/Licks up

//! c=long-light o=note:29,120/note:90,120
22 HT trill marcato

//! c=long-light o=note:30,120/note:89,120
23 WT trill/Licks down

//! c=long-light o=note:30,120/note:90,120
24 WT trill marcato

//! c=long-light o=note:27,120/note:91,120
25 Long crescendo

//! c=long-light o=note:27,120/note:92,120
26 Long diminuendo


----------



## tack

Vadium said:


> One articulation still be selected in any case - strange:


Just wanted to mention that I'm away visiting family for Christmas so won't have a chance to dig into this for a few days.

One cursory observation is that you might avoid program 0 as there could be corner cases there.


----------



## axb312

//! g="Embertone/Crystal Flute"
//! chase=1,15,96
//! m="Velocity less than 13 is portamento. Velocity at 127 is ornament"

Bank 3 8 Embertone Crystal Flute

//! c=legato i=legato o=note:59
20 Legato

//! c=long i=note-whole o=note:58
22 Sustain

//! c=short i=staccato o=note:57
40 Short

//! c=fx i=trill-min3 o=note-hold:51
38 Minor 2nd Trill

//! c=fx i=trill-min3 o=note-hold:52
50 Major 2nd Trill

//! c=fx i=trill-min3 o=note-hold:53
51 Minor 3rd Trill

//! c=fx i=trill-min3 o=note:64
36 Ornament Minor
//! c=fx i=trill-maj2 o=note:65
37 Ornament Major


----------



## Dmitry

Hello, sort of like I saw the possibility of delay compensation in this script(fast, slow legato). How to set it up? Or I am wrong?


----------



## Xaviez

@tack First off, thanks for the brilliant plugin, love it.
Now, would you consider hosting user made banks on your website? Hopefully if people would help out submitting their banks, the selection would grow to cover most of the common libraries out there.


----------



## tack

Xaviez said:


> Now, would you consider hosting user made banks on your website? Hopefully if people would help out submitting their banks, the selection would grow to cover most of the common libraries out there.


Yes that's definitely on my mind. Originally I started out with the idea of factory banks -- a curated and quality-controlled set of banks that come bundled with Reaticulate -- but I think a Reaper Stash sort of approach is better, where users can upload their own banks and rate others'.

There are a few more pressing things I need to finalize first.


----------



## robgb

@tack, I tried reading through the Output Events section of the Reaticulate site, but as usual I'm fumbling around for an answer. This probably isn't possible, but I'm wondering if there is a way to program a specific CC to be blocked or disabled? I have an instrument using CC 20 that conflicts with my controller (CC 20 is reserved for another function), but the the developer didn't provide a way to change or disable this particular CC in the instrument. I'm thinking I might use CC Eater to block it at the track level, but would rather not do that if I don't have to.


----------



## tack

robgb said:


> This probably isn't possible, but I'm wondering if there is a way to program a specific CC to be blocked or disabled?


That kind of contextual filtering based on active articulation isn't possible natively with Reaticulate. One idea is to put the MIDI filter after the Reaticulate JSFX, and have Reaticulate send some special MIDI event as part of the articulation output events for each articulation -- to either enable or disable the filter -- and then add a MIDI link to the bypass control of the filter FX. Then Reaticulate could send an event to the downstream filter FX to either enable or disable filtering depending on which articulation was selected.


----------



## robgb

tack said:


> That kind of contextual filtering based on active articulation isn't possible natively with Reaticulate. One idea is to put the MIDI filter after the Reaticulate JSFX, and have Reaticulate send some special MIDI event as part of the articulation output events for each articulation -- to either enable or disable the filter -- and then add a MIDI link to the bypass control of the filter FX. Then Reaticulate could send an event to the downstream filter FX to either enable or disable filtering depending on which articulation was selected.


Good thought. I'll give that a try. Thanks again!


----------



## robgb

Another out of left field question. Is there any code I can use in the Reaticulate lua script that will allow me to change the background color from black to another color. Asking for a friend.


----------



## tack

robgb said:


> Another out of left field question. Is there any code I can use in the Reaticulate lua script that will allow me to change the background color from black to another color


Is your friend on Mac perchance?


----------



## tack

If they're using the prerelease, you can uncomment and change this line of code to change the background color. For 0.2.0, that line is here. I'm going to be adding an option to the Settings page to override the default color, because the theme background color detection only seems to work on Windows.


----------



## robgb

tack said:


> If they're using the prerelease, you can uncomment and change this line of code to change the background color. For 0.2.0, that line is here. I'm going to be adding an option to the Settings page to override the default color, because the theme background color detection only seems to work on Windows.


Huh. I thought I had upgraded to 0.2.0, but apparently not. I just upgraded and made the change and it worked beautifully, thanks. Another question, though. With the newer version, when I loaded Reaticulate on a track, four hidden Midi Feedback tracks appeared with four sends to these tracks on the instrument track. What's that all about? (And pardon me if I'm asking you to rehash old news.)


----------



## tack

robgb said:


> With the newer version, when I loaded Reaticulate on a track, four hidden Midi Feedback tracks appeared with four sends to these tracks on the instrument track


_Four_? Hmm, something's wrong there. It should just be one. If your project isn't overly sensitive I wouldn't mind having a look at it if you don't mind PMing it to me. 

Feedback can be disabled. See here.


----------



## robgb

tack said:


> _Four_? Hmm, something's wrong there. It should just be one. If your project isn't overly sensitive I wouldn't mind having a look at it if you don't mind PMing it to me.


Unfortunately, it wasn't a specific project and I have since closed it and started a new one. So far I'm only getting one, now. I'm thinking the four must have appeared because that's the exact number of times I changed the color of the background and opened and closed Reaticulate.

Thanks again for such a wonderful script. I wish some of your genius would rub off on me.


----------



## robgb

Looks quite nice with matching colors...


----------



## axb312

Anyone have a working script for Embertone's JB violin?


----------



## axb312

Hi @tack ,

What would the event type be for non latching articulations? 

Coming back to the releases of the Ventus series, I want the release articulation to be non-latching, even if there are no other upcoming events in the same bank....hope this makes sense...


----------



## tack

axb312 said:


> What would the event type be for non latching articulations?


Generally it's going to be note-hold. This ensures the keyswitch note expected by the underlying instrument remains held until the next articulation is activated (in the same group).



axb312 said:


> Coming back to the releases of the Ventus series, I want the release articulation to be non-latching, even if there are no other upcoming events in the same bank....hope this makes sense...


I'm not really clear on that I'm afraid. Could you elaborate more and describe the behavior you're looking for (both in terms of UI and what MIDI events are emitted by Reaticulate)?


----------



## axb312

tack said:


> Generally it's going to be note-hold. This ensures the keyswitch note expected by the underlying instrument remains held until the next articulation is activated (in the same group).
> 
> I'm not really clear on that I'm afraid. Could you elaborate more and describe the behavior you're looking for (both in terms of UI and what MIDI events are emitted by Reaticulate)?



Say you have a patch whose default articulation is sustain and you want (non-latching) ornaments to play, when triggered and clear up/ revert back to sustain default. In other words the ability to have either a blank articulation or ability to deselect all articulations in a bank?


----------



## tack

axb312 said:


> Say you have a patch whose default articulation is sustain and you want (non-latching) ornaments to play, when triggered and clear up/ revert back to sustain default. In other words the ability to have either a blank articulation or ability to deselect all articulations in a bank?


Ah, I think what you're describing is the same situation as the Bohemian violin.

This is described in the documentation here, and here is the bank file for the Bohemian. (I use the term "off program" but it's a stupid term. I think your term "release articulation" is better. Or perhaps maybe "default articulation." In any case I think the capability is what you're looking for.)


----------



## axb312

tack said:


> Ah, I think what you're describing is the same situation as the Bohemian violin.
> 
> This is described in the documentation here, and here is the bank file for the Bohemian. (I use the term "off program" but it's a stupid term. I think your term "release articulation" is better. Or perhaps maybe "default articulation." In any case I think the capability is what you're looking for.)



That should work. Thanks!


----------



## Audio Birdi

Is there a way of automatically showing articulation names from Reaticulate via MIDI or OSC so that buttons can be shown with articulations already showing when switching tracks? Thanks in advance!


----------



## tack

Audio Birdi said:


> Is there a way of automatically showing articulation names from Reaticulate via MIDI or OSC so that buttons can be shown with articulations already showing when switching tracks?


This isn't supported currently. At some point I want to look at OSC and how best to accomplish this sort of thing, but for the moment, no direct OSC support.

The closest thing is the control surface feedback feature. In the prerelease version, articulation changes are send to the control surface (both the bank MSB/LSB and the program number of the current articulation). But this is only useful when your control surface is already programmed to know about the set of articulations as it doesn't transmit the dynamic details of the current bank. (Doing that with MIDI would require custom sysex which probably wouldn't be too useful. OSC may have a standard for it though, need to research.)

This is fine for my use-case anyway: I have my most common articulations activatable from my keyboard. I use a Komplete S88 and have a custom page of encoders, where each encoder activates one of two articulations depending on whether I turn the encoder left or right. Reaticulate's control surface feedback feature transmits the current program number of the selected articulation and I use Bome MIDI translator to send the proper encoder value back to the S88, so it's all properly bidirectionally synced.

And while cool, that's obviously pretty esoteric and custom. I can definitely see the value in a good OSC implementation to make that kind of thing saner.


----------



## Audio Birdi

tack said:


> This isn't supported currently. At some point I want to look at OSC and how best to accomplish this sort of thing, but for the moment, no direct OSC support.
> 
> The closest thing is the control surface feedback feature. In the prerelease version, articulation changes are send to the control surface (both the bank MSB/LSB and the program number of the current articulation). But this is only useful when your control surface is already programmed to know about the set of articulations as it doesn't transmit the dynamic details of the current bank. (Doing that with MIDI would require custom sysex which probably wouldn't be too useful. OSC may have a standard for it though, need to research.)
> 
> This is fine for my use-case anyway: I have my most common articulations activatable from my keyboard. I use a Komplete S88 and have a custom page of encoders, where each encoder activates one of two articulations depending on whether I turn the encoder left or right. Reaticulate's control surface feedback feature transmits the current program number of the selected articulation and I use Bome MIDI translator to send the proper encoder value back to the S88, so it's all properly bidirectionally synced.
> 
> And while cool, that's obviously pretty esoteric and custom. I can definitely see the value in a good OSC implementation to make that kind of thing saner.


Thanks for the feedback on this @tack  looking forward to what you have in store in future in terms of OSC implementation to dynamically show articulations


----------



## Hamrock

I've been playing around with Reaticulate and am loving it! I'm definitely going to switch over from using Inspector. @tack I have a midi controller with 16 pads that I was using to trigger articulations using Inspector and I want to do the same with Reaticulate so I assigned them to send program changes over a dedicated cc to trigger articulations. I would like to keep it standardized to switch whatever articulations I have loaded for various libraries so I was thinking of setting the 1st pad to program 1 to trigger the first art, 2nd pad to program 2 for 2nd art, etc instead of using the UACC standard. Would you agree that is the best way to do it?


----------



## tack

Hamrock said:


> Would you agree that is the best way to do it?


That makes sense although there currently isn't an action to activate articulation by slot number. So your banks would all have to use program 1, 2, 3, etc. which precludes using any of the factory banks which standardize on UACC.

Activation by slot number is any easy thing to add though. I'll include that feature in the next prerelease.


----------



## woodslanding

I was just looking into this, after seeing a post about your gui on the Reaper forum. I don't use articulations, but I have been looking for a method to select patches from my touchscreen via named buttons for live performance. Can reaticulate be used to select actual .rpl patch changes? 

I guess I would be limited to about a dozen buttons on my monitor, since live I have no mouse and therefore no mouse wheel. Unless there's some way to have multiple pages.... I'll have a look at the code, but curious what you think. Hacking it might be within my limited skillset...

I love the look and feel! If you and lokasenna get together on a gui project, I'll be excited to see what you come up with.


----------



## tack

woodslanding said:


> I don't use articulations, but I have been looking for a method to select patches from my touchscreen via named buttons for live performance. Can reaticulate be used to select actual .rpl patch changes?


Yep. With Reaper's FX presets, you'd link them to a program change on a particular channel, say channel 16. So in your FX, click the + button on the FX window and select Link to Program Change | Channel 16. Then the "articulations" in your custom bank file would output program changes for your different presets, for example:



Code:


//! c=#2f809b i=note-whole o=program:0
0 Piano
//! c=#883333 i=tremolo o=program:1
1 Strings Ensemble
[...]



Here I used custom colors but you could also use any of the named colors. Or you can name your custom colors if you intend to reuse them a lot:



Code:


//! colors=strings=#883333,keys=#2f809b

[...]

//! c=keys   i=note-whole  o=program:0
0 Piano
//! c=strings   i=tremolo  o=program:1
1 Strings Ensemble
[...]





woodslanding said:


> I guess I would be limited to about a dozen buttons on my monitor, since live I have no mouse and therefore no mouse wheel.


The next version will have scrollbars, so it might work to touch-drag along the right edge of the window to get yourself scrolling. You might have noticed that in action in the video I posted on the Reaper forum. At some point I'll also implement different types of layouts to make better use of space at different geometries.

I could probably implement some type of touch scrolling as well, to make it friendly to touch interfaces. You're not the first to mention this use-case so it'd be a good idea. I've logged the issue so I don't forget about it.

Thanks for the feedback!


----------



## Hamrock

tack said:


> That makes sense although there currently isn't an action to activate articulation by slot number. So your banks would all have to use program 1, 2, 3, etc. which precludes using any of the factory banks which standardize on UACC.
> 
> Activation by slot number is any easy thing to add though. I'll include that feature in the next prerelease.



That would be fantastic, @tack! Thanks


----------



## woodslanding

Wow, what a surprising bit of good news! Thanks for the quick response!

I do still prefer page buttons to scrolling--it's too easy to select a preset when you are just trying to scroll, and when loading large sample sets in Kontakt, a wrong selection can be a bummer....

although if I could control scrolling from an external control surface, that would be best of all. I'm thinking scroll through the list (mouseover) with an encoder, and press it to actually select the preset.... don't know if that's possible, but it would pretty awesome.


----------



## tack

woodslanding said:


> I'm thinking scroll through the list (mouseover) with an encoder, and press it to actually select the preset.... don't know if that's possible, but it would pretty awesome.


The closest thing is the action "Activate articulation by CC in group <n> on default channel (MIDI CC relative or mousewheel)"

This lets you scroll through the articulations with an encoder, but it actually activates them. This is fine for articulations on the loaded patch, since selection is usually a pretty lightweight action, but in your case with presets it could be pretty painful, as you point out.

I'm curious if anyone else is interested in this capability? By "this" I mean an action to scroll through but not actually activate articulations, and then a separate action to activate the highlighted one?

Actually nevermind. I have another use-case for this type of interaction so I think it makes sense to implement it. Tracking the enhancement here.


----------



## woodslanding

tack said:


> I'm afraid I'm not aware of a means for a Reaper script to change snapshots within Kontakt. A possible kludge might be to create a custom multiscript to run in Kontakt, which could then at least be controlled via some special MIDI from Reaper, but even then I don't think it's possible for a Kontakt multiscript to adjust current snapshots of the active patches.



If you save each snapshot as an RPL, you can do it that way. Can be heavier than using snapshots, of course, as it may reload the instrument each time.


----------



## woodslanding

tack said:


> Actually nevermind. I have another use-case for this type of interaction so I think it makes sense to implement it. Tracking the enhancement here.



Well, alrighty then!! That's beyond anything I could have hoped for! I guess I will get to work on creating a script to modify reabank files to fit the format you showed above. Pity that the EnumTrackMIDIProgramNames method is broken, as the whole procedure could be automated otherwise. There is a create reabank script out there that uses NavigatePresets, but it seems to choke on slow-loading vsts.


----------



## woodslanding

Okay, I am trying to get this working. I edited the user reabank file thus. I'm getting the bank to show up in the dropdown menu, but when I select it and go back to the articulations window it says 'no banks on this track'....



Code:


// Reabank file for Reaticulate - http://reaticulate.com/
//
// This file is a specially formatted Reabank file that is notated for use by Reaticulate.
// Specification can be found here:
//
//      http://reaticulate.com/reabank.html
//
//! colors=kontakt=#885533 n="Kontakt Test Bank"

Bank 0 1 Kontakt Test Bank
//! c=kontakt   i=accented-half  o=program:0
0 BeatlesTackPiano
//! c=kontakt   i=accented-quarter  o=program:1
1 BlackPrairieMoon
//! c=kontakt   i=alt-circle  o=program:2
2 OldLady
//! c=kontakt   i=alt-gypsy  o=program:3
3 Rhodes Mark 1
//! c=kontakt   i=alt-gypsy-eighth  o=program:4
4 A SHIPS PIANO


Am I correct in understanding that all user banks will go into this single file? I currently have some thousands of total patches in use (which is why I'm interested in automating the process) so this file is going to become awkward to navigate at some point.... why not have different files per vst as reaper itself does?


----------



## tack

woodslanding said:


> Bank 0 1 Kontakt Test Bank


Ah, you'll want to avoid MSB 0 as there seems to be an off-by-one bug in the code. Start at MSB 1. I'll fix that at some point. 




woodslanding said:


> Am I correct in understanding that all user banks will go into this single file? I currently have some thousands of total patches in use (which is why I'm interested in automating the process) so this file is going to become awkward to navigate at some point.... why not have different files per vst as reaper itself does?


I'm working on a built-in GUI editor for users to manage the banks, so ultimately how the banks are represented on the filesystem is inconsequential to most people. Supporting multiple user bank files is possible of course but I think it would only be useful to a small minority. Most users would manage the banks via the GUI.

In terms of navigation during bank selection on a given track, bear in mind you can categorize your banks. You just need to annotate the bank:



Code:


//! g="Orchestral Tools/Berlin Woodwinds/Exp B" n="Solo Oboe Multi"
Bank 42 1 Berlin Woodwinds - Exp B - Solo Oboe


This will put the "Solo Oboe Multi" bank in a nested menu Orchestral Tools | Berlin Woodwinds | Exp B.

The component before the first slash is by convention expected to be the Vendor, and the second is the Product, but ultimately you can put whatever you want in here, and arbitrarily nest as many submenus as you want.

Future versions of Reaticulate will make selection a lot easier, being able to search by substring to filter the list of available banks to choose from.


----------



## woodslanding

Oh my dogs, christmas was nothing like this!!

To think, some odd little edge-case capability of your tool has just solved the most vexing problem with moving my live setup to reaper.... Thank you sir!!

Where do I go to contribute? This is huge!

I also discovered that on my fast desktop computer, the reabanks creation script seems to run fine. It even loaded up all my kontakt patches without complaining.... well, at least the 20-some I've made test RPL's for so far.

So then here are a couple of hacks I've added to make this work. First I added the numbers 1-148 to the end of the articulation png. Then I added the text to the articulation.lua script to label them. Then I altered the 'reabank from focused effect' to create a reaticulation file for selecting presets. It is so quick and easy! The hardest part is creating the RPL's from vsts that don't expose presets, and that's really just a matter of selecting and saving each one from that tiny kludgey '+' menu that can't be addressed from the API.... 

I know people on the reaper forums have been complaining about a lack of submenus for selecting patches in vsts, particularly when the preset lists gets really long, so there may actually be an audience for this.... although if the script to create the reabank is unreliable that's a pretty big missing piece.

Anyway, here are those files. Hope you would consider making these changes to the main tree, but if not I can keep on kludgin'....

Here's a few other FRs and notes:

1.I will probably hide the midi channel selection and the filter box to save real estate. I don't see a use for the midi ch setting in performance, and the filter box is useless without a keyboard. You might consider putting in an option to hide them legitimately for this particular usage. 

2.What would be more useful to me in this space would be buttons to select actual banks. I have maybe 700 kontakt presets at present, and while it's great that I can now split them into multiple banks, selecting those banks is still going to be troublesome--the stock windows/gtk menu is too small to control reliably from a touchscreen, and getting to it means pressing that tiny window icon un the upper right. Maybe you could have an option to create a set of buttons for any banks that are in the same subfolder as the current bank, or something like that? Maybe it would even make sense to sort articulations that way, as an alternative to filtering--one that doesn't require any typing... 

3.If you do implement touch scrolling, please make it possible to disable it. While I am playing, I can't reliably select a button without 'micro-scrolling'.... I am very excited about being able to scroll from an encoder, though, so I will be fine with it disabled.

Thanks again!
-eric


----------



## axb312

woodslanding said:


> Oh my dogs, christmas was nothing like this!!
> 
> To think, some odd little edge-case capability of your tool has just solved the most vexing problem with moving my live setup to reaper.... Thank you sir!!
> 
> Where do I go to contribute? This is huge!
> 
> I also discovered that on my fast desktop computer, the reabanks creation script seems to run fine. It even loaded up all my kontakt patches without complaining.... well, at least the 20-some I've made test RPL's for so far.
> 
> So then here are a couple of hacks I've added to make this work. First I added the numbers 1-148 to the end of the articulation png. Then I added the text to the articulation.lua script to label them. Then I altered the 'reabank from focused effect' to create a reaticulation file for selecting presets. It is so quick and easy! The hardest part is creating the RPL's from vsts that don't expose presets, and that's really just a matter of selecting and saving each one from that tiny kludgey '+' menu that can't be addressed from the API....
> 
> I know people on the reaper forums have been complaining about a lack of submenus for selecting patches in vsts, particularly when the preset lists gets really long, so there may actually be an audience for this.... although if the script to create the reabank is unreliable that's a pretty big missing piece.
> 
> Anyway, here are those files. Hope you would consider making these changes to the main tree, but if not I can keep on kludgin'....
> 
> Here's a few other FRs and notes:
> 
> 1.I will probably hide the midi channel selection and the filter box to save real estate. I don't see a use for the midi ch setting in performance, and the filter box is useless without a keyboard. You might consider putting in an option to hide them legitimately for this particular usage.
> 
> 2.What would be more useful to me in this space would be buttons to select actual banks. I have maybe 700 kontakt presets at present, and while it's great that I can now split them into multiple banks, selecting those banks is still going to be troublesome--the stock windows/gtk menu is too small to control reliably from a touchscreen, and getting to it means pressing that tiny window icon un the upper right. Maybe you could have an option to create a set of buttons for any banks that are in the same subfolder as the current bank, or something like that? Maybe it would even make sense to sort articulations that way, as an alternative to filtering--one that doesn't require any typing...
> 
> 3.If you do implement touch scrolling, please make it possible to disable it. While I am playing, I can't reliably select a button without 'micro-scrolling'.... I am very excited about being able to scroll from an encoder, though, so I will be fine with it disabled.
> 
> Thanks again!
> -eric



Hi Eric ,

Sorry if I'm being dense but what do these hacks do and how does one apply/ use them?


----------



## woodslanding

If you need to select presets live from a touchscreen as I do, this hack is for you. Otherwise, it's probably not relevant. I don't use articulations, I'd rather just see numbers in order, so I know how far down the list I have scrolled. 

I'm attaching another script that will alphabetize the RPLs of the selected vst, which can also be helpful. It only works with rpls, not the presets that your vst exposes to reaper directly, although that could be accomplished within the reabank file. I may write that one next.

Two of the files have the same names as ones in the reaticulate install folder. Replace the originals with the ones in the zip. One of them is a png that adds graphics for the numbers 1-140 to your articulation options, and the other allows you to select those options with a single character in the reabank file. 

The third is a custom action will create reabank files for you with the numbering option hack. To use, open up the fx window, and verify there are presets in its dropdown menu. Then run the action. If your vst can change presets fast enough, the script will create a reabank file that reaticulate can use. Selec this reabank, and you'll see all your bank of presets as numbered choices in reaticulate. This script works on my desktop with reaktor and kontakt, but not on my laptop which is too slow.

It's working great, except that there is no way to scroll with a touchscreen. Hopefully that fix will come along soon. If it doesn't, the code is so clean and well commented, I can probably figure out a fix....


----------



## tack

I've pushed a new prerelease version 0.2.91, which you can download with this Reapack:



Code:


http://reaticulate.com/prerelease.xml


More detailed download instructions here.

This should be the last prerelease before 0.3.0 which I hope to have out in a few days (barring a protracted convalescence required from St Paddy's). I'd appreciate extra eyeballs willing to test it out.

No bank editor GUI yet, sorry, but it does have several new requested features.

*New Features*

When the js_ReaScriptAPI extension is installed (recommended):
You can now pin the Reaticulate window when floating

Much improved focusing behavior

New action "Focus articulation filter" (which works best when the js_ReaScriptAP extension is installed)
New action "Activate articulation slot number by CC on default channel" which can be used to activate articulations based on their position in the bank list (#58)
New action to insert the last activated articulation into MIDI item at edit cursor (same behavior as right clicking the articulation)
Various new actions to select but not activate articulations, plus an action to activate currently selected articulation (#59)
Running the action to activate currently selected articulation twice in rapid succession will cause it to insert into MIDI item

On pages that scroll, scrollbars will appear when the mouse hovers toward the right edge

*Bug Fixes*

Fixed regression in control surface feedback when reopening a project
Force control surface update on track selection (workaround for https://forum.cockos.com/showthread.php?p=2077098)


Here are the changes from previous prereleases (specifically 0.2.90) since the last major release (which is 0.2.0 released on 2018-07-02):

*New Features*

Activating an articulation now scrolls it into view in the GUI (#50)
Articulations are now fed back to control surface (#48)
CC0/32 bank select indicates bank for articulation

Articulations can be expressed either as native program change events or custom CC events

Improve First Run experience (especially for portable Reaper installations) (#46)
Minor cosmetic improvements with drag-and-drop to reorder banks on the track configuration page

*Bug Fixes*

Ensure articulations on same MIDI tick as notes are processed before the notes (#53)


----------



## tack

@woodslanding this latest prerelease supports selection-but-not-activation.

Also @Hamrock there is the new action to activate articulations by slot number that we discussed earlier.

After the promotion to 0.3.0 I'll be adding the ability to override the icon to use either numbers (e.g. for slot number of output program number) or note names (e.g. for note-based output events).

If you're not in the middle of any big projects and you're willing to give the prerelease a try, I'd appreciate the feedback on any regressions.

Thanks!


----------



## axb312

@tack 

If I may make a simple request, please sort out the icon names alphabetically on the rearticulate website. Its all rather haphazard right now. 

Thank you.


----------



## tack

axb312 said:


> If I may make a simple request, please sort out the icon names alphabetically on the rearticulate website. Its all rather haphazard right now.


Not sure what you mean? They are sorted alphabetically.


----------



## axb312

tack said:


> Not sure what you mean? They are sorted alphabetically.



Had a look again and yes you're right.

On my browser though, it shows up as left to right ordering, where I normally look at a list from the top to the bottom.

Different strokes I guess.

Cheers.


----------



## tack

axb312 said:


> Different strokes I guess.


With the bank editor GUI this won't matter so much: it'll be a single sorted column and you can filter the list by substring.


----------



## woodslanding

tack said:


> @woodslanding this latest prerelease supports selection-but-not-activation.
> 
> Also @Hamrock there is the new action to activate articulations by slot number that we discussed earlier.
> 
> After the promotion to 0.3.0 I'll be adding the ability to override the icon to use either numbers (e.g. for slot number of output program number) or note names (e.g. for note-based output events).
> 
> If you're not in the middle of any big projects and you're willing to give the prerelease a try, I'd appreciate the feedback on any regressions.
> 
> Thanks!



Thank you! I will fire this up and check it out this afternoon. Hopefully I won't have the problem where I touch a control on the Behringer and Reaper crashes instantly! This happened on friday when I first tried to use midi learn to assign a vst parameter to the behringer.... So I may have a debug issue to deal with before I can actually test


----------



## woodslanding

Okay, I got the behringer working to select presets, it's AWESOME....

but.

I can't get the actual vst to change patches. I do have link to pCH midi ch 1 enabled for the vst, and I'm using the correct reabank (like I say, it displays great). Tried with both the instruments I've set up for reaticulate.

It isn't working either from an action button, OR from the actual gui. It says it's sending presets, but they don't seem to arrive. It does deselect the articulation from the list.

I haven't tried reverting to the old version. I'll try that tomorrow. Too bad I can't keep both links in repack simultaneously so I could just go back and forth.


----------



## tack

woodslanding said:


> I haven't tried reverting to the old version. I'll try that tomorrow. Too bad I can't keep both links in repack simultaneously so I could just go back and forth.


I'll give this a closer look tomorrow but wanted to say that the last stable release (0.2.0) is included in the prerelease Reapack so it's indeed possible to reinstall the different versions using the usual method with Reapack (which IIRC is under Browse and if you right click you can choose which version -- sorry, am afk and my memory is failing).


----------



## woodslanding

Okay, I managed to crash the script, and after restarting, it's working.

this is pretty damn epic.

not sure what I did before, but maybe a midi-learn issue or something.

ROCK ON!


----------



## woodslanding

Now if I can just figure out how to select tracks from an encoder....


----------



## tack

woodslanding said:


> Okay, I managed to crash the script, and after restarting, it's working.


Don't suppose you remember what you did? Well, if it happens again please let me know how to reproduce. That's going to be a bug


----------



## woodslanding

well, I've got some symptoms to look for.... thankfully it stopped working before crashing.


----------



## woodslanding

Autostart doesn't seem to be working. I just saved a project, and reopened it. No reaticulate window.

Well, couldn't reproduce that bug either. stay tuned.


----------



## woodslanding

well, I'm still trying to find out exactly what causes it, but I'm having problems where I will get program changes on the wrong track. I'm going between tracks changing programs, and I'll change the program one track, and the track just previous gets the change instead.

I quit and restarted, and it's sticking this time.

I deleted the third track. Now both tracks get the program change every time.


----------



## tack

@woodslanding would you be able to PM me a simple project that's got this behavior?


----------



## woodslanding

check your box.... hope this helps!


----------



## robgb

@tack Since the pitch wheel isn't a CC controller, I wonder if there is still a way to control pitch wheel commands using Reaticulate. I have Reaticulate controlling multiple parameters of instruments via CC and keyswitches, but would like to be add pitch wheel command to the mix, since portamento is controlled by pitch wheel in some of my libraries. Any chance I can do this?


----------



## tack

robgb said:


> @tack Since the pitch wheel isn't a CC controller, I wonder if there is still a way to control pitch wheel commands using Reaticulate. I have Reaticulate controlling multiple parameters of instruments via CC and keyswitches, but would like to be add pitch wheel command to the mix, since portamento is controlled by pitch wheel in some of my libraries. Any chance I can do this?


Oops, sorry Rob, I'd missed this question.

I'm afraid right now Reaticulate can't emit pitch bend messages as output events. Fair enough that it should -- I'm tracking that feature here.


----------



## Vadium

About the last version (0.2.91):

CC0 sends OK (it was an unknown bug in my system and all OK after reloading Reaticulate on channels)

Articulation autoscrolling isn't working

there is a strange GUI bug (see pic.)


----------



## tack

Vadium said:


> Articulation autoscrolling isn't working


Hm, it's working for me. Are you able to take a screen capture showing the problem? There may be some important details about your setup.



Vadium said:


> there is a strange GUI bug (see pic.)


Do you remember how you got it into this state? This can happen if you activate the articulation on every one of those channels. Middle-clicking on the articulation will clear the channel assignment (at least as far as the UI is concerned).


----------



## Vadium

tack said:


> Do you remember how you got it into this state?



I found that simple setups work OK. But if I use Alt-Tuner (http://www.tallkite.com/alt-tuner.html) for microtune purposes, that sends MIDI to 16 channels from one track at once (separate notes with individual pitch band date to individual channels for properly working), autoscrolling isn't working. When I switch sending midi mode to one channel, all works OK with alt tuner, as you can see in this video. A sequence of plugins on the track (alt-tuner before Reaticulate) now is OK, if I set Reaticulate before alt tuner, alt tuner starts to work incorrect.


----------



## tack

@Vadium I think Reaticulate is working as intended here, based on what I see in the video.

Autoscrolling only occurs when an articulation is activated. In your example, you (somehow) have all channels mapped to the Modular Plenum-E articulation -- perhaps because the alt-tuner plugin is sending program changes, or because it's sending the note which is assigned to an output event for that articulation on all channels. Each numbered box indicates the channel that is mapped to this articulation. It's just that the GUI doesn't scale well to that many channels, so it renders way outside the button. (I can fix this at some point.)

At 1:47 I guess there is a program change (or keyswitch note) on channel 1 in the MIDI item being played, which causes channel 1's articulation to be assigned to Reedpipe 4, and then to Modular Plenum-B at 1:57. And note that autoscrolling does work at 1:57 because the articulation off-screen was activated, so it scrolls into view. The JSFX plugin is sending notes on all those channels that are lighting up (with numbered boxes with the solid white background).

If all your keyswitches are coming from channel 1 and your VSTi is set to omni, then I guess you really only care to see feedback for channel 1. In that case, had you tried middle clicking the Modular Plenum-E articulation to clear the articulation assignment in the UI?


----------



## Vadium

at 1:47 of previous video autoscrolling start works because I switch transmission from alt-tuner plugin to only 1 midi channel (all notes transmits to one midi channel). But it not works properly for a microtonal purpose.

additional details to my setup:

There are 3 program changes on the track Manual 1, written by right clicks.

alt-tuner plugin not introduced any additional program change messages, it only reassigns notes to individual midi channels and copies CC messages to all midi channels.
The destination is no one instrument in OMNI mode, but 16 instances of same instruments, each on an individual midi channel (for polyphonic pitch band data receiving possibility) Between Reaper and Instruments I make mirroring of a Program Change data to all midi channels by Plogue Bidule.

Log of ControlMIDI after Alt-Tuner is attached to this post.

On this video I tried middle clicking: all sounds OK, but autoscrolling isn't work. Maybe I not completely understand the concept of midi channel assignment in Reaticulate? How to assign it to 1 channel after a middle click? I need to send same program change and CC messages to all 16 instances of instruments at once, because if 3 notes will playing from a track, for example, C E G, one note will playing by 1st instrument, E note - by second instrument and G - by the third. And on all instruments must be selected same program (for example, reedpipe 4) at once. Is it possible?


----------



## lucor

It's that time of the year again, where my frustrations with my main DAW have me dabbling with REAPER. 
Currently playing around with Reaticulate and so far 2 questions have come up:
1) Is there a way to access more than 16 patches within Kontakt, i.e patches that are on pages '17-32', '33-48' and '49-64'?
2) How do you make the right dock stay above the lower dock in REAPER? currently the midi editor almost completely covers the Reaticulate window, which makes it very hard to right click articulations.





Also @tack, is the delay compensation feature still anywhere on the horizon? I know you're very busy, but for me that's by far the most exciting possible new feature. 
Thanks!


----------



## tack

lucor said:


> 1) Is there a way to access more than 16 patches within Kontakt, i.e patches that are on pages '17-32', '33-48' and '49-64'?


You're effectively asking if Reaper can address Kontakt ports B-D, and it can't. At least not directly. But it's possible to use some additional tricks to accomplish this. See this post (and my post just after) for how you can use Reaticulate with FlexRouter to address 64 different patches.



lucor said:


> 2) How do you make the right dock stay above the lower dock in REAPER? currently the midi editor almost completely covers the Reaticulate window, which makes it very hard to right click articulations.


You know, I'm not even sure how you got that layout. 

For me, attaching a docker to the main window and assigning it either left or right consumes the full height of the Reaper window. There must be some option somewhere for the sort of layout you ended up with but I'm not sure. I'll play with it a bit more tonight but meanwhile maybe someone else reading this has some ideas.



lucor said:


> Also @tack, is the delay compensation feature still anywhere on the horizon? I know you're very busy, but for me that's by far the most exciting possible new feature.


It's on the very distant horizon, I'm afraid. So many other things to do first, and so little time.


----------



## lucor

Flexrouter worked perfectly, thanks!  And weird regarding the docker, my REAPER installation was pretty much vanilla aside from the Logic theme (it also happens in the default theme though). I'll also try my luck on the REAPER forums regarding that.


----------



## tack

lucor said:


> I'll also try my luck on the REAPER forums regarding that.


I'm really curious to know what the brain trust there says. Try as I might, I'm just not able to make Reaper's layout look like yours. I spent the last 15 minutes dragging dockers and tabs six ways from Sunday.


----------



## robgb

@tack I just bought Spitfire's Studio Strings and have been setting up an articulation bank. Everything works like a charm... Except... In SS I'm able to manually shift-click several articulations so that they're layered, but I can't seem to figure out how to do it in reaticulate. I'm sure I'm doing something wrong but nothing seems to work. Here's what I've tried using both locked UACC and locked UACC KS:

1. //! c=short-dark i=spiccato o=cc:32,42/cc:32,48
43 super spiccato

2. //! c=short-dark i=spiccato o=cc:32,42/48
43 super spiccato

3. //! c=short-dark i=spiccato o=cc:32,42,48
43 super spiccato


----------



## tack

robgb said:


> 1. //! c=short-dark i=spiccato o=cc:32,42/cc:32,48
> 43 super spiccato
> 
> 2. //! c=short-dark i=spiccato o=cc:32,42/48
> 43 super spiccato
> 
> 3. //! c=short-dark i=spiccato o=cc:32,42,48
> 43 super spiccato


Only the first syntax is correct. Multiple output events are separated by a /, so #3 is ruled out. And with #2, the second output event is just "48" which isn't valid. So #1 is the right syntax, but ...



robgb said:


> In SS I'm able to manually shift-click several articulations so that they're layered, but I can't seem to figure out how to do it in reaticulate. I'm sure I'm doing something wrong but nothing seems to work. Here's what I've tried using both locked UACC and locked UACC KS


... you won't be able to do that using UACC because it doesn't have a way to layer from a MIDI event perspective. You send discrete CC32 events with no real way to signal they should be batched together. I suppose the Spitfire patch itself could have some logic like "if I get N events within 10ms process them all as layered articulations" but it doesn't behave like this.

I was actually going to say something similar about UACC KS. The idea is similar, except instead of CC32 we're sending a single note at different velocities, and the velocity value controls which articulation is selected. (It's _supposed _to be the same values as regular UACC but now that I look at it, with the patch I'm testing with, longs have a different number. It's 1 for UACC, and 32 for UACC KS. Sigh.) So it's different than with traditional keyswitches, where you can have a sequence like:

note 30 on, note 31 on, note 32 on, note 32 off, note 31 off, note 30 off

With UACC KS you're sending the same notes:

note 0 vel 30 on, note 0 vel 31 on, note 0 vel 32 on, note 0 off

I actually didn't expect it to layer, but in fact the Spitfire patches do support this with UACC KS. I tested this with Chamber Strings Ensembles:



Code:


//! c=long i=note-whole o=note:0,32
1 long
//! c=long-light i=con-sord o=note:0,7
7 con sord
//! c=long-dark i=sul-pont o=note:0,18
18 sul pont
//! c=long-dark i=note-whole o=note:0,7/note:0,18/note:0,32
126 super combo


And now that I RTFM (in my defense TFM is pretty new!), layering is explicitly supported. Excellent.

So if you were not getting correct results with UACC KS, the likely culprit was your output event syntax. Hopefully the above examples helps.

I might be tempted to switch all the factory banks over to UACC KS for this reason, except that, it must be said, in past UACC KS was a complete mess, and I'm reluctant to make that kind of a leap without thorough testing.

Great question!


----------



## robgb

tack said:


> //! c=long-dark i=note-whole o=note:0,7/note:0,18/note:0,32 126 super combo


This works perfectly. I didn't even have to change the other articulations. Thanks!


----------



## robgb

@tack, back with another question. Is there a way, through UACC to control the options in Spitfire instruments, like turning on an off transpose? It would be cool to be able to create an articulation that instantly transposes one instrument in a multi for a nice octave sound.

EDIT: Nevermind. I stupidly didn't realize you could set the on/off transpose button to a CC. Thanks anyway!

EDIT 2: Now I suppose the next question is, is there a way to change the value of the transposition after turning it on? I can set it to a specific value and leave it, but what if I decide I want 5ths or 7ths or whatever?


----------



## tack

robgb said:


> EDIT 2: Now I suppose the next question is, is there a way to change the value of the transposition after turning it on? I can set it to a specific value and leave it, but what if I decide I want 5ths or 7ths or whatever?


That's not so much a Reaticulate question but a Spitfire question as to whether or not the transposition amount is automatable. Looking a patch here, I'm afraid that doesn't look possible. There doesn't seem to be a host automation parameter mapped to that value, so no way to automate it. Maybe drop Spitfire a note and see if they have any advice?

Glad you figured out the other thing though.


----------



## robgb

tack said:


> If they're using the prerelease, you can uncomment and change this line of code to change the background color. For 0.2.0, that line is here. I'm going to be adding an option to the Settings page to override the default color, because the theme background color detection only seems to work on Windows.


Downloaded the new pre-release version and, of course, lost the background color change. I can't seem to locate it in the new code? Has this changed or am I blind?


----------



## tack

robgb said:


> Downloaded the new pre-release version and, of course, lost the background color change. I can't seem to locate it in the new code? Has this changed or am I blind?


New location (it's just a few lines below the earlier prerelease link you quoted). I plan to make this an official setting you can change in the GUI.


----------



## robgb

tack said:


> New location (it's just a few lines below the earlier prerelease link you quoted). I plan to make this an official setting you can change in the GUI.


Perfect, thanks. For some reason I was looking in app.lua instead of baseapp.


----------



## halfwalk

robgb said:


> is there a way to change the value of the transposition after turning it on? I can set it to a specific value and leave it, but what if I decide I want 5ths or 7ths or whatever?



Could you use midi_transpose (JSFX) on the MIDI track after the Reaticulate JSFX, link the "Transpose Semitones" slider to whatever CC you want, and use Reaticulate to automate that before it gets sent to Kontakt? And have a separate articulation group which only affects that CC? That should let you have a "8va" or "8vb" switch (for instance) for the whole instrument.


----------



## robgb

halfwalk said:


> Could you use midi_transpose (JSFX) on the MIDI track after the Reaticulate JSFX, link the "Transpose Semitones" slider to whatever CC you want, and use Reaticulate to automate that before it gets sent to Kontakt? And have a separate articulation group which only affects that CC? That should let you have a "8va" or "8vb" switch (for instance) for the whole instrument.


I think that would transpose all the instruments in the multi.


----------



## halfwalk

Assuming each instrument is on a different channel, and you have one MIDI track per instrument, it should work, since the transposition will only affect the MIDI track you put it on (which would mean one instance of midi_transpose on every track for which you might wish to have this control).

So like... let's say flutes are on ch.8 of your multi. And you have a MIDI track for your flutes that's sending to your Kontakt ch.8. You would put the midi_transpose on the flutes' MIDI track (after Reaticulate_jsfx), not on the Kontakt track. So that only ch.8 is being transposed (if activated). But I don't know your setup, apologies if you've posted the details earlier in this thread and I've missed them, I haven't gone through it. I'm just going by how I have my own Reaticulate rig wired up. And I haven't tested it (might tomorrow evening just because I like your idea) but I'm fairly certain it would at least work for how I've got it set up. Not that this helps you necessarily, but maybe. Unless I'm missing something obvious...

Are you using only one MIDI track with multichannel data on it? If that's the case, then yes, my suggestion would not work since it would then be transposing all channels of MIDI sent to Kontakt.


----------



## EugenioBruno

tack said:


> I actually didn't expect it to layer, but in fact the Spitfire patches do support this with UACC KS. I tested this with Chamber Strings Ensembles:
> 
> 
> 
> Code:
> 
> 
> //! c=long i=note-whole o=note:0,32
> 1 long
> //! c=long-light i=con-sord o=note:0,7
> 7 con sord
> //! c=long-dark i=sul-pont o=note:0,18
> 18 sul pont
> //! c=long-dark i=note-whole o=note:0,7/note:0,18/note:0,32
> 126 super combo
> 
> 
> And now that I RTFM (in my defense TFM is pretty new!), layering is explicitly supported.



Hi! I'm making a template for SSO. It's my first time seriously playing with libraries and I'm obviously a reaticulate newbie as well 

Let me sanity check my understanding here: if I want to make layered articulations with reaticulate, I have to make one combo articulation for every combination? There isn't a way to "just" select two reaticulate articulations at once?

I'll be reading Reaticulate's "FM" as well more thoroughly, but I don't think I've found a way on my first read.


EDIT: what I actually would like to do is combine the various shorts with the long articulation, so maybe there's an easier way...


----------



## lucor

Probably a stupid question, but is there no way to move the program change events around in the midi editor? Right now, when I'm timing articulations and have to reset the articulation change to an earlier or later position, I have to first delete the old program change and then re-enter it which is mildly annoying. Is this normal behaviour?
Edit: Nevermind, I figured it out with the mouse modifiers. But it's very fiddly and if you move your mouse up and down while dragging it will change the program change?
Edit2: "Move CC event on one axis only ignoring snap" seems to solve the changing PC's problem. It's all still very fiddly though and I almost always need several attempts to grap the event.


----------



## tack

EugenioBruno said:


> Let me sanity check my understanding here: if I want to make layered articulations with reaticulate, I have to make one combo articulation for every combination? There isn't a way to "just" select two reaticulate articulations at once?


Program changes are discrete events (it's not like a note down followed by a note up), so, yes, the only way to layer is to create separate articulations with the desired layering.

I'm not sure of a clean way to do layering with program changes. Also considering that Reaper will only chase the last PC on a given MIDI channel. Ideas welcome.



lucor said:


> Edit2: "Move CC event on one axis only ignoring snap" seems to solve the changing PC's problem. It's all still very fiddly though and I almost always need several attempts to grap the event.


Yes, it's _really_ fiddly. I think Reaper's developers work hard to maximize the pain of moving PCs. Perhaps with the help of the new js_ReaScriptAPI extension I can figure out a better UX. But indeed the native UX for moving the PC events is a massive pain in the ass.


----------



## EugenioBruno

@tack Here's my thinking, but I don't know how I could code it into reaticulate (*if* it's something you can do...). Maybe you could point me in the right direction on how to do it?

Let's say a bank has long, marcato, tenuto, staccato articulations. For a couple of phrases this works and I switch between them as I see fit. For another line, however, I want to layer tenuto with the long.

I toggle on the LayeredLong articulation, which maybe might be enabling a separate instrument in the same kontakt instance, and then I select the tenuto articulation. Now both the tenuto in the first instrument and the second long only instruments are playing. I might even switch to staccato for a couple of notes. LayeredLong is still toggled, so both the longs and the shorts play. When I'm done with that line, I untoggle the LayeredLong articulation (so the long only instrument is not playing anymore) and I go back to just switching articulations as normal.

Possible? As you say, program changes are discrete events, so I could maybe have a LayeredLongOn and a LayeredLongOff?


----------



## lucor

Is there a way to sync the track list on the right hand side of the midi editor to the track selection? Or is there an action/script that switches to the track of the currently active midi item in the editor? I really like using the track list to switch between and edit different tracks, but the track selection doesn't follow it and accordingly so doesn't the Reaticulate UI on the right. So when I want to insert new keyswitches I always have to close the midi editor, search for the track, select it and reopen the midi editor. Anyone got an idea?
Thanks!


----------



## tack

lucor said:


> Is there a way to sync the track list on the right hand side of the midi editor to the track selection?


Funny enough, this was bugging me too, so I actually added this to Reaticulate late last year ("Toggle track selection follows MIDI Editor target item") but I didn't really test it very well so didn't commit it.

If I push a new prerelease with that feature, would you be able to test it out?


----------



## lucor

Of course, that would be great!


----------



## tack

lucor said:


> Of course, that would be great!


I just pushed a new prerelease (0.2.92) which has this feature. Installation details here. If you're already on the prerelrease track then you just need to do an update.

I'll add it to Reaticulate's settings UI later, but for now you'll need to enable it via the "Reaticulate_Toggle track selection follows MIDI editor target item.lua" action.

This option follows the editor target item (the item where writes go to), not the selection. But you can easily link that to selection by enabling Reaper's native option in the MIDI Editor: "Options: MIDI track list/media item lane selection is linked to editability"


----------



## robgb

tack said:


> I just pushed a new prerelease (0.2.92) which has this feature.



Any idea why I'm getting numbers instead of articulation names?


----------



## tack

robgb said:


> Any idea why I'm getting numbers instead of articulation names?



Does clicking the reload button on Reaticulate's toolbar help?
If not, do you still see this in a new project?


----------



## robgb

tack said:


> Does clicking the reload button on Reaticulate's toolbar help?
> If not, do you still see this in a new project?


Neither makes a difference, unfortunately. I also tried deleting the instance of Reaticulate on the track and starting it up again, but I still get the same results.


----------



## robgb

@tack Problem solved. When I created the articulation bank I numbered it improperly.

//! g="Spitfire/Studio Strings" n="1st Violins"
Bank 190 1 "1st Violins"

When I changed the bank number to 100, it worked fine:

//! g="Spitfire/Studio Strings" n="1st Violins"
Bank 100 1 "1st Violins"


----------



## tack

robgb said:


> //! g="Spitfire/Studio Strings" n="1st Violins"
> Bank 190 1 "1st Violins"


Oh! Indeed, yes, 127 is the maximum. Ok, great. Whew, I was expecting something complicated. 

(Reaper failing to resolve program events to their Reabank names has been a constant struggle and I have absurd amounts of hack code in Reaticulate to unfuck Reaper into submission. I was worried about a new edge case there.)


----------



## robgb

tack said:


> Oh! Indeed, yes, 127 is the maximum. Ok, great. Whew, I was expecting something complicated.
> 
> (Reaper failing to resolve program events to their Reabank names has been a constant struggle and I have absurd amounts of hack code in Reaticulate to unfuck Reaper into submission. I was worried about a new edge case there.)


Sorry to give you the minor heart attack. I'll pay more attention to the instructions next time...


----------



## tack

lucor said:


> Of course, that would be great!


Curious if you've managed to try it out yet? Does the "track selection follows MIDI editor target" feature work ok for you?


----------



## lucor

tack said:


> Curious if you've managed to try it out yet? Does the "track selection follows MIDI editor target" feature work ok for you?



I was just about to write that it's been working great so far!  Have been testing it pretty extensively for the whole day and part of yesterday, and no hiccups whatsoever.
Thanks again!


----------



## tack

lucor said:


> I was just about to write that it's been working great so far!


Great! I also implemented a "track selection follows FX window focus" option as well as I find it handy to just click on a Kontakt window and start playing.

I wonder if anyone else would find that useful?


----------



## tack

Another small prerelease update in 0.2.93. (Installation details here. If you're already on the prerelrease track then you just need to do an update.)


New action: Track selection follows FX focus
When enabled, focusing an FX window will cause the FX's track to become selected.
This action requires the js_ReaScriptAPI extension

New action: Select last selected track
Added a "Behavior" section to the Settings page to control certain behaviors (mainly related to recently added actions)


----------



## vewilya

tack said:


> Another small prerelease update in 0.2.93. (Installation details here. If you're already on the prerelrease track then you just need to do an update.)
> 
> 
> New action: Track selection follows FX focus
> When enabled, focusing an FX window will cause the FX's track to become selected.
> This action requires the js_ReaScriptAPI extension
> 
> New action: Select last selected track
> Added a "Behavior" section to the Settings page to control certain behaviors (mainly related to recently added actions)


Hey tack. Is it possible to assign keys for articulation switching? I always got my C-1 for my longs, C#-1 for Legato etc. But these should trigger CC32 for Spitfire Products for example without having the actual notes printed in the sequence. Just like Expression Maps or Articulation Sets in LPX.... Thanks u


----------



## tack

vewilya said:


> Hey tack. Is it possible to assign keys for articulation switching? I always got my C-1 for my longs, C#-1 for Legato etc. But these should trigger CC32 for Spitfire Products for example without having the actual notes printed in the sequence.


Not really handled very well right now, no. There's an open issue here and this post on the Reaper forum explains a bit of context.

Reaper does not make this easy for us at all. Apart from creating the 128 separate actions (or, worse, 2176 if you want to target specific channels rather than the default channel) and have you bind your notes individually to those actions as shortcuts, the only other idea I have is this:

When you play a note, if that note is assigned to an articulation on the actively armed track, then the JSFX on the track reports back to the main script "hey, I just intercepted a note that's mapped to articulation 42." Then the main script checks to see if we're either recording or step-recording in the MIDI editor, and edits the MIDI item in-place to replace the note with the program change message. (There may be unintended side effects there: it's not a stretch to imagine Reaper could complain about MIDI events getting dynamically modified in an item being actively recorded to. And even if it works, there will be an unavoidable flicker as the note vanishes and the program change event is added.)

That idea has the benefit that if the note being played happens to be mapped to an articulation on the armed track then it gets replaced for a program event, and if not, then it's passed through as a standard note as part of the performance (i.e. Reaticulate can ignore it). That behaviour isn't very cleanly accomplished the other idea of having 128+ separate actions.

So basically it's just a series of trade-offs here. Suffice it to say, some sort of solution is on the roadmap. In the meantime, you'd have to use something like Bome MIDI Translator to translate notes to a CC that you can assign to one of the "Activate articulation by CC" actions.


----------



## tack

tack said:


> Another small prerelease update in 0.2.93.


Incidentally, assuming there aren't any bugs, this will be the last prerelease before 0.3.0 so I'm grateful to hear about any experiences, positive or negative (if you found bugs).


----------



## vewilya

tack said:


> Not really handled very well right now, no. There's an open issue here and this post on the Reaper forum explains a bit of context.
> 
> Reaper does not make this easy for us at all. Apart from creating the 128 separate actions (or, worse, 2176 if you want to target specific channels rather than the default channel) and have you bind your notes individually to those actions as shortcuts, the only other idea I have is this:
> 
> When you play a note, if that note is assigned to an articulation on the actively armed track, then the JSFX on the track reports back to the main script "hey, I just intercepted a note that's mapped to articulation 42." Then the main script checks to see if we're either recording or step-recording in the MIDI editor, and edits the MIDI item in-place to replace the note with the program change message. (There may be unintended side effects there: it's not a stretch to imagine Reaper could complain about MIDI events getting dynamically modified in an item being actively recorded to. And even if it works, there will be an unavoidable flicker as the note vanishes and the program change event is added.)
> 
> That idea has the benefit that if the note being played happens to be mapped to an articulation on the armed track then it gets replaced for a program event, and if not, then it's passed through as a standard note as part of the performance (i.e. Reaticulate can ignore it). That behaviour isn't very cleanly accomplished the other idea of having 128+ separate actions.
> 
> So basically it's just a series of trade-offs here. Suffice it to say, some sort of solution is on the roadmap. In the meantime, you'd have to use something like Bome MIDI Translator to translate notes to a CC that you can assign to one of the "Activate articulation by CC" actions.


Thanks for this informative reply. I will check your suggestions and give it a try...


----------



## Vadium

Hi Tack,
Please, make the additional icon "empty" (or "background"), that appears as nothing (for groups separate purposes). Also it will be good if it will be possible to see a message (m=) above articulation list as performance guidelines, like "Use CC47 for frullato, CC48 for bla-bla" (maybe as an option)


----------



## tack

Vadium said:


> Please, make the additional icon "empty" (or "background"), that appears as nothing (for groups separate purposes). Also it will be good if it will be possible to see a message (m=) above articulation list as performance guidelines, like "Use CC47 for frullato, CC48 for bla-bla" (maybe as an option)


Both good ideas and pretty easy to implement. I'll add them to version 0.4.0 which will be out in the next month or two (but will land in prereleases first).

I'm tracking those features here and here.

Edit: actually I realized I misinterpreted your comment about the messages. From your screenshot I thought you meant per-articulation messages (which I think isn't a bad idea), but you meant the bank-level message. Now tracking that one here.)


----------



## tack

I've just promoted the last prerelease (plus a couple small tweaks) to version 0.3.0.

This release of Reaticulate focuses on general usability improvements and knocking down those little workflow irritations. Apart from that, there are quite a number of internal structural changes that you don't see, but will help pave the way for future releases.


*Eh?*
Reaticulate is an articulation management system for REAPER. Check the website for the skinny.

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

*Upgrading*

For those of you on the release track, you should eventually receive the update, but you can force it by following these instructions. Those using the prerelease track will receive this update as well, plus of course all the prereleases leading up to 0.4.0.

Here are the changes since 0.2.0:

*New Features*

 Articulations are now fed back to control surface (#48)
 CC0/32 bank select indicates bank for articulation
 Articulations can be expressed either as native program change events or custom CC events

 When the js_ReaScriptAPI extension is installed (*strongly recommended* but not required):
 You can now pin the Reaticulate window when floating
 Some new actions and features become available
 Much improved focusing behavior

 New action "Focus articulation filter" (which works best when the js_ReaScriptAPI extension is installed)
 New action "Activate articulation slot number by CC on default channel" which can be used to activate articulations based on their position in the bank list (#58)
 New action "Insert last activated articulation into MIDI item on default channel" to insert the last activated articulation into MIDI item at edit cursor (same behavior as right clicking the articulation)
 New option "Track section follows focused FX window" (with associated toggle action) (requires js_ReaScriptAPI extension)
 New option "Track selection follows MIDI editor target item" (with associated toggle action)
This is most conveniently paired with the "Options: MIDI track list/media item lane selection is linked to editability"

 New action "Select last selected track"
 Various new actions to select but not activate articulations, plus an action to activate currently selected articulation (#59)
 Running the action to activate currently selected articulation twice in rapid succession will cause it to insert into MIDI item

 On pages that scroll, scrollbars will appear when the mouse hovers toward the right edge


*Minor Enhancements*

 Added a new "Behaviors" section on Settings page
 Activating an articulation now scrolls it into view in the GUI (#50)
 Improved First Run experience (especially for portable Reaper installations) (#46)
 Minor cosmetic improvements with drag-and-drop to reorder banks on the track configuration page

*Bug Fixes*


 Fixed regression in control surface feedback when reopening a project
 Force control surface update on track selection (workaround for https://forum.cockos.com/showthread.php?p=2077098)
 Ensure articulations on same MIDI tick as notes are processed before the notes (#53)
 Other minor fixes


----------



## klawire

It's great that you are continuously updating Reaticulate. I recently integrated Reaticulate into my template and created custom banks for my most important orchestral libraries (Jaeger and Hollywood Orchestra). The new focusing behavior options sound really good and will certainly work better with my workflow!

How has everyone set up divisi in Reaticulate? I'd like to avoid loading duplicate patches and set up divisi buttons that balance the volume correctly for various divisi set ups. However, I haven't been able to figure out how to enable writing individual mod wheel dynamics for all the divisi parts and with monophonic legato patches. It would also have to work both with keyswitch based and midi channel based articulation changes. Any ideas on how to tackle this challenge?


----------



## tack

klawire said:


> How has everyone set up divisi in Reaticulate? I'd like to avoid loading duplicate patches and set up divisi buttons that balance the volume correctly for various divisi set ups. However, I haven't been able to figure out how to enable writing individual mod wheel dynamics for all the divisi parts and with monophonic legato patches. It would also have to work both with keyswitch based and midi channel based articulation changes. Any ideas on how to tackle this challenge?


If you want individual modwheel control for each divisi section, I don't know of a way to avoid pulling in multiple patches in your VSTi on different channels (whether Reaticulate is used or not).

That's what I do when I want independent CC control, and use different MIDI channels for the different divisi sections. In Reaticulate, as long as you assign the bank to the track with source channel of _omni_ and destination channel of _source_ (these are the defaults), you can use the same bank for control via multiple source MIDI channels. Reaticulate understands that each source channel can be assigned its own articulation.

It's certainly possible to set up automatic configuration of CC7/CC11 based on number of divisi sections. I haven't bothered with that myself, instead doing it manually for the most control, although I might feel differently if I did it more. You can read this post for some ideas on how to set this up with Reaticulate.

But the suggestion in that post only works for keyswitch based patches. For the articulation-per-channel multi setup this is rather more complicated because, again, if you want divisi sections playing the same articulation with independent CC control, you just need to pull in another instance of that patch on some other channel, and then it's hard to avoid the need to make the banks explicitly aware of those channel choices.

In Kontakt, I think I would solve this problem by using FlexRouter to abstract away the multi layout, making the instrument appear like a keyswitchable patch. I'd have source channel 1 map to port A channels 1-16 in Kontakt, source channel 2 map to port B 1-16, ..., source channel 4 map to port D 1-16. Then Reaticulate's bank just sends output events to activate the keyswitches, and I can use source channels for divisi exactly as described in the earlier referenced post. If I have legato on channel 2 and I need a divisi line, I can pull in another instances of the legato patch on [ B]2 on demand.

I think that's an elegant enough solution, but it only works for Kontakt. I'm not sure how to approach it with your PLAY instruments.

If you have any ideas on how you think it _should_ work, I can see if Reaticulate can be made to work that way.


----------



## axb312

Hi @tack ,

Trying to use the Fluffy Audio Solo woodwinds.

The trills there are instant articulations and are only played for as long as the keyswitch is pressed, else the instrument goes back to a sustained note.

I thought this was the command to get Reaper to hold a Key(switch) until the next one but it doesn't seem to be working:
//! c=fx i=trill-min2 o=note-hold:40
40 Minor Trill

Please help!


----------



## typewriter

Great work! I love the filter function to reduce the number of visible articulations on the fly.
Very usefull with the old VSL libraries with tons of articulations.

Right now the the filter uses the articulation names. I'd suggest additionally to filter by (invisible) "tags" that would be manually added to the articulation file/map. With this you could filter for example for "basic articulations" or "dynamics" - whatever you could imagine by adding such tags to the articulation.

Of course one could add such information to the articulation name but this makes the articulation name complex and long.


----------



## tack

axb312 said:


> I thought this was the command to get Reaper to hold a Key(switch) until the next one but it doesn't seem to be working:
> //! c=fx i=trill-min2 o=note-hold:40
> 40 Minor Trill


That looks good to me. Selecting that articulation will send a note-on, and defer the note-off until another articulation is activated. Just tested it and it does work for me.

So I guess we'll need to dig more into what you mean by "doesn't seem to be working."

If you add a ReaControlMIDI instance _after_ Reaticulate and enable the MIDI activity log, you can see exactly what Reaticulate is sending. If it's not sending a note-on when you select that articulation (but not yet the note-off) then it would be helpful if you took a screen capture of what the issue is.


----------



## tack

typewriter said:


> Right now the the filter uses the articulation names. I'd suggest additionally to filter by (invisible) "tags" that would be manually added to the articulation file/map. With this you could filter for example for "basic articulations" or "dynamics" - whatever you could imagine by adding such tags to the articulation.


That's an interesting idea!

Would anyone else find that valuable? It doesn't seem like it should be too hard to implement, but I also don't want to add features nobody cares about.


----------



## Zoot_Rollo

this could seal Reaper for me once and for all.


----------



## Divico

An option to dock Reaticulate in the Midi editor would be great.


----------



## tack

Divico said:


> An option to dock Reaticulate in the Midi editor would be great.


Unfortunately Reaper doesn't allow that. What I do is size my midi editor such that the docked Reaticulate window remains visible.


----------



## Divico

tack said:


> Unfortunately Reaper doesn't allow that. What I do is size my midi editor such that the docked Reaticulate window remains visible.


Thats what I do aswell. Unfortunately the screensets are buggy if it comes to the midi editor. I set one up to maintain this view but sometimes it doesnt open the midi editor.


----------



## Vadium

Hi Tack,

It seems more as a Reaper bug - Reaticulate (last version) doesn't transmit PrCh messages to VePro on osx (from Cubase all is ok, it is not VePro or anything else)

//! c=legato o=program:1
1 Legato

//! c=long o=program:2
2 Sustain 


Also question - a Flexrouter doesn't receive CC0 messages - is it normal?


----------



## tack

Vadium said:


> It seems more as a Reaper bug - Reaticulate (last version) doesn't transmit PrCh messages to VePro on osx (from Cubase all is ok, it is not VePro or anything else)


If you put a ReaControlMIDI instance right after Reaticulate and turn on the MIDI Activity log, when you activate one of those articulations, do you see Reaticulate sending the program change message?



Vadium said:


> Also question - a Flexrouter doesn't receive CC0 messages - is it normal?


Indeed, that does seem to be broken. I attempted a hasty fix -- can you try this version?


----------



## Vadium

tack said:


> can you try this version?


Nice! It's working! Thanks!
So, how to move rules from old version of the script to new one? (copy/paste or save/load rules functions?)



tack said:


> If you put a ReaControlMIDI instance right after Reaticulate and turn on the MIDI Activity log, when you activate one of those articulations, do you see Reaticulate sending the program change message?


Yes, I made a video. Also, PrCh from another source (Bidule) isn't working 
Question: is there a quick algorithm to add an alternating articulation to very much ostinato notes (as on att. pic.)? Is it possible to make a script "add selected articulation to selected notes? (A user selects notes with pressed shift and applied the 1st articulation. After it selects remaining notes and applied 2nd articulation - is it possible?)


----------



## tack

Vadium said:


> So, how to move rules from old version of the script to new one? (copy/paste or save/load rules functions?)


The easiest way to upgrade FlexRouter (maybe even the only way) is to copy/paste the source code into an existing KSP instance. This will preserve your rules. Admittedly it's a pain in the ass, but I've not discovered a better method with KSPs.



Vadium said:


> Yes, I made a video. Also, PrCh from another source (Bidule) isn't working


I see what you mean (video was very clear, thanks). I guess this isn't a Reaticulate bug, so selfishly I'm happy about that, but OTOH I've not used VEP with Reaper (or at all, for that matter) so I'm not sure how to advise you.

Coming from that place of ignorance, a few things I might try are:

If there is a master MIDI input logger in VEP for all things coming in, check there.
If you're able to shim a virtual MIDI device in between Reaper's output and VEP's input, you could attach a logger there to see if the program changes are even being sent by Reaper (which would make it a problem entirely in VEP's domain). For example, something like Bome MIDI Translator or LoopBe.
I understand that VEP has a VST plugin that can be dropped on the FX chain to communicate to the VEP instance as opposed to using MIDI outputs? This might be something to try as an alternative.



Vadium said:


> Question: is there a quick algorithm to add an alternating articulation to very much ostinato notes (as on att. pic.)? Is it possible to make a script "add selected articulation to selected notes? (A user selects notes with pressed shift and applied the 1st articulation. After it selects remaining notes and applied 2nd articulation - is it possible?)


But "add selected articulation to selected notes" is really just another way of saying "insert articulation at first selected note" isn't it? The workflow for that is different but feels roughly equal: instead of selecting notes and activating your proposed action, you move the edit cursor to the first note and right-click the articulation to insert it.

Ok, that's maybe just slightly less convenient if you don't want to fiddle with the edit cursor. I guess I can see a use for an action "insert articulation at first selected note" with some sort of keyboard modifier shortcut in the UI. Maybe right-click articulation inserts at edit cursor as today, and ctrl-right-click inserts at first selected note. Or something.

Meanwhile, assuming you were inputting things manually before, maybe the ostinato case can be improved by copying the program change messages along with notes and duplicating the selected events?


----------



## Vadium

tack said:


> Maybe right-click articulation inserts at edit cursor as today, and ctrl-right-click inserts at first selected note.


For now the quick way for me is mouse modifier (Ctrl+Opt+Cmd+left click on note) with assigned 2-step custom action: 1) move cursor to start of selected note 2) insert current articulation

And question about undo. If I insert 2 articulations and press undo 1 time, both articulations removed - what's wrong?


----------



## tack

Vadium said:


> And question about undo. If I insert 2 articulations and press undo 1 time, both articulations removed - what's wrong?


Yes, undo and reaticulate is hopelessly broken. (This thread gives a flavor about why.)

I will address this in the next major release (0.4.0). I don't know if I'm going to fix undo entirely or just make it so it doesn't do bizarre things like what you described, but some of the internal design overhaul I have cooking will at least make it possible for me to improve things.


----------



## Vadium

Hi Tack!
Is there a way to send messages from Reaticulate to several MIDI channels or to all 16 ch. at once? (for example, I have 16 instances of instrument, assigned from 1 to 16 ch (for different pitch band tuning and it is why I can not use OMNI mode in these instruments) and I want to switch articulations on all of them simultaneously


----------



## ProfoundSilence

Vadium said:


> Hi Tack!
> Is there a way to send messages from Reaticulate to several MIDI channels or to all 16 ch. at once? (for example, I have 16 instances of instrument, assigned from 1 to 16 ch (for different pitch band tuning and it is why I can not use OMNI mode in these instruments) and I want to switch articulations on all of them simultaneously



yes, would be something like o=note:[email protected]/note:[email protected]/note:[email protected]/.../@1/@2/@3/@4/.../@16
i think.


----------



## Vadium

ProfoundSilence said:


> something like o=note:[email protected]/note:[email protected]/note:[email protected]/.../@1/@2/@3/@4/.../@16


yes. bank for one instrument with 51 articulations x 16 channels = .... 816 entries of [email protected], [email protected], etc)) I ask because may be there is any tricks or abbreviations like [email protected]:34 or [email protected]:34..


----------



## ProfoundSilence

Vadium said:


> yes. bank for one instrument with 51 articulations x 16 channels = .... 816 entries of [email protected], [email protected], etc)) I ask because may be there is any tricks or abbreviations like [email protected]:34 or [email protected]:34..


I'm a cubase user who's only dabbled a little in reaper/reaticulate

I'd like to know if there is an easy way to send to all channels in flex router though


----------



## tack

Vadium said:


> I ask because may be there is any tricks or abbreviations like [email protected]:34 or [email protected]:34..


There is no shorthand unfortunately. I can see a use-case for @all though, and it should be fairly easy to add that capability. So I will.

[email protected]:34 is trickier than you think, at least assuming that should be treated as a single output event. [email protected]:34 _could_ just be syntactic sugar for [email protected]:34/[email protected]:34/[email protected]:34/.../[email protected]:34 but this would eat up 8 of your 16 allowed output events anyway. (The reason for that is boring and technical, but suffice it to say I'm encoding all the articulation information very conservatively in the JSFX and every individual bit is carefully managed.) It's not impossible, but I'd want to be very sure the use-case is worth it, and it hasn't really come up until now.

I don't think I'll put too much effort into syntactic niceties because the future expectation is that they'll be generated and managed via the GUI editor, and so those sort of shortcuts and UX improvements are best put there (where a computer isn't fussed at all about writing out all those repetitive output events )



ProfoundSilence said:


> I'd like to know if there is an easy way to send to all channels in flex router though


Assuming I understand you right, yes it is, with a bit of cleverness anyway. See this post.


----------



## Vadium

ProfoundSilence said:


> I'd like to know if there is an easy way to send to all channels in flex router though



Oh, it's good idea! not for all engines, like EW Play and UVI, but for Kontakt it may be quite usefull, thanks!



tack said:


> and it should be fairly easy to add that capability. So I will.


Great!


----------



## ProfoundSilence

tack said:


> There is no shorthand unfortunately. I can see a use-case for @all though, and it should be fairly easy to add that capability. So I will.
> 
> [email protected]:34 is trickier than you think, at least assuming that should be treated as a single output event. [email protected]:34 _could_ just be syntactic sugar for [email protected]:34/[email protected]:34/[email protected]:34/.../[email protected]:34 but this would eat up 8 of your 16 allowed output events anyway. (The reason for that is boring and technical, but suffice it to say I'm encoding all the articulation information very conservatively in the JSFX and every individual bit is carefully managed.) It's not impossible, but I'd want to be very sure the use-case is worth it, and it hasn't really come up until now.
> 
> I don't think I'll put too much effort into syntactic niceties because the future expectation is that they'll be generated and managed via the GUI editor, and so those sort of shortcuts and UX improvements are best put there (where a computer isn't fussed at all about writing out all those repetitive output events )
> 
> 
> Assuming I understand you right, yes it is, with a bit of cleverness anyway. See this post.


thanks Jason, but I meant sending to all channels simultaneously. 

I currently use it to send to different channels with no problem but not at the same time. 

would be useful for adjusting mic levels rather than having to set each individually


----------



## tack

ProfoundSilence said:


> hanks Jason, but I meant sending to all channels simultaneously.
> 
> I currently use it to send to different channels with no problem but not at the same time.


Ah, I see. Yeah unfortunately that's not something FlexRouter can do currently.


----------



## ProfoundSilence

tack said:


> Ah, I see. Yeah unfortunately that's not something FlexRouter can do currently.



it's not really a huge issue until I'm trying to change the microphone mix


----------



## crd

tack said:


> 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.



I would love to have that feature built in to Reaticulate. Some sort of Midi event sent out to a control surface depending on what articulation bank is selected on the selected track would be really helpful. 

(Also, I really love and appreciate it as is. Thank you!)


----------



## tack

crd said:


> Some sort of Midi event sent out to a control surface depending on what articulation bank is selected on the selected track would be really helpful.


That capability does exist now since I wrote what you quoted 

http://reaticulate.com/usage.html#articulations


----------



## crd

Oh, so a midi event is being sent to a control surface on cc0 on track select? Thanks for you patience with this! I’m away from my rig for four days but I think I know enough now to figure out how to what I’m trying to do in Lemur now.


----------



## tack

crd said:


> Oh, so a midi event is being sent to a control surface on cc0 on track select?


Doh, sorry, I misread -- not on track select. It happens when an articulation is activated, in which case it sends the bank select event and then the program change (or CC if you have elected to represent articulations as CCs to the control surface instead).

I'd like to better understand how Lemur would work here. I mean, I could send the bank select message on track change, but in the case where a track has multiple banks, the act of receiving one bank select message shouldn't necessarily replace the previous bank.

In fact, in the future, bank MSB/LSBs will become somewhat inconsequential. Banks will still have an MSB/LSB of course (as they must per MIDI), but they will be randomly assigned when a user imports the bank on their system.

I was thinking then perhaps a text event could be sent with the bank name. Reaticulate really could send just about anything. I just need to have a better handle on the use-case and what will provide different control surfaces the most flexibility.

So advice quite welcome.


----------



## crd

I don't have much experience with Lemur other than a few months of trying to get a touch screen set-up for myself so I am sure there is someone better qualified to tell you how best to set up Reaticulate to work with Lemur in this way. I know some people use Polypressure (or I guess, Poly Aftertouch in Reaper speak?) or Midi SysEx. Polypressure would be most helpful to me so I could use the Lemur template Mikhel Zilmer made available here, originally intended to be used with Cubase and Lemur that selected banks of articulations by midi channel and poly pressure data.

Would it be possible to have the information sent on track select be user defined? Someone could then set a different ID for tracks that use multiple banks.

Thank you!


----------



## tack

crd said:


> Would it be possible to have the information sent on track select be user defined? Someone could then set a different ID for tracks that use multiple banks.


Hm, yes, it would be after the aforementioned internal design overhaul, and that would conveniently side-step the problem of randomly generated bank numbers I mentioned earlier. Also, syncing to control surfaces is fringe enough that everyone's setup seems to be different, so just by allowing arbitrary user-definable MIDI data to be emitted on track select would probably satisfy the most number of people.

I'll probably start off by just allowing users to enter raw MIDI data (in hex codes) to be emitted and then develop the UX if it turns out enough people use it (and struggle with raw MIDI codes). I'm thinking of allowing up to 100 bytes of MIDI data. Surely that's enough for everyone? 

I'm tracking that feature here for a future release.


----------



## Vadium

Vadium said:


> Also, PrCh from another source (Bidule) isn't working


This issue was fixed in the newest Reaper 5.980 - now PrCh sends to VST3 instruments (also in Vepro) OK


----------



## robgb

Using .030 and have discovered that Reaticulate sometimes crashes version 5.980 of Reaper. I click on an articulation and boom—Reaper abruptly crashes. It seems random, and happened with the previous version of Reaticulate as well, so I was hoping that installing the update would help. And while it seemed to last longer this time, it still crashes. I'm using a Spitfire instrument with UACC KS on a Mac.

I will test out previous versions of Reaper when I have a chance, but I didn't have this problem until I updated Reaper.


----------



## tack

robgb said:


> I'm using a Spitfire instrument with UACC KS on a Mac.


Sounds like the plugin is crashing and taking Reaper out with it. Does the behavior change if you tell Reaper to run the instrument FX as a dedicated process? If the plugins fails but Reaper stays alive that corrobates the hypothesis that the plugin is crashing. 

Out of curiosity when you say Spitfire instrument is this Kontakt or their proprietary player?


----------



## robgb

tack said:


> Sounds like the plugin is crashing and taking Reaper out with it. Does the behavior change if you tell Reaper to run the instrument FX as a dedicated process? If the plugins fails but Reaper stays alive that corrobates the hypothesis that the plugin is crashing.
> 
> Out of curiosity when you say Spitfire instrument is this Kontakt or their proprietary player?


It's a Kontakt instrument using Kontakt 6.11. It's new behavior, so I don't know too many particulars at this point. I thought running an instrument FX as a dedicated process was only applicable for 32-bit FX. I see no way of running 64-bit Kontakt that way. ??

I'll try running it with the Reaticulate debugger running and see what happens.


----------



## Vadium

robgb said:


> sometimes crashes version 5.980 of Reaper


Yes, I have same random crashes too (with other Kontakt instruments, not with Spitfire, placed in Vepro 7 (last versions) on the other computer). macOS 10.3.6. I will try to use dedicated process

-----------------------------
How to specify, what articulation in group 2 must be pre-selected as default on the opening track? (for example, I want set as default release = 64)

//! c=default i=list g=2 o=cc:72,127
21 Release 127

//! c=default i=list g=2 o=cc:72,100
22 Release 100

//! c=default i=list g=2 o=cc:72,64
23 Release 64

//! c=default i=list g=2 o=cc:72,40
24 Release 40


----------



## tack

robgb said:


> I thought running an instrument FX as a dedicated process was only applicable for 32-bit FX. I see no way of running 64-bit Kontakt that way. ??


I'm afraid I'm more than a little clueless when it comes to OS X, but as far as I can tell it should be possible? Right click on the FX in the "Add FX" window, select Run As | Dedicated Process.

Kontakt crashes all the time for me, but not due to anything Reaticulate sends to it, but it happens when I close the FX window. (You might have seen my thread on the Reaper forums. It remains a mystery.)

Anyway, Reaper or any FX crashing isn't going to be a bug in Reaticulate as such. There _may_ be a way to work around it if we can get to the bottom of it.



Vadium said:


> How to specify, what articulation in group 2 must be pre-selected as default on the opening track? (for example, I want set as default release = 64)


This capability doesn't exist currently, mainly because upon initialization, Reaticulate can't know what state the instrument is in, so it just assumes nothing and waits for the first activation. I guess I could add a default flag that you can assign to one articulation in each group to handle the init case. I'm not super confident that's the best behavior though, just because absent knowledge of what state the instrument's in, my intuition is still that it seems best to assume nothing. Maybe you can convince me by expanding on your use-case.


----------



## Vadium

tack said:


> Maybe you can convince me by expanding on your use-case.


I have a couple of instances of an instrument with one articulation in each, and parameter (for example, release) in random state in each, so I want to control this parameter from Reaticulate on init state, before playing. I don't need to know instrument state, but want just to force send a right init value to it. I see 2 way for it:
1) In each project to place a parameter init value at start of an instrument track
2) to have an "init preselected slot" in a bank, and value from this slot will be chased by instrument (as I apologize, there are fewer unnecessary actions in this case, no?) In Cubase, for example, the first slot selected as default on init state.
It can be as option: select nothing if "def slot" isn't specified


----------



## tack

Vadium said:


> don't need to know instrument state, but want just to force send a right value to it.


Oh you didn't mean showing some default articulation as activated in the GUI, but actually activating it by sending the output events for that articulation. I misunderstood, I thought you were asking about a cosmetic thing only.

This would presumably only happen at the moment the bank is assigned to the track, and at no other time? Obviously it would require the bank to be added after the patch is loaded rather than before.

Anyway, currently this capability doesn't exist. I'll consider if I want to add it.



Vadium said:


> 1) In each project place a parameter init value at start of an instrument track


This is what I do. Also because I want CCs to be initialized a certain way, so it just makes sense to put all my desired default state into a little stub MIDI item at the front of the track.


----------



## Audio Birdi

HI @tack,

Tried setting up reaticulate with EastWest Hollywood Strings and getting some weird issues. I'm using version 0.3.1

Whenever I switch articulations, CC 65 gets turned on automatically when changing patches. (portamento script).

Also, it doesn't register the articulation change when selecting the articulation first time, so have to click on it twice to get it to respond / trigger properly.

Another strange thing I've seen is, when selecting program change number 3 next to an articulation name, a big line of numbers appears next to the articulation name on the right which is odd, since this hasn't been shown on any other program change numbers.

I've attached the .reabank file to this post.

Any help would be most appreciated, thank you!

Kabir


----------



## tack

@Audio Birdi sorry for the delay! This came in on Sunday when I was busy, but then it slipped my mind!  



Audio Birdi said:


> Whenever I switch articulations, CC 65 gets turned on automatically when changing patches. (portamento script).


I don't see anything obviously wrong in your Reabank here. Your routing-only output events like [email protected] are redundant because e.g. [email protected]:65,0 already implies that. But that won't hurt anything. Also many articulations have duplicate events for CC69 value 127 which seems little odd?

As I look at the MIDI sent out by Reaticulate, all the articulations except Portamento are sending CC65 value 0 on their respective channel. Portamento sends CC65 value 127.

You can confirm this yourself by adding a ReaControlMIDI instance after Reaticulate in the FX chain and showing the MIDI activity log. Do you also see this? Are you sure that CC65 value 0 is what you need to send to turn portamento off?



Audio Birdi said:


> Another strange thing I've seen is, when selecting program change number 3 next to an articulation name, a big line of numbers appears next to the articulation name on the right which is odd, since this hasn't been shown on any other program change numbers.


I'm not really sure what you mean here. The "big line of numbers" you describe sounds like the channel assignment. (Reaticulate will draw a boxed number to the right of the articulation name for each source channel that the articulation is mapped to.) But I'm not sure how that's happening, or what you mean by "selecting program change number 3 next to an articulation name." Might be best if you're able to take a screen capture of that behaviour, and what you're doing to trigger it?


----------



## Audio Birdi

Hi @tack,

No problem at all! 

So, whilst screen recording and screen capturing, oddly, both issues seem to be not being replicated, so all appears to be working OK at the moment! :D

Thank you for creating this, is an awesome plugin that speeds things up big-time!

I'm currently seeing if there's a way to get an elgato stream deck to automatically send and receive midi data from Reaticulate when changing tracks in reaper. The whole thing looks daunting as I don't know where to start with the SDK!

May go this approach if I don't get anywhere with it:



Always wondered how to get this working with Lemur but will see how the stream deck will work out with interfacing with reaper.


----------



## Vadium

Audio Birdi said:


> how to get this working with Lemur


seems good, but using of Lemur requires a big lot of extra entering zillion articulations to Lemur.. Additionally, as I know, Lemur has a limitation of data size for all button names - only 256 (!) symbols, as described on 11 min. in this video
- it is not a trivial task to fit all articulation names to Lemur articulation list. As has been previously written, I think that there are 2 easier ways:

1) if Reaticulate will able to show articulations not as a list, but as a spreadsheet, all we need is just to use a tablet as an additional external monitor (by using, for example, a https://lunadisplay.com/ software for iPad) and open Reaticulate as a separate window on a tablet. It already works, but a list representation of articulations does not use a full tablet screen effectively.

2) if Reaticulate will able to send articulation names by OSC, we can just receive and show these names on a tablet.
In both cases, a general idea is only one time to write an articulation bank in only one place and share this data between devices - it saves a lot of time.

Also a question: how to use a right-click on articulation on a tablet?


----------



## Audio Birdi

Vadium said:


> seems good, but using of Lemur requires a big lot of extra entering zillion articulations to Lemur.. Additionally, as I know, Lemur has a limitation of data size for a button names - it is not a trivial task to fit all articulation names to Lemur articulation list. As has been previously written, I think that there are 2 easier ways:
> 
> 1) if Reaticulate will able to show articulations not as a list, but as a spreadsheet, all we need is just to use a tablet as an additional external monitor (by using, for example, a https://lunadisplay.com/ software for iPad) and open Reaticulate as a separate window on a tablet. It already works, but a list representation of articulations does not use a full screen effectively.
> 
> 2) if Reaticulate will able to send articulation names by OSC, we can just receive and show these names on a tablet.
> 
> In both cases, a general idea is only one time to write an articulation bank in only one place and share this data between devices - it saves a lot of time.
> 
> Also a question: how to use a right-click on articulation on a tablet?



Agreed, a responsive spreadsheet (which can turn into a list when having the window with less width) will allow for a much better way of showing articulations in reaticulate. The separate window on a tablet is a great idea. Can you already select articulations in the current list view from a tablet?

Hoping OSC gets implemented in future too!


----------



## Vadium

Audio Birdi said:


> Can you already select articulations in the current list view from a tablet?


Yes, certainly (the video was posted here) - tablet works as a traditional second display with any soft, but with bonus - as touchscreen display! but from a tablet, I can only select articulation. if I need to make a right-click, I must to move a mouse cursor to tablet and make a right-click - as with a traditional second monitor. Maybe it is possible to assign a right-click to tablet gesture (two fingers pressing) - I have not tested it yet.


----------



## tack

Vadium said:


> if I need to make a right-click, I must to move a mouse cursor to tablet and make a right-click - as with a traditional second monitor. Maybe it is possible to assign a right-click to tablet gesture (two fingers pressing) - I have not tested it yet.


How about support for long presses in lieu of right-click? That should be relatively easy to implement.

Edit: or perhaps a double-tap instead. This way it's consistent with the "Activate selected articulation on default channel" action, wherein, according to the docs, "triggering this action twice in rapid succession will force-insert the program change event into the current MIDI item at the edit cursor."

I can imagine implementing this logic for some other actions too. So double tapping articulations in the UI would be better from a consistency perspective.


----------



## Vadium

tack said:


> How about support for long presses in lieu of right-click?


I think it is very individual (as writing manner in phones), and best way to make these commands customizable for users. In cases with a lot of notes, I prefer one short right-click - long press or double click are makes an overall process slower


----------



## Vadium

Audio Birdi said:


> Tried setting up reaticulate with EastWest Hollywood Strings


How you transform CC to Play program selection?

I have tried to use 5 instances of Play in Plogue Bidule and found, that it uses CPU not effectively and overload it...


----------



## Audio Birdi

Vadium said:


> How you transform CC to Play program selection?
> 
> I have tried to use 5 instances of Play in Plogue Bidule and found, that it uses CPU not effectively and overload it...


Hi there!

Sorry for the delay in reply!

I use one instance of PLAY per instrument, with mutliple channel based patches containing solo and keyswitch patches per channel.

I've attached my user reaticulate file and scripts I use to insert program change messages at the edit cursor. Still trying to figure out how to have them insert at each selected note.

I only have Hollywood Strings Violins 1 done so far in Reaticulate as a test.

Hope this helps!


----------



## Vadium

Is there a way to force modifying a passing note's velocity to selected value? For example, if I select a Legato articulation from a bank, velocity for all notes I play transforms to 127, if I select Portamento, velocity for all notes I play transforms to 1 - is it possible? (attached picture - how it realized in Cubase Expression maps)


----------



## tack

Vadium said:


> For example, if I select a Legato articulation from a bank, velocity for all notes I play transforms to 127, if I select Portamento, velocity for all notes I play transforms to 1 - is it possible?


I'm afraid not, but I understand the use-case and it fits with Reaticulate's purpose. I'll look at adding that feature.


----------



## tack

Vadium said:


> (attached picture - how it realized in Cubase Expression maps)


Everything else there is self-explanatory (or clear from Cubase's documentation) except for Length. Does one specify a fixed note length there, or is it like velocity where it's expressed as a percentage of the incoming note duration?

BTW, tracking here if you want to comment more about requirements: https://github.com/jtackaberry/reaticulate/issues/72


----------



## Vadium

tack said:


> expressed as a percentage


yes, percentage. from 20 (why not 1?) to 200%

One more question about using and routing a VePro. there are not only midi channels, but also lot of midi ports can be used in one VePro instance. One port can contain up to 16 midi channels. There are some cases, where several ports need for one instrument (for example, large instruments like OT Strings, but not Kontakt-based - it is impossible to use a flexrouter). So, is it possible (may be in far future) to control from Reaticulate a routing not only between midi channels but also between ports? (Legato @port1 @1, staccato @port2 @14, etc) - is it technically possible?


----------



## tack

Vadium said:


> So, is it possible (may be in far future) to control from Reaticulate a routing not only between midi channels but also between ports? (Legato @port1 @1, staccato @port2 @14, etc) - is it technically possible?


It's not possible today, but it's planned. I see I don't have an issue open on GitHub for that (will open onehave opened one), but I have a TODO in the source code.


----------



## Vadium

Check please, is it a bug introduced by last Reaticulate updates?

Some of my banks started to work strange:

If I switch any of 2,3 or 4 group, articulation in group 1 resets to midi ch1...
it happens in banks, where different arts placed on different midi channels, like this:

//----------------------------------------------------------------------------
//! g="EW/EWQLSO Strings" n="EW Violins 1"
Bank 7 14 EW Violins 1


//! c=default i=list g=2 o=cc:13,1
70 Performance mode
//! c=default i=list g=2 o=cc:13,100
71 Play mode (Delay is ON)

//! c=long [email protected]
0 Expressive fast DXF


//! c=long [email protected]
1 Sus Vib Slr


//! c=long [email protected]
2 QLegato DXF

//! c=long [email protected]
3 Sord Emotion DXF

//! c=long [email protected]
4 No Vibrato ----- Velocity only :((((

//! c=short [email protected]
5 Tremolo ----- Velocity only :((((

//! c=short [email protected]
6 Marcato Long

//! c=short [email protected]
7 Marcato Med

//! c=short [email protected]
8 Marcato Short

//! c=short [email protected]
9 Spiccato

//! c=short [email protected]
10 Quick Up and Down RR6

//! c=short [email protected]2
11 Pizz RR3

//! c=short [email protected]
12 Bartok Pizz RR

//! c=short [email protected]
13 Pendereki (от С1 до РЕ#1)

//! c=short [email protected]
14 Cluster and Air (от С1 до Фа#1)

//! c=short [email protected]
15 Slur Med (форшлаг)



If I select Pizz in this bank and change CC13 by selecting the arts 70 or 71, pizz resets to Expressive fast


----------



## tack

Vadium said:


> Check please, is it a bug introduced by last Reaticulate updates?


Are you saying this worked before? I'm not sure it would have ...



Vadium said:


> //! c=default i=list g=2 o=cc:13,1
> 70 Performance mode
> //! c=default i=list g=2 o=cc:13,100
> 71 Play mode (Delay is ON)


What's intended here? I'm _guessing_ you intend for these output events to be sent to the channel that the _previous _articulation has setup routing to?

What actually happens: it will send the CC13 events to the same channel as the program change channel (assuming your bank is assigned to the track as Omni->Source) and then cause routing of future events to go to that channel.

You can prevent modification of the routing by prefixing the output type with a -



Code:


//! c=default i=list g=2 o=-cc:13,1
70 Performance mode
//! c=default i=list g=2 o=-cc:13,100
71 Play mode (Delay is ON)


But that still won't cause those CC13 events to be sent to the channel that was set up by the previous articulation. That's actually not something Reaticulate could do. I have an open issue for that feature for a while:









Allow output events to be routed to current target channels based on previous articulation · Issue #42 · jtackaberry/reaticulate


Sometimes you want an articulation to send output events to the dst channels setup by a previous articulation. Proposed syntax would be to use - as the output channel. This borrows the semantics of...




github.com


----------



## Vadium

tack said:


> Are you saying this worked before?


Yes, this worked before, but now I can't repeat it.

In my case it doesn't matter, on which channel sends CC13 (it can be con/sensa sordino, or delay on/off, etc.) - it is important, that selected articulation (pizz) still be same after changes in other groups




tack said:


> You can prevent modification of the routing by prefixing the output type with a -


Thank you! it works!


----------



## tack

Vadium said:


> Yes, this worked before, but now I can't repeat it.


If it worked before, it was a bug before. 



Vadium said:


> In my case it doesn't matter, on which channel sends CC13 (it can be con/sensa sordino, or delay on/off, etc.) - it is important, that selected articulation (pizz) still be same after changes in other groups


Ok, if it doesn't matter which channel receives the CC13 then you can do this today. Just prefix the output event type with a - like I showed in my previous post.


----------



## Stevie

axb312 said:


> Embertone Herring Clarinet:
> 
> //----------------------------------------------------------------------------



There were some issues with the bank (the trills didn't work and were assigned to the wrong UACC number) , so I fixed them:



Code:


//! g="Embertone" n="Herring Clarinet"
//! chase=1,15,96
//! m="Velocity less than 13 is portamento. Velocity at 127 is ornament"

Bank 4 1 Embertone Herring Clarinet

//! c=legato i=legato o=note:36/note:41
20 Legato
//! c=legato i=legato o=note:36/note:37
21 Tongued Legato

//! c=short i=staccato o=note:38
40 Short

//! c=long i=trill-min2 o=note:36/note-hold:39
70 Trill Minor hotkey
//! c=long i=trill-maj2 o=note:36/note-hold:40
71 Trill Major hotkey


----------



## tack

Stevie said:


> There were some issues with the bank (the trills didn't work and were assigned to the wrong UACC number) , so I fixed them:


Thanks Stephan. I've committed that fix.

BTW everyone all the various user-submitted banks are compiled here (basically as-is with only minor adjustments by me):









reaticulate/userbanks at master · jtackaberry/reaticulate


An articulation management system for REAPER. Contribute to jtackaberry/reaticulate development by creating an account on GitHub.




github.com


----------



## Stevie

Thanks for collecting those! That's where I got most of them from 
I'm sure there are more fixes needed for some banks, but I'm checking them while composing.
So, I might eventually go thru all of them and post the fixes here, if that's okay.


----------



## tack

Stevie said:


> So, I might eventually go thru all of them and post the fixes here, if that's okay.


It'd be better for me (and less spammy here) if you could open an issue on GitHub to compile your fixes (or separate issues if you prefer)?


----------



## Stevie

That's a great idea, will do that!


----------



## Vadium

How to make chase work not only for CC but for PrCh too? If I use a bank with selecting articulations by PrCh and have first 1-4 bars with legato notes and next 5-8 bars with pizz, if I play all - all is ok, then if I place a play cursor to bar 3 (after Legato switch event) I still listen the pizz


----------



## tack

Vadium said:


> How to make chase work not only for CC but for PrCh too? If I use a bank with selecting articulations by PrCh and have first 1-4 bars with legato notes and next 5-8 bars with pizz, if I play all - all is ok, then if I place a play cursor to bar 3 (after Legato switch event) I still listen the pizz


Reaper chases program changes per channel automatically, so I'm not sure this isn't working.

The only caveat is that _groups_ are a Reaticulate concept that Reaper itself doesn't know about. So while you might expect the last program in each group in each MIDI channel to be chased, Reaper will only chase the last program in each MIDI channel.

So I'm not sure why this isn't working for you. It should Just Work. Perhaps you could share a simple project file that reproduces this as there may be some nuance at play.


----------



## Vadium

tack said:


> Reaper will only chase the last program in each MIDI channel.


Oh, thanks for caution - it can be caused because now I test a complex setup with all next notes plays on a different midi channel. I will try to use CC for change articulations


----------



## axb312

//! g="Harmonic Subtones/Emotional Cello"
//! chase=1,11,22 m="E-1 and F-1 repetitions"

Bank 10 8 Emotional Cello

//! c=short i=spiccato o=note:20
20 Spiccato

//! c=short i=staccato o=note:21
21 Staccato

//! c=short i=pizz o=note:22
22 Pizzicato

//! c=short i=spiccato o=note:23
23 Fast Spiccato

//! c=legato i=legato o=note:24
24 Soft/ Delicate

//! c=legato i=legato o=note:25
25 Soft/ Fast Delicate

//! c=legato i=legato o=note:26
26 Soft/ Proud Vibrato

//! c=legato i=legato o=note:28
28 Med/ Moderate 1

//! c=legato i=legato o=note:29
29 Med/ Moderate 2

//! c=legato i=legato o=note:30
30 Med/ Pick Up

//! c=legato i=legato o=note:31
31 Loud/ Fortepiano

//! c=legato i=legato o=note:32
32 Vivid (velocity controlled)

//! c=legato i=legato o=note:33
33 Non-Vib Renaissance 1

//! c=legato i=legato o=note:34
34 Non-Vib Renaissance 2

//! c=legato i=legato o=note:27
27 Expressive (vib.) XFade

//! c=legato i=legato o=note:35
35 Non-Vib Crossfade

//----------------------------------------------------------------------------


----------



## axb312

//! g="Embertone/Joshua Bell Violin"
//! chase=1,11

Bank 10 7 Joshua Bell Violin

//! c=legato i=legato o=note:36
1 Legato

//! c=long i=tremolo o=note:37
2 Tremolo

//! c=fx i=trill-min3 o=note:38,63
3 Trill Minor

//! c=fx i=trill-maj2 o=cc:38, 65
4 Trill Major

//! c=short i=staccato o=note:39
5 Staccato

//! c=short i=spiccato o=note:40
6 Spiccato

//! c=short i=riccochet o=note:41,30
7 Riccochet Single

//! c=short i=riccochet o=note:41,90
8 Riccochet

//! c=short i=pizz o=note:42
9 Pizzicato

//! c=long i=harmonics o=note:43
10 Harmonics

//! c=fx i=crescendo o=note:44,30
11 Crescendo Long

//! c=fx i=crescendo o=note:44,90
12 Crescendo Short

//! c=fx i=decrescendo o=note:45,30
13 Diminuendo Long

//! c=fx i=decrescendo o=note:45,90
14 Diminuendo Short

//! c=fx i=fx o=note:46,30
15 Arc Long

//! c=fx i=fx o=note:46,90
16 Arc Short

//----------------------------------------------------------------------------


----------



## Vadium

Is it possible to make more, than 4 groups? 6 or 8? 4 groups isn't enough, for example, for EW HS: g2 = performance delay on/off, g3 = finger position, g4 = tight/loose shorts, g? = con/sensa sordino


----------



## tack

Vadium said:


> Is it possible to make more, than 4 groups? 6 or 8?


Afraid not. 4 is a hardcoded limit. (I needed to draw the line somewhere, so went with Cubase's choice of 4 groups.) One option is to create a separate bank for the additional groups and map it onto the track with a specific (unused) source channel. (This has an incidental benefit that Reaper will properly chase programs on different channels.)


----------



## Zoot_Rollo

still getting used to Reaticulate and ReaControlMIDI


----------



## halfwalk

Zoot_Rollo said:


> still getting used to Reaticulate and ReaControlMIDI



Sorry all for going off-topic, but how did you get your MIDI editor to look like that? As in, putting the track list on the bottom (under the CC lanes, as opposed to on the side of everything) and getting it to show the actual clips in the timeline?

Edit: nevermind, found it! (contents-> media item lane) But thanks for sharing your screenshot, I learned something new from it


----------



## Zoot_Rollo

The more i dig into Reaper, the less i use my other DAWs.

Eventually ...


----------



## Zoot_Rollo

i think i finally have my preferred Kontakt workflow set up.

i've gone through it with Studio One Pro and Cubase 10 Pro.

Reaper feels right - for now.

Modified Commala theme.

-

now i just need to create my own Reaticulate Banks/Patches for all my Libraries - more to learn.

-

TRACK TEMPLATES fucking KILLING IT!

ReaControlMIDI with its bezier envelope curves are indispensable.


----------



## Zoot_Rollo

yes, this works.

thanks for watching!


----------



## Vadium

Hi Jason,
I found that delay in HS is more complex than in CSS - it has a linear relationship (and not only). https://vi-control.net/community/threads/velocity-relative-delay-for-hs.85023/post-4428416
so, in the distant future, it is good to have for each articulation not just one delay value or 3 values for 3 velocity zones, as in CSS case, but a graphic map of velocity to delay relation


----------



## tack

Vadium said:


> so, in the distant future, it is good to have for each articulation not just one delay value or 3 values for 3 velocity zones, as in CSS case, but a graphic map of velocity to delay relation


Interesting. So the basic point here is that a proper implementation would, under the hood, need to support a custom delay for all 128 velocities. Thanks for the heads up.


----------



## Vadium

Is it possible to make an appearance of banks contextual?
For example, 1st bank is main (Sus, Legato, Trill. etc.), other banks - different kinds of selected by first bank articulations? (they uses same notes for switching, but have different names, context depended)


----------



## tack

Vadium said:


> Is it possible to make an appearance of banks contextual?


Not possible today.



Vadium said:


> For example, 1st bank is main (Sus, Legato, Trill. etc.), other banks - different kinds of selected by first bank articulations? (they uses same notes for switching, but have different names, context depended)


That's a new use-case for me. But I guess these other contextual articulations would need to use different program numbers too. Because even if Reaticulate could filter the bank list based on some current articulation in another group (which it could -- kinda similar to how the output event filtering works), Reaper wouldn't have any clue about that. In order to show the proper articulation name in the MIDI editor they would need to use different program numbers (even if they used the same output events).

How common in this type of thing? Is it safe to say it's a bit of an esoteric feature?


----------



## Vadium

tack said:


> How common in this type of thing? Is it safe to say it's a bit of an esoteric feature?


it happens seldom. As in current case articulations in the instrument switches by simultaneously pressing of 2 keys, this esoteric feature can help to navigate throw list of ~100 articulations (especially if this list cannot be switched to spreadsheet-view): selection a general type of articulation by first click (nothing sends to instrument), and then selection a context keyswitch by second click. For now, I use a "filter articulations" function. I think in the near future there will be more instruments with more articulations


----------



## tack

Vadium said:


> Is there a way to force modifying a passing note's velocity to selected value? For example, if I select a Legato articulation from a bank, velocity for all notes I play transforms to 127, if I select Portamento, velocity for all notes I play transforms to 1 - is it possible? (attached picture - how it realized in Cubase Expression maps)


I'm going to start implementing this soon. Can you confirm that this description aligns to what you had in mind?









Allow articulations to perform transformations on incoming notes · Issue #72 · jtackaberry/reaticulate


To provide more parity with Cubase expression maps output mapping, articulations should be able to: Transpose Adjust velocity via a multiplier (for e.g. accents) Interpolate velocity within a defin...




github.com





Thanks!

P.S. I implemented support for multiple buses. It was a really complex change (mainly in the JSFX) -- hopefully I managed to avoid breaking too much or adversely affecting performance. It will be available in the next release.


----------



## Vadium

tack said:


> Can you confirm that this description aligns to what you had in mind?


Yes.




tack said:


> I implemented support for multiple buses.



Hurray!
This is a very big step forward, big thanks!





tack said:


> That's a new use-case for me.


I'm trying to figure out another new use case right now. There are instruments from WARPIV library in which users can specify the note release behavior (jazz falls, doits, etc) by keyswitches (yellow colored in att. pic.). They start to play after note-off occurs. I placed these keyswitches to separate group, but it's not works.
For example: I select Legato from group 1. Then I select a "Falls smooth short" release from group 2. As result it must be each time I pressing a key, I hear a legato note with the selected release. But I hear only silence (instead of art from group1) with this release (as if he - one of the articulations from group 1). For listening to legato I should select "Legato" art from 1st group again. I will ask for it library creators, but, maybe already there is a way to make it works in Reaticulate: independent control a note-on articulations by group 1 and note-off articulations by group 2 at once?

update: sorry, it's not works as standalone, without Reaticulate. I fixed it by adding to another midi channel the additional instrument for release purposes only


----------



## tack

Vadium said:


> tack said:
> 
> 
> 
> Can you confirm that this description aligns to what you had in mind?
> 
> 
> 
> Yes
Click to expand...

Does the min/max pitch and velocity just simply clamp the values to the min/max? Or does it interpolate a value within the range?

For example, suppose you have a velocity range of 30-80. If you send a note with velocity 10, does it clamp it to 30, or does it interpolate it to 10*(80-30)/127+30 = 34? Or if you send velocity 64, does it pass that through (because it's in range) or interpolate to 64*(80-30)/127+30 = 55?

In the GitHub issue I had spec'd the interpolation (I was inferring how Cubase worked there) but now that I think about it, it seems like the clamping behaviour would be more broadly useful.

Alternatively, does it simply drop events that are outside the min/max range?

So there's really 3 different possible behaviours:

Clamp to min/max
Drop event if outside min/max
Interpolate within min/max


----------



## Vadium

tack said:


> For example, suppose you have a velocity range of 30-80. If you send a note with velocity 10, does it clamp it to 30, or does it interpolate it to 10*(80-30)/127+30 = 34? Or if you send velocity 64, does it pass that through (because it's in range) or interpolate to 64*(80-30)/127+30 = 55?



in Cubase these bounds works as limiter (clamp to min/max):

if you send 10 it will clamp to 30
if you send 64 it will pass through
if you send 127 it will clamp to 80
As I see on midi monitor, this process affects on midi note-on events only (see att. pic.). I don't know, but for some cases may be it's good to have the same settings for note-off events

same for note pitch.

By the way, it's a very useful option to have a note-filter for keyswitches. For example: we have an instrument, in which keys C0-F#2 are keyswitches and keys G2-G5 are the notes of the instrument. If we use a PrCh to select articulations, it's quite helpful to set note-pressing filter from C-2 to F#2: it will save us from accidental unwanted articulation switching by midi keyboard while music playing.


----------



## tack

0.3.90 -- the first *pre-release* version leading up to 0.4.0 -- is now available via the pre-release ReaPack:



Code:


https://reaticulate.com/prerelease.xml


See here for more detailed download instructions. Those of you already on the pre-release track should automatically receive it (provided you haven't pinned to a specific version).

*Overview*

Although this release contains several new features and fixes, the bulk of the work has been toward a significant internal design overhaul of how the main app communicates with the per-track Reaticulate JSFX instances (#62), plus improved flexibility of how articulation and output event options are processed by the JSFX.

These changes pave the way for more sophisticated features than were previously possible (some of which are included in this release), but despite my best efforts in testing, the sheer volume and complexity of these changes means regressions are probable.

Your help testing this pre-release is very much appreciated. Do **backup your projects first** as those saved with this version will be incompatible with older Reaticulate versions. (This is generally true of major releases.)

Note: Reaper 5.97 (released on February 21, 2019) or later is now required.


*New Features*


 This release introduces support for multiple MIDI buses. Anywhere previously involving a destination MIDI channel can now optionally include a MIDI bus number as well. Among other things, this allows for better integration with Vienna Ensemble Pro. (#73)
 Articulations can now define transformations to incoming notes after the articulation is activated. These include transposing the notes, a velocity multiplier, and pitch and velocity range clamping. (#72)
 Output events can now be routed to destination channels set up by the previous articulation by using '-' as the channel (#42)
 Output events can now send pitch bend MIDI messages (#60)
 Double clicking an articulation or invoking any of the activate articulation actions twice within 500ms will force insert the articulation in the MIDI item at the edit cursor. (This is equivalent to right clicking, which behavior still exists.)
- The old behavior of always inserting when step record is enabled has been removed in favor of this consistent approach.

Documentation on the website (https://reaticulate.com) has been updated to reflect these new features.


*Minor Enhancements*


 Bank messages (set with the 'm' attribute in the bank definition) can now be viewed from Reaticulate's main articulation list screen
 Errors and other problems with banks or track configuration are now more visible in the articulation list screen
 Linux: preliminary support
 Added tremolo-180-con-sord icon
 Many other small GUI refinements

*Bug Fixes*


 Fixed problem where insertion of articulations could not be undone by Reaper's undo action
 Fixed bug where 'art' type output events combined with filter programs could hang Reaper (infinite loop)
 Fixed bug where activating an articulation that acts as a filter to another articulation's 'art' output events could activate the wrong child program
 Fixed bug when MIDI controller feedback was enabled where Reaticulate would sometimes install sends to the wrong track when a new project was opened
 Mac: use the Reaper theme background color for Reaticulate's window
 Fixed bug when opening the Reabank file editor on Windows when the path contained spaces
 Fixed rare crash when last touch fx becomes invalid
 Factory banks: Fixed trills and tongued legato for the Herring Clarinet
 Do not clear serialized variables in @init per JSFX docs (#65)


----------



## tack

Vadium said:


> update: sorry, it's not works as standalone, without Reaticulate. I fixed it by adding to another midi channel the additional instrument for release purposes only


If I understand your problem correctly, it was that you had two articulations active in two different groups but Reaper was only chasing the last one? Yes, classic problem unfortunately, and your solution here to put the RT articulations into its own bank on a separate source channel is the best one.

I have an open issue on the problem of chasing multiple groups with some design ideas for a workaround but it's just really complicated and hackish and I'm not sure it will work well in practice.


----------



## Vadium

a color bug: I don't see a description of KS action at the bottom of the window. A text color match with a background? Also, I very like a previous black background - it will be nice if will be possible to select between black (or any?) color and theme color


----------



## tack

Vadium said:


> a color bug: I don't see a description of KS action at the bottom of the window


Thanks, fixing. (And fixed.)



Vadium said:


> Also, I very like a previous black background -


Yes, it was actually a bug that Reaticulate _didn't_ match the Reaper theme background color on Mac. What theme are you using?



Vadium said:


> it will be nice if will be possible to select between black (or any?) color and theme color


I do plan to add the ability to choose a custom background color in the next prerelease.


----------



## tack

@Vadium in the meantime you can insert this line here (between int2hex() and color2luma()) on your local system:



Code:


bg = '#000000'


----------



## Vadium

tack said:


> What theme are you using?


I'm use a GrayMatter: https://forum.cockos.com/showthread.php?t=78885
with customized colors for my case (I frequently use E-ink monochrome display for save my eyes)



tack said:


> in the meantime you can insert this line here


Thanks a lot, now background reverted to black and arts info at the bottom appears ok)


----------



## Vadium

A strange thing: If I open projects with simple routing like this:

//! c=short [email protected]
6 Staccato long RR
//! c=short [email protected]
8 Staccato short RR

(projects made before the update), this routing isn't working until I press a refresh button at the top of the reaticulate window.


----------



## tack

Vadium said:


> A strange thing: If I open projects with simple routing like this:
> 
> //! c=short [email protected]
> 6 Staccato long RR
> //! c=short [email protected]
> 8 Staccato short RR
> 
> (projects made before the update), this routing isn't working until I press a refresh at the top of the reaticulate window.


Hm, I've tested various migrations from Reaticulate versions as far back as 0.1.0 and everything seemed ok. Maybe I missed this simple channel routing case. I will take a look in a few hours.

Thanks for the report, keep 'em coming.


----------



## tack

tack said:


> Maybe I missed this simple channel routing case.


I clearly did. Reproduced and fixed for the next prerelease.

Thanks @Vadium ! Surely this isn't the only bug you've encountered so far?


----------



## Vadium

tack said:


> Surely this isn't the only bug you've encountered so far?


today I've attempted to finish a big reeds template, but it turned out to be more complicated than I thought.. so it almost complete and I will make a new template with new Reaticulate features (midi buses, vepro, etc.)


MIDI bus routing is working! Super!



Please, add to bottom info string also info about Bus routing, for example: Routes to ch 1 *bus 1*


----------



## tack

Vadium said:


> MIDI bus routing is working! Super!


Awesome! Thanks for the video. Nice to see it in action. 



Vadium said:


> Please, add to bottom info string also info about Bus routing, for example: Routes to ch 1 *bus 1*


Done (if the bus is explicitly set in the output event, as yours are). Thanks for the suggestion.


----------



## Vadium

Hi @tack ,
I reached the limitation of 16 midi ports. But VePro provides 48 and I use almost all (for example, 42 ports needs to use HS 1st violins in MPE mode) - is it possible to increase this limit to 48?

hm.. I think it's an internal Reaper limitation, yes? I can bypass it by opening Vepro inside Plogue Bidule inside Reaper, but it means that I should use additional soft anyway, instead of a pure combination of Reaper+Reaticulate, yes?

Also feature request, maybe in the distant future - multiple CC remapper. there are many instruments with different hard-preassigned CC to controls, like EW Play instruments, where users often want to reassign CC11 to CC7, CC2 to CC1 and CC1 to CC11 on the fly. As variant, graphically it can be realized as popup menus in Bidule (see att.pic.)


----------



## tack

Vadium said:


> hm.. I think it's an internal Reaper limitation, yes?


Yep. Reaper only allows up to 16 buses. You would first have to lobby to the Reaper Gods to extend this. 



Vadium said:


> Also feature request, maybe in the distant future - multiple CC remapper.


Why wouldn't the stock MIDI CC Mapper JSFX work here? Do you mean per articulation CC remapping?

I can see that different instruments would necessitate different mappings, but with a track-per-instrument approach wouldn't track-level CC remapping be ok?


----------



## Vadium

tack said:


> You would first have to lobby to the Reaper Gods to extend this.



Yes, I started to do it on September 23) but, as I see, only 2 people want it - it's a very quiet request for Gods ))





Request for more MIDI ports available in Reaper - Cockos Incorporated Forums


Request for more MIDI ports available in Reaper REAPER Feature Requests



forum.cockos.com








tack said:


> but with a track-per-instrument approach wouldn't track-level CC remapping be ok?


in most cases - yes, it will enough. but for such crazy people as me - no, because if in one bank there are different instruments placed on different MIDI buses (all articulations routed to VSL sync strings, but legato - to HS strings) - different mapping required for different buses..


----------



## Vadium

if anyone does not know, it's possible to change the articulation by double-clicking on the event (or set a mouse modifier on your taste (Midi editor/double click on MIDI CC event) :


----------



## tack

0.3.91 is now available via the pre-release ReaPack:



Code:


https://reaticulate.com/prerelease.xml


See here for more detailed download instructions. Those of you already on the pre-release track should automatically receive it (provided you haven't pinned to a specific version).

These are the changes since the last prerelease (0.3.90):

*New Features*


 Allow user-configurable background color (in Settings page)

*Minor Enhangements*


 Improved text entry widget behavior
 Add bus number to output event description in status bar
 Clean up after deleted/deactivated Reaticulate JSFX instances (#77)
 Minor robustness improvements

*Bug Fixes*


 Fix regression from 0.3.90 where output events' destination channels would be ignored
 Fix unreadable status bar text on light themes


----------



## tack

0.3.92 is now available via the pre-release ReaPack:



Code:


https://reaticulate.com/prerelease.xml


See here for more detailed download instructions. Those of you already on the pre-release track should automatically receive it (provided you haven't pinned to a specific version).

*Your Help Needed!*

Bug reports for the 0.4.x pre-release cycle has been suspiciously few given the magnitude of change in this release. If you use the pre-release I'm interested to hear about your experience even if you haven't encountered any problems. If you haven't, I'd be grateful if you could take it out for a spin and test out some of your existing projects.


These are the changes since the last prerelease (0.3.91):

*New Features*


 Add option for undocked windows to be borderless (requires a fairly recent version of the js_ReaScript_API extension)
 When the MIDI editor is open and notes are selected, articulations will insert just ahead of the first selected note rather than at the edit cursor. (Right- or double-clicking articulations are still used for insertion.)
 Much better support for light themes

*Minor Enhancements*


 Minor cosmetic enhancements, especially on Mac

*Bug Fixes*


 Fix regression from 0.3.90 where output events may not be sent to the proper channel. (The fix for this in 0.3.91 was incomplete.)


----------



## Vadium

tack said:


> Double clicking an articulation or invoking any of the activate articulation actions twice within 500ms will force insert the articulation in the MIDI item at the edit cursor. (This is equivalent to right clicking, which behavior still exists.)


Hi Tack,
this manner works only in 5% for me on macOS - strange. I have tried as very quick double-clicks (completely not work), as close to 499ms (work in 5% cases, after placing a cursor to the new timeline place)

Update: it's work ok, if the MIDI editor is closed, but if I place a cursor inside MIDI Editor open - 5%


----------



## tack

Vadium said:


> this manner works only in 5% for me on macOS - strange. I have tried as very quick double-clicks, as close to 499ms)


Hm, I'm not able to reproduce on OS X. Is right-clicking working consistently or is it also intermittent? Is the behavior the same in these scenarios?

MIDI editor open with notes selected (relevant if using 0.3.92)
MIDI editor open with notes unselected
MIDI editor closed but track selected and edit cursor over a MIDI item
Also, when you double click is the button drawing as depressed for both clicks?

Like this:


----------



## Vadium

right-clicking working OK

MIDI editor open with notes selected or unselected - 5%

MIDI editor closed but track selected and edit cursor over a MIDI item - working OK




tack said:


> when you double click is the button drawing as depressed for both clicks?


only 1 time for 2 clicks at all


----------



## tack

@Vadium let's take it to PM


----------



## Vadium

All introduced features of 0.3.90-92 except a double click are work for me on macOS 10.13.6, thanks a lot!

It may be useful mode of pitchrange=60-72 - to mute notes, that out of range


----------



## tack

Vadium said:


> All introduced features of 0.3.90-92 except a double click are work for me on macOS 10.13.6, thanks a lot!


Great! Thanks for the feedback.


Vadium said:


> It may be useful mode of pitchrange=60-72 - to mute notes, that out of range


I did offer that as a possibility (behavior #2) but you seemed more interested in the clamping behavior. 

Will consider it for a future release. It's should be possible without too much effort.


----------



## Vadium

tack said:


> but you seemed more interested in the clamping behavior.


ha-ha, it was about velocity, but now I'm about note pitches)


----------



## tack

Vadium said:


> ha-ha, it was about velocity, but now I'm about note pitches)


The _example_ was about velocity, but the behavior question was about both. 



tack said:


> Does the min/max pitch and velocity just simply clamp the values to the min/max?


----------



## Vadium

oh, yes, sorry)

but it's not as relevant as the ability to send to all channels at once to avoid such a nightmare))


----------



## tack

Vadium said:


> but it's not as relevant as the ability to send to all channels at once to avoid such a nightmare))


Yikes, I see what you mean. And that won't even actually work, because the maximum output events you can have is 16.


----------



## tack

0.3.93 is now available via the pre-release ReaPack:



Code:


https://reaticulate.com/prerelease.xml


See here for more detailed download instructions. Those of you already on the pre-release track should automatically receive it (provided you haven't pinned to a specific version).

*Your Help Needed!*

Barring reported bugs, this version will be promoted from pre-release to 0.4.0. Any time you are able to spend testing and providing feedback about issues (or lack thereof!) is most appreciated.


These are the changes since the last prerelease (0.3.92):

*Minor Enhancements*


 More intelligent articulation insertion logic when notes are selected. Program changes will now be inserted at gaps in the selection, and the channel of the note will be used for the program change rather than the default channel.
 Delay refocusing the MIDI editor (if open) when double clicking articulations to reduce window focus flicker


*Bug Fixes*


Fix minor text cropping bug when the window is a certain width


----------



## tack

Reaticulate 0.4.0 is now available!

Thanks to everyone who helped with testing during the pre-release cycle. Your feedback was invaluable.

You can read much more in the *release notes on the website* which expands on the highlights of this release.


*Installing*

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


*Upgrading*

For those of you on the release track, you should eventually receive the update, but you can force it by following the updating instructions. Those using the prerelease track will receive this update as well, plus of course all the prereleases leading up to 0.5.0.


Here are the changes since 0.3.2:


*New Features*

 This release introduces support for multiple MIDI buses. Anywhere previously involving a destination MIDI channel can now optionally include a MIDI bus number as well. Among other things, this allows for better integration with Vienna Ensemble Pro. (#73)
 Articulation insertion now optionally respects selected notes when the MIDI editor is open. Program changes will be inserted intelligently based on the nature of the selection.
 Articulations can now define transformations to incoming notes after the articulation is activated. These include transposing the notes, a velocity multiplier, and pitch and velocity range clamping. (#72)
 Output events can now be routed to destination channels set up by the previous articulation by using `-` as the channel (#42)
 Output events can now send pitch bend MIDI messages (#60)
 Double clicking an articulation or invoking any of the "activate articulation" actions twice within 500ms will force-insert the articulation in the MIDI item. (This is equivalent to right clicking, which behavior still exists.)
 The old behavior of always inserting when step record is enabled has been removed in favor of this consistent approach.

 Much better support for light themes (#6)
 Added option for undocked windows to be borderless (requires a fairly recent version of the js_ReaScript_API extension)
 Allow user-configurable background color (in Settings page) (#78)


*Minor Enhancements*

 Added a new 'spacer' articulation attribute which adds visual padding above the articulation when shown in Reaticulate's UI (#66)
 Bank messages (set with the 'm' attribute in the bank definition) can now be viewed from Reaticulate's main articulation list screen (#68)
 Improved text entry widget behavior with text selection, copy/paste, etc.
 Errors and other problems with banks or track configuration are now more visible in the articulation list screen
 Linux: preliminary support
 Added tremolo-180-con-sord icon
 Many other small GUI refinements, especially on Mac

*Bug Fixes*

 Fixed problem where insertion of articulations could not be undone by Reaper's undo action (#47)
 Fixed bug where 'art' type output events combined with filter programs could hang Reaper (infinite loop) (#44)
 Fixed bug where activating an articulation that acts as a filter to another articulation's 'art' output events could activate the wrong child program
 Fixed bug when MIDI controller feedback was enabled where Reaticulate would sometimes install sends to the wrong track when a new project was opened
 Avoid reloading all other track FX when Reaticulate is installed on a track (#1)
 Mac: use the Reaper theme background color for Reaticulate's window
 Fixed bug when opening the Reabank file editor on Windows when the path contained spaces
 Fixed rare crash when last touch fx becomes invalid
 Factory banks: Fixed trills and tongued legato for the Herring Clarinet
 Do not clear serialized variables in @init per JSFX docs (#65)


----------



## Vadium

tack said:


> That's by design. Only one articulation per group per source channel can be active at a time.



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? If make 10 groups, it will be enough for a many-many years.


----------



## tack

Vadium said:


> 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.


----------



## tack

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


----------



## Dementum

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.


----------



## Stevie

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


----------



## Jaybee

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


----------



## tack

Jaybee said:


> *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.)



Jaybee said:


> 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!


----------



## Jaybee

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!


----------



## tack

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


----------



## eagri1967

Jaybee said:


> 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 [email protected]
> 1 long
> //! c=long i=note-whole [email protected]
> 2 ensemble
> //! c=short i=staccato [email protected]
> 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!


----------



## Dementum

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 [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



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.


----------



## eagri1967

@Dementum Thanks for the Hollywood Solo Violin Reabanks sample! 
I'll try with this for a start, and I'll DM you how it's going.


----------



## tack

eagri1967 said:


> 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!


----------



## eagri1967

@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!


----------



## eagri1967

tack said:


> 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.


----------



## tack

eagri1967 said:


> 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.


----------



## eagri1967

@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).


----------



## eagri1967

@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?


----------



## Divico

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:




View attachment 2019-12-09 23-14-59.mp4


----------



## tack

eagri1967 said:


> 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.)



Divico said:


> 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.


----------



## tack

Divico said:


> 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 '[email protected]' in those articulations is redundant since the CC output event will already ensure subsequent events are routed to channel 6.)


----------



## Divico

tack said:


> 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 '[email protected]' in those articulations is redundant since the CC output event will already ensure subsequent events are routed to channel 6.)


Thing is if I have for example an articulation activated that sets the midi channel to 1 and than move my modwheel (my controller is sending on channel 1 by default) I still get what you see in the video. IMO this should just happen if Id be sending on Ch6 right?


----------



## tack

Divico said:


> IMO this should just happen if Id be sending on Ch6 right?


Not quite. It would depend on which channel you activated the articulation. I see from the video it's on channel 1 (the 1 with the box around it in Reaticulate's GUI), which means Reaticulate is now routing from channel 1 _to _channel 6. This means if you send CC1 from channel 1, Reaticulate routes that to channel 6. It sees that you're using CC1 to change articulations on channel 6, so it assumes that if it's routing some incoming CC1 to the patch there on channel 6, it must be changing the underlying articulation and so the GUI reflects that.


----------



## Divico

tack said:


> Not quite. It would depend on which channel you activated the articulation. I see from the video it's on channel 1 (the 1 with the box around it in Reaticulate's GUI), which means Reaticulate is now routing from channel 1 _to _channel 6. This means if you send CC1 from channel 1, Reaticulate routes that to channel 6. It sees that you're using CC1 to change articulations on channel 6, so it assumes that if it's routing some incoming CC1 to the patch there on channel 6, it must be changing the underlying articulation and so the GUI reflects that.


Ok but why should it route to 6 in the firste place? I havent enabled the articulation that sets Ch to 6. This happens automatically by turning the modwheel. Say I enable the first articulation which triggers Ch1. Now when I push the MOD it should send to Ch1 right and therefor not mess with the articulation wired to Ch6? Thing is it does what you see in the video. ReaControlMIDI says it sends CC1 on Ch1 before and after Reaticulate oO


----------



## Ivan M.

Hey @tack reaticulate is a fantastic tool, started using it recently, and it really helps a lot


----------



## tack

Divico said:


> Say I enable the first articulation which triggers Ch1. Now when I push the MOD it should send to Ch1 right and therefor not mess with the articulation wired to Ch6? Thing is it does what you see in the video. ReaControlMIDI says it sends CC1 on Ch1 before and after Reaticulate oO


Ah, ok. This is a bug then. Your video started with staccatissimo enabled so I didn't see anything in the video that looked wrong. But if it happens with another non channel 6 articulation active first it sounds like a regression. Will take a look. Thanks  




Ivan M. said:


> Hey @tack reaticulate is a fantastic tool, started using it recently, and it really helps a lot


Great to hear! Thanks for the feedback.


----------



## Divico

tack said:


> Ah, ok. This is a bug then. Your video started with staccatissimo enabled so I didn't see anything in the video that looked wrong. But if it happens with another non channel 6 articulation active first it sounds like a regression. Will take a look. Thanks
> 
> 
> 
> Great to hear! Thanks for the feedback.


Here is a better video. There is something strange going on with the chasing of the articulation aswell.
View attachment 2019-12-10 13-15-01.mp4


----------



## tack

Divico said:


> There is something strange going on with the chasing of the articulation aswell.


I think the chasing behavior there makes sense in the context of this bug. When you move the playhead, Reaper chases the PC for Sustain. But Reaticulate won't think the other articulations on channel 6 are being activated unless exactly one of CC1 1, 22, 67, or 127 are observed. For CC 1, Reaper doesn't chase every prior CC value, just the latest one. And if the latest one isn't 1, 22, 67, or 127, Reaticulate won't think anything has changed.

And I suspect this is related to what you were expecting:









Support CC and velocity ranges for output events · Issue #10 · jtackaberry/reaticulate


Support e.g. o=cc:119,10-20 or o=note:42,100-127 This would be used for manually triggered articulations. Any event within the range would activate the articulation, and combined with #4, any such ...




github.com


----------



## tack

tack said:


> But if it happens with another non channel 6 articulation active first it sounds like a regression.


It actually wasn't a regression, looks like the logic was broken from day 1. I've committed a fix and will release a new version probably this weekend. Thanks for the report @Divico


----------



## jadedsean

Just got this installed Tack and really having fun with it too, thanks, but I seemed to be having an issue. It states on the website to click in the checkbox to always start when Reaper is loaded which I have done but for seem reason it never loads. Meaning I have to run it every time, any suggestions why this is?


----------



## Jaybee

@tack I'm struggling with the legato switching on OT ARK multis which are a combo of KS for articulation but CC for legato. I've got the multi in without legato but want to be able to use the (faked) OT legato via CC30 to the Sustains, Tremolo and Portatos where necessary.

I've added CC30,127 & CC30,1 to each of the four articulations to turn the legato on/off but it's triggering weird off notes and some held notes too. I'm sure I've created a loop somewhere. With the multi approach in CSS it was all notes so not sure if I'm on the right approach. Here's the bank I have that's causing issues. 

Please let me know how much of a doofus I've been here...  

//----------------------------------------------------------------------------
//! g="Orchestral Tools/Metropolis Ark 1" n="ARK1 Wolfenstein Strings (Low)" 
//! chase=1,11,16-21,64-69 
Bank 01 61 OTMA1 Wolfenstein Strings

//! c=legato i=legato o=cc:30,127/note:24
21 legato 8ves
//! c=legato i=legato o=cc:30,127/note:25
22 legato tremolo
//! c=legato i=legato o=cc:30,127/note:26
23 legato portato (long)
//! c=legato i=legato o=cc:30,127/note:27
24 legato portato (short)

//! c=long i=harmonics-natural o=cc:30,1/note:24
3 octaves
//! c=long i=tremolo o=cc:30,1/note:25
11 tremolo octave
//! c=short i=marcato-half o=cc:30,1/note:26
55 portato long
//! c=short i=marcato-quarter o=cc:30,1/note:27
52 portato short
//! c=short i=spiccato o=cc:30,1/note:28
45 spiccato octave
//! c=short-dark i=pizz-bartok o=cc:30,1/note:29
57 bartok col legno
//! c=long i=crescendo o=cc:30,1/note:30
102 crescendo long
//! c=long i=crescendo o=cc:30,1/note:31
106 crescendo short
//! c=long i=crescendo o=cc:30,1/note:32
107 swell
//! c=long i=dcrescendocrescendo o=cc:30,1/note:33
103 tremolo decrescendo


----------



## tack

Jaybee said:


> I've added CC30,127 & CC30,1 to each of the four articulations to turn the legato on/off but it's triggering weird off notes and some held notes too.


I don't actually see anything problematic with that bank (except for i=dcrescendocrescendo but that's cosmetic). I don't have ARK so I can't confirm that those are the right output events, but otherwise I think Reaticulate should be happy to send them. You can try adding a ReaControlMIDI instance with logging turned on _after _Reaticulate and see if it's sending any events you're not expecting.



jadedsean said:


> It states on the website to click in the checkbox to always start when Reaper is loaded which I have done but for seem reason it never loads. Meaning I have to run it every time, any suggestions why this is?


If you run the action "Show REAPER resource path in explorer", navigate into the "Scripts" folder, and open __startup.lua in a text editor, can you confirm you see this somewhere within the file?



Code:


-- Begin Reaticulate startup stanza (don't edit this line)
local sep = package.config:sub(1, 1)
local script = debug.getinfo(1, 'S').source:sub(2)
local basedir = script:gsub('(.*)' .. sep .. '.*$', '%1')
dofile(basedir .. sep .. 'Reaticulate' .. sep .. 'actions' .. sep .. 'Reaticulate_Start.lua')
-- End Reaticulate startup stanza (don't edit this line)


This code is inserted by Reaticulate when you enable that option. Reaper is supposed to execute the script when it starts up.

What version of Reaper are you using and on which platform?


----------



## Jaybee

@tack Thanks! Will do some debugging with ReaControlMidi for these note hangs, it's probably a coincidence. Glad I was OK on the Reaticulate programming!


----------



## jadedsean

If you run the action "Show REAPER resource path in explorer", navigate into the "Scripts" folder, and open __startup.lua in a text editor, can you confirm you see this somewhere within the file? 

Do you mean this?


----------



## tack

jadedsean said:


> Do you mean this?


Yes, but it looks to be 0 bytes. Is the option ticked in Reaticulate to run on start? If you toggle the option does the contents of that file change?


----------



## jadedsean

tack said:


> Yes, but it looks to be 0 bytes. Is the option ticked in Reaticulate to run on start? If you toggle the option does the contents of that file change?


As far as i can see yes.


----------



## tack

jadedsean said:


> As far as i can see yes.


Try setting Autostart to never, deleting the __startup.lua file, and then setting it back to "When REAPER starts". Is __startup.lua then created with the contents I mentioned above? (You would have to open it in a text editor to see.)


----------



## jadedsean

tack said:


> Try setting Autostart to never, deleting the __startup.lua file, and then setting it back to "When REAPER starts". Is __startup.lua then created with the contents I mentioned above? (You would have to open it in a text editor to see.)


Strange i can't actually delete because doesn't exist, would you recommend a new install?


----------



## tack

jadedsean said:


> Strange i can't actually delete because doesn't exist, would you recommend a new install?


Something is definitely seems wrong with your system there. Is B: a flash device or other removable media? If it's removable, is it formatted as FAT32 or NTFS?

Before abandoning your current install, try opening the command prompt as Administrator and typing:



Code:


B:
cd "\Otr 6 Reaper\Portable\OTR\Scripts"
del __startup.lua


And if that doesn't work:



Code:


ren __startup.lua __startup.bak


----------



## jadedsean

tack said:


> Something is definitely seems wrong with your system there. Is B: a flash device or other removable media? If it's removable, is it formatted as FAT32 or NTFS?
> 
> Before abandoning your current install, try opening the command prompt as Administrator and typing:
> 
> 
> 
> Code:
> 
> 
> B:
> cd "\Otr 6 Reaper\Portable\OTR\Scripts"
> del __startup.lua
> 
> 
> And if that doesn't work:
> 
> 
> 
> Code:
> 
> 
> ren __startup.lua __startup.bak


So its on a 2tb SSD but unfortunately i could not tell you if its FAT32 or NTFS as i'm not sure what that means(excuse my ignorance), here's another pic.


----------



## tack

jadedsean said:


> So its on a 2tb SSD but unfortunately i could not tell you if its FAT32 or NTFS as i'm not sure what that means(excuse my ignorance)


NTFS and FAT32 are types of filesystems. As a 2TB SSD it's almost guaranteed to be NTFS, but you can find out for sure by right-clicking on the drive in Explorer (in "This PC") and selecting Properties, where it will show you the filsystem type in the General tab. It was just a hunch because you were using a portable install and B: is an unusual drive letter for normal drives, and FAT32 has more naming restrictions than NTFS.

Also, when you try to delete the file from Explorer and it says "could not find this item" there is a "More details" button at the bottom of the popup. You could try clicking that to see if it tells you anything useful.

So you basically have a file that shows up in Explorer but yet can't be deleted, and it doesn't seem to be related to permissions. This is the root cause, certainly, although arguably there is still a bug here in Reaticulate in that it shouldn't _silently_ fail to write to __startup.lua. I can fix that, but I don't quite know how to fix your problem.

As an experiment, you could try another portable install in another directory and see if the same behavior exists there. And if it does, maybe try an install on C: or higher, if you have one, just on the off chance that there is something about B:. (As I said it's unusual for A: or B: to be used for harddrives. Not impossible of course, just unconventional, which means that this type of configuration will see much less real world testing.)


----------



## tack

0.4.4 is out with a long-standing user-reported bug fixed. (Hopefully. )

*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.3:

*Bug Fixes*

Fixed a bug where detecting manual articulation activation by output event (manual keyswitch or CC) would fail to take into account current destination channel/bus routing and could improperly reflect an articulation change in the GUI

P.S. @Divico this should fix the problem you reported.


----------



## Divico

Not sure if this was mentioned earlier. Having the program change react to moving notes would be great. I often have the situation, where I move notes a bit and change aritculations, ending up with multiple program changes piled up in one space. Not sure if Reaper can handle this though. Something like the CC selection follows note selection thing maybe.


----------



## tack

Divico said:


> Having the program change react to moving notes would be great. I often have the situation, where I move notes a bit and change aritculations, ending up with multiple program changes piled up in one space. Not sure if Reaper can handle this though. Something like the CC selection follows note selection thing maybe.


This is possible as of Reaper 6.0. The new MIDI editor option is "Bank/program change events follow note selection when CC selection follows note selection". As the option name suggests, it requires "CC selection follows note selection" is also enabled. (A bit more context here.)


----------



## Divico

tack said:


> This is possible as of Reaper 6.0. The new MIDI editor option is "Bank/program change events follow note selection when CC selection follows note selection". As the option name suggests, it requires "CC selection follows note selection" is also enabled. (A bit more context here.)


Purrfect. Thanks for the answer


----------



## John Longley

I think if the library creation process becomes easier or you offer a paid version of this with pre built templates I would consider using REAPER for creative work (already use it for alot of work). Has V6 given you any new options for it?


----------



## tack

John Longley said:


> I think if the library creation process becomes easier


It will definitely. I've got a bunch of code written for that, but it's not ready. I've got one more foundational change to do and then the nice pointy-clicky GUI for making articulation maps (banks) will be released.

And then, enabled by the aforementioned "foundational change," I'm going to make it a lot easier for users to share and discover banks.

I've no plans to turn Reaticulate into anything other than free and open source. I have a day job working for a company with certain expectations about intellectual property, and I want to be able to tell my employer I don't profit from this work. I feel it removes some of the potential friction.

Reaper 6.0 hasn't fundamentally provided any new capabilities in this area, save for a few UX improvements here and there like the ones around program changes I referred to earlier.


----------



## John Longley

tack said:


> It will definitely. I've got a bunch of code written for that, but it's not ready. I've got one more foundational change to do and then the nice pointy-clicky GUI for making articulation maps (banks) will be released.
> 
> And then, enabled by the aforementioned "foundational change," I'm going to make it a lot easier for users to share and discover banks.
> 
> I've no plans to turn Reaticulate into anything other than free and open source. I have a day job working for a company with certain expectations about intellectual property, and I want to be able to tell my employer I don't profit from this work. I feel it removes some of the potential friction.
> 
> Reaper 6.0 hasn't fundamentally provided any new capabilities in this area, save for a few UX improvements here and there like the ones around program changes I referred to earlier.


Really excited to see what comes down the road with the new options for libraries. Thank you for all of your work!


----------



## Marc555

I find this "easier to create and share banks" compeling! Thank you!


----------



## RoyBatty

John Longley said:


> I think if the library creation process becomes easier or you offer a paid version of this with pre built templates I would consider using REAPER for creative work (already use it for alot of work). Has V6 given you any new options for it?



while that is great, please keep the option to edit the bank file directly. I love being able to use Brackets to edit and not have to use an interface that requires too much clicking and drop down menu selecting. I find direct editing much easier.


----------



## tack

RoyBatty said:


> while that is great, please keep the option to edit the bank file directly. I love being able to use Brackets to edit and not have to use an interface that requires too much clicking and drop down menu selecting. I find direct editing much easier.


Me too. No plans to make that any harder than it is today.


----------



## Marc555

Sorry for the noob question, but right now, is there a repository of user created articulation for specific instruments?


----------



## tack

Marc555 said:


> Sorry for the noob question, but right now, is there a repository of user created articulation for specific instruments?


There's a folder on github until I can put together something better. Scroll down for installation instructions.









reaticulate/userbanks at master · jtackaberry/reaticulate


An articulation management system for REAPER. Contribute to jtackaberry/reaticulate development by creating an account on GitHub.




github.com


----------



## John Longley

Just shared on REAPER forum in the main thread, but I have created banks for all Chris Hein Solo Strings (Complete) and Ensemble Strings. I am not super good at this stuff, so somebody please help if necessary. I was unable to figure out the hotkeys like "repeat last note". Help welcome but not needed as I don't use the hot keys anyway.


LINK:


----------



## lucor

Something I just remembered: now that Reaper finally has a native track delay function, would it be possible to incorporate this into Reaticulate? Like in assigning different pre-delays for each articulation?


----------



## tack

lucor said:


> Something I just remembered: now that Reaper finally has a native track delay function, would it be possible to incorporate this into Reaticulate? Like in assigning different pre-delays for each articulation?


Yeah, that's another one on the to-do list. I want it for myself too. The native track delay function in Reaper makes this a little easier, but not as much as you might have thought as it still requires a fairly nontrivial design change in Reaticulate.

So many ideas, so little free time ...


----------



## MauroPantin

Hey guys! I just thought I'd share this bit of very, very, very rustic programming I made. It is meant to be used with the incredible articulation management tool that @tack created for Reaper called Reaticulate.

If you are like me, you have a love/hate relationship with your template. I have to fiddle around with it a lot for each project and/or often need to adjust the multis, add new patches, etc. Reaticulate is (in my workflow at least) the way to manage articulations in an orderly fashion. I hate key-switches with a passion and I also don't enjoy having a template full of thousands of tracks cluttering the view, I find it terribly impractical. Reaticulate solves both problems beautifully for me.

BUT

There is a caveat to it, which is that there is no way to quickly edit banks as of now. I was a bit tired of having to go in, make sure all the UACC codes were matching the articulations, looking up icons, colors, how to write the output code, then having to write everything for each patch, read the documentation again because I forgot from the last time, etc. And I really don't want to ditch Reaper or the system, I think apart from that it is marvellous.

So I had a couple of hours yesterday and came up with a spreadsheet that does most of that grind for you, which is what I am sharing. And I know Tack is working on it and will probably implement something much more elegant than this, he has said it a few times. But I think this does okay for the time being until that comes. You can find it *HERE*. You have to save it as a copy in your Google Drive or download to be able to use it.

Before I go any further allow me to first apologize to Tack and every other guy out there how knows how to code properly and now gets to look at this thing. It is not pretty. The nested IF statements in this spreadsheet will bring shame to my family name for ages to come. Most of the thinking was dedicated to coming up with a pun for the name.

In all seriousness, I imagine there is probably a better way to do this but my knowledge in this department is very limited and everything looks like a nail when your only tool's a hammer.

Usage is quite simple: Everything you see in the light blue shade in the "Patch Creator" sheet you can fill out. Everything else should not be modified to keep functionality.

The first things to add are the MSB (between 0 and 63) and LSB (between 0 and 127), which should be a unique combination for each patch as per Reaticulate's usage guidelines. The combination you choose is arbitrary and does not affect anything else, it just has to be unique. Then you fill out the vendor, library, and patch name.

The next step is articulations. There is a drop-down list for each of those cells in the "Name" column. I have included the ones that I have used the most over time, but it can be modified in the second spreadsheet of the document to whatever set of articulations you like. Choosing an articulation will automatically populate the other (initially) black columns. Currently, it accommodates up to 16 articulations.

As you add articulations you should also add a key-switch, velocities for those KSs (if you need them), the channel assigned for that KS or patch, and/or basic automation information in CCs 1 (mod wheel), 7 (volume) and 11 (Expression). The basic stuff. This is all optional, none of those are mandatory. Every combination of those parameters I have ever used works. I'm not sure if there is a combination that is impossible, usage by other people will tell. The only impossible combination that is not accepted by the sheet is entering velocity without a KS, which of course does not make sense and will provide an error message in the output section.

Now all you have to do is select and copy the code that appears in the output section (without selecting the "Output" title) and paste it into your .reabank user file using any text editor. And that's it! When you next refresh or run Reaticulate the new patch should be there.

I plan to add other optional CCs in there, where you can enter both the desired CC number AND the value to get more flexibility. But it is not implemented yet. I also want to make the KS a dropdown menu with the note names instead of having to enter the MIDI numbers. I started doing that last one but had to stop, I needed to get this done quickly in order to start a project. I will add those things as soon as I have a few hours to spare.

Although it is very rudimentary I hope it helps someone out there.

Cheers!

======================================

EDIT: Updated to link for version 0.2. See this post for info.


----------



## tack

This is pretty clever, Mauro. And what better way to truly understand Reaticulate's arcane syntax, which only a sadistic author would subject his users to. 

It only implements a subset of the articulation features of course, but it's a pretty useful subset, and I can see it being helpful to others. Thanks for sharing!


----------



## MauroPantin

tack said:


> This is pretty clever, Mauro. And what better way to truly understand Reaticulate's arcane syntax, which only a sadistic author would subject his users to.
> 
> It only implements a subset of the articulation features of course, but it's a pretty useful subset, and I can see it being helpful to others. Thanks for sharing!



I would hardly call you sadistic dude. Reaticulate saved me from migrating to Cubase. =)

Yep, it's only the things I've used the most. I know there's a ton of possible combinations for the output, it's incredibly flexible (and I imagine that is part of the difficulty for a bank editor, although I'm no coder).


----------



## MauroPantin

Hey guys! I created a very rough and simple reabank helper to craft banks faster using a google sheet. It is very basic, almost as basic as the guy who created a new thread for it instead of letting you guys know here. Anyway, I'm curious to see if it can be improved, here's the thread. Maybe a mod can merge that post into this thread. I'll ask.


----------



## Stevie

Wow Mauro, thank you!!! What an awesome interim solution!


----------



## vewilya

Hey @MauroPantin & @tack! This is great! One little thing though... It doesn't work so far on my system. I think I am doing something wrong here! The standard files do work but the user bank which come imported by the googlesheet don't! The difference is the following part: 

o=cc:32,41 (standard bank) 

versus 

//! c=short i=staccato o= 
41 Staccato (Google Sheet)

Am I not inputing it right on my Google Sheet?






Thanks for any advice from the experts! Love the GoogleSheet! This is great!!! 
THX 
Urs


----------



## tack

vewilya said:


> Am I not inputing it right on my Google Sheet?


This is one of the ways in which Mauro's work is currently limited: only note-based keyswitching is supported, which note number you input into the 'KS' column. Because your KS column is empty, there are no output events shown. It doesn't look like other type of output events (like cc or note-hold) are currently supported, so the usual UACC approach of using CC32 can't be done yet using this spreadsheet.


----------



## MauroPantin

That's my bad! I have never used that feature for the UACC switching system because I construct my patches through multis in kontakt or play about 80% of the time and the rest tends to be odds and ends where I manually enter the KS number or use some library exclusive CC for a script or things of that nature. 

I'll add an option for UACC output as soon as I have a few minutes this weekend. Let me know if there is anything else I can do to improve it.


----------



## vewilya

Thanks guys! If that’s possible Mauro, that’d be awesome of course! Happy Easter! U


----------



## MauroPantin

Alright guys, major update!

First, here's the link to the new sheet: R2D1 v0.2

I also updated the link on the first post.

It now comes with a script attached. I am unsure if that script will be copied over when you copy the sheet. Just in case I am attaching it here in text form, and you can download and add it to your sheet going to "Tools - Script Editor". You should copy and paste it there and then assign the "readArticulations" function to your sheet button, no quotation marks.

At first glance, there's not much difference. But I completely re-did the thing. I had a few hours here and there during the past few days thanks to the virus lockdown. Changes:

-UACC is now implemented
-Custom CCs are now implemented

The entire process is now much more elegant (or less rustic). I did away with the nested IFs and learned a bit of javascript, which is what is running the entire thing in the background.

As hard as it was to get it working, it is much easier to maintain and update, while the nested ifs were a complete mess. Just 20 minutes trying to figure it out all again when trying to add UACC were frustrating enough to learn to code. But again, I am not a coder. It is very likely this could be a lot better or that I inadvertently did something unspeakable. I did what I could and it seems to work, I think. Or at least I tried every possible combination I could think of. But you guys test it out and let me know.

Usage:

For UACC just choose N or Y if you want to use that switching system, it will automatically add CC32 with the correct number to the output and ignore any KS or VEL attached.

For custom CCs, they must be added in order (left to right) in the sheet on the label column. The Sheet will sound the alarm if you don't do this. The same will happen if you enter a CC value without a CC on the top column.

Any and all CCs are optional, you don't have to have a value on each column. But each column that has a value MUST have a label on top in row 7. I hope that makes sense.

After you've filled the entire sheet, just press the button below and it should fill the output section out.

Anyway, let me know what you guys think!

EDIT:

Updated with a small bug fix for UACC


----------



## vewilya

MauroPantin said:


> Alright guys, major update!
> 
> First, here's the link to the new sheet: R2D1 v0.2
> 
> I also updated the link on the first post.
> 
> It now comes with a script attached. I am unsure if that script will be copied over when you copy the sheet. Just in case I am attaching it here in text form, and you can download and add it to your sheet going to "Tools - Script Editor". You should copy and paste it there and then assign the "readArticulations" function to your sheet button, no quotation marks.
> 
> At first glance, there's not much difference. But I completely re-did the thing. I had a few hours here and there during the past few days thanks to the virus lockdown. Changes:
> 
> -UACC is now implemented
> -Custom CCs are now implemented
> 
> The entire process is now much more elegant (or less rustic). I did away with the nested IFs and learned a bit of javascript, which is what is running the entire thing in the background.
> 
> As hard as it was to get it working, it is much easier to maintain and update, while the nested ifs were a complete mess. Just 20 minutes trying to figure it out all again when trying to add UACC were frustrating enough to learn to code. But again, I am not a coder. It is very likely this could be a lot better or that I inadvertently did something unspeakable. I did what I could and it seems to work, I think. Or at least I tried every possible combination I could think of. But you guys test it out and let me know.
> 
> Usage:
> 
> For UACC just choose N or Y if you want to use that switching system, it will automatically add CC32 with the correct number to the output and ignore any KS or VEL attached.
> 
> For custom CCs, they must be added in order (left to right) in the sheet on the label column. The Sheet will sound the alarm if you don't do this. The same will happen if you enter a CC value without a CC on the top column.
> 
> Any and all CCs are optional, you don't have to have a value on each column. But each column that has a value MUST have a label on top in row 7. I hope that makes sense.
> 
> After you've filled the entire sheet, just press the button below and it should fill the output section out.
> 
> Anyway, let me know what you guys think!


Wow. Thanks man! You're a legend. Greetz U


----------



## MauroPantin

@Stevie Thanks, man!

I just updated the sheet with a few front-end changes and a lot of work in the background. It is now more flexible, with UACC and custom CC allowed. Let me know what you guys think!


----------



## Stevie

Awesome, thanks so much! Checking in a few.


----------



## Stevie

Thank you Mauro, just tested it and it works very well! This tool makes life so much easier. Now, I only need to add the whole articulation list


----------



## Laptoprabbit

Thanks for your work on this tack. I'm wondering if there's a way to send a cc output event as an offset to the current cc value rather than setting a fixed value? Right now, I'm trying to adjust CC7 for individual articulations (when they are too loud/quiet). Looking at the code I'm guessing this might need a new output_type but not really familiar with jsfx.


----------



## tack

Laptoprabbit said:


> I'm wondering if there's a way to send a cc output event as an offset to the current cc value rather than setting a fixed value?


That's not possible, no. I'm not sure I appreciate the use-case for that, though ...



Laptoprabbit said:


> I'm trying to adjust CC7 for individual articulations (when they are too loud/quiet).


It's common enough to tailor output levels (CC7 or CC11) based on selected articulation. But why can't you set an absolute value in that case? If an articulation is always a little loud, say, fix CC11 at 100 or something. Why does it need to be relative?


----------



## Laptoprabbit

After I set a CC11 value, it will stay there on switching back unless each articulation has a value... guess I need to stop being lazy and just define them all


----------



## Stevie

@Mauro there was an issue with the UACC assignment. 
You need to change line 61 to: 



Code:


var mainout = "cc:32,"+uaccnum


the colon next to cc was missing.


----------



## MauroPantin

Thanks, @Stevie I just updated the main sheet! 

Not sure if I need to re-upload the code here or if it just works when you guys make a copy. If any of you guys have trouble with that you let me know and I'll post an updated version here, too.


----------



## Stevie

Sorry, forgot to mention: yes we need to copy the code in our local copy!
So better update the txt file as well.


----------



## MauroPantin

Updated!


----------



## Stevie

Not sure if it has been mentioned already, but someone did presets for pretty much the whole VSL library:





Comprehensive Articulation Management System for VSL Libraries (for REAPER users) - Vienna Instruments Libraries - FORUMS - Vienna Symphonic Library


No description




www.vsl.co.at


----------



## Marc555

I wonder if REATICULATE can make us of Reaper's new implementation of displaying Notation Text on the note themselves. It would be great to have the articulation itself indicated on the note of the MIDI Editor.


----------



## tack

Marc555 said:


> I wonder if REATICULATE can make us of Reaper's new implementation of displaying Notation Text on the note themselves.


Reaticulate uses program change events, which are discrete MIDI events, so the short answer is no.

Moving away from this model would require a pretty significant (and backward incompatible) gutting of Reaticulate's implementation, so while it may be in the cards, it's not something I want to take lightly. 

Although this type of thing would bring some advantages, it would also forfeit some of the UX niceties of the current approach, such as being able to see the articulation from the arrange view, getting a concise view of the articulation name in the piano roll. (So whereas today it says e.g. "staccato" in the piano roll program lane, moving to the notation system it would say "custom staccato". I can't control that.)

There were couple showstoppers doing this but it looks like the biggest one (ability for Reaticulate to associate userdata with notes and text events) has been addressed in Reaper 6, but I haven't had a chance to test that yet.


----------



## AbramoV

I have a possibly stupid question, but can reaticulate change the color in midi editor (view -> color notes by -> channel) when changing the channel? it would be very comfortable for editing and viewing articulations.


----------



## tack

AbramoV said:


> can reaticulate change the color in midi editor (view -> color notes by -> channel) when changing the channel?


I'm not sure I understand what you mean. Can you elaborate more on what behavior you're asking about?


----------



## John Longley

tack said:


> I'm not sure I understand what you mean. Can you elaborate more on what behavior you're asking about?


In not sure what he means, but it would be amazing if the notes in the range of each selected articulation changed to the appropriate colour of that articulation icon in Reticulate.


----------



## tack

John Longley said:


> it would be amazing if the notes in the range of each selected articulation changed to the appropriate colour of that articulation icon in Reticulate.


That's an interesting idea, but I don't think it's possible. I don't think Reaper lets you have per note user customized colors. If someone knows how, let me know.


----------



## AbramoV

tack said:


> I'm not sure I understand what you mean. Can you elaborate more on what behavior you're asking about?


Sorry for my english. When i switching the channel via “map input to channel” (sws action), 1 channel (for example) has green color, 2 channel has blur color in midi editor (in view by channel). It’s very cool for editing, viewing, leering (i use filter for this). But, unfortunately, reaticulate don’t do this.


----------



## MauroPantin

Reaticulate sits after the MIDI input re-routing the contents of the MIDI items according to the specs of the patch, so I'm not sure how it could go back in the signal path and do that. Maybe it could be used an input FX if you are playing things in? Although I'm not sure what would happen if Reaticulate was in both the InputFX section and then again after the midi item but right before the sampler in a track, I've never tried that.

As a workaround, perhaps if there was a way to "print" the MIDI output of the track (including Reaticulate's channel routing, but before it hits the VSTi) that could probably get the job done using the "color notes by channel" option and a custom color map that matches the Reaticulate color scheme. The color map is not that hard to do, I believe. But printing the Reaticulate output to the a new midi item without using sends in some clever way could be a challenge and it would only work for channel switching, not for the entirety of the features in the articulation mapping.


----------



## tack

AbramoV said:


> It’s very cool for editing, viewing, leering (i use filter for this). But, unfortunately, reaticulate don’t do this.


Reaticulate can't control the color of events in the MIDI editor, but it does allow you to insert program changes on different source channels (to correspond with the notes), and Reaper does color the program change markers by channel if the MIDI editor is set that way. 

Here's an example showing notes on two MIDI channels, with the MIDI editor set to color by channel. You can see when selecting notes and inserting articulations, the program changes are added on the different MIDI channels according to the notes.







If that's not what you meant, maybe try taking a screenshot and circling what you mean?



MauroPantin said:


> But printing the Reaticulate output to the a new midi item without using sends in some clever way could be a challenge and it would only work for channel switching, not for the entirety of the features in the articulation mapping.


To say nothing of the fact that that's wwwaaayyyy too much work just to color code notes by articulation.


----------



## AbramoV

Thank you very much for answer! You’re really helped me.


----------



## MauroPantin

How about right-click on the MIDI track, "Render item as new take" or "Apply track/take FX to item as a new take"? Does that print reaticulate's MIDI routing in? If so the only thing left would be mapping the colors. There was a guide by white tie to doing that and it was easy enough with GIMP or some other graphics app.


----------



## tack

MauroPantin said:


> How about right-click on the MIDI track, "Render item as new take" or "Apply track/take FX to item as a new take"? Does that print reaticulate's MIDI routing in? If so the only thing left would be mapping the colors.


"Render item as new take" doesn't have any effect since Reaticulate doesn't use TakeFX. "Apply track/take FX" renders through the virtual instrument so the resulting take is audio, not MIDI.

Even so, all this would be extremely heavyweight just for color coding. I think the only way I could entertain this kind of feature is if Reaper a) allowed per-note colors and b) provided an API to control that. And even then, I'm not so sure, because articulations aren't note properties, they're a function of where the program change event happens to be located, so basically each time a program change marker was moved in the MIDI item, Reaticulate would need to recalculate the colors for the subsequent notes. (That would also need to support situations where the program events were programmatically moved too by other scripts.)

Sounds increasingly infeasible. 



AbramoV said:


> Thank you very much for answer! You’re really helped me



Great!


----------



## MauroPantin

tack said:


> "Render item as new take" doesn't have any effect since Reaticulate doesn't use TakeFX. "Apply track/take FX" renders through the virtual instrument so the resulting take is audio, not MIDI.



I just tested it out, it works with the "(MIDI Output)" option. It can be done with that method but it's not really great.

You have to:

1- Deactivate the VSTi
2- Right-click the MIDI item and select "Apply track/take FX to item as a new take (MIDI Output)"
3- Set the color scheme to by channel or have that set globally
4- Re-activate the VSTi

A custom action could be used to do that, but the main issue is that the Apply track FX option renders it in real-time, so there would be a lot of waiting.


----------



## Stevie

Coloring is not possible, but some pres ago they implemented note naming.

v6.08+dev0411 - April 11 2020
+ MIDI editor: add option to display notation text in piano roll [t=234286]


----------



## vicontrolu

Hi peeps!

New to Reatilculate so i have just started getting my hands dirty with it! 

Whenever i click on dock, it docks it to the main window. Since this is something that i´ll be using with MIDI, cant it be docked to the right of the midi editor? Where the track list lies, for example?


----------



## tack

vicontrolu said:


> Whenever i click on dock, it docks it to the main window. Since this is something that i´ll be using with MIDI, cant it be docked to the right of the midi editor? Where the track list lies, for example?


Unfortunately Reaper doesn't allow this sort of docking arrangement (to my knowledge at least). Only the main window can have docked panels attached to the edges. It'd be nice if floating docker windows could be similarly configured, but I don't think it's possible.

I myself cheat here, and just size the floating MIDI editor so that Reaticulate peers through from the main window:


----------



## vicontrolu

Thx Tack! Yeah that´s how i set i t up and saved as a screenset.  

Another question: in my workflow i usually record notes first then 2 or 3 CCs simultaneously. Then i usually run an action that shows all used CCs in the midi lanes in the midi editor, for further edting. I realize that, after i have added an articulation with Reaticulate, the output CCs defined on the bank now appear in the midi item as well, which is a bit redundant since i´d only expect to see the program/select with the names of the articulation (the output banks/ccs we dont need to see anymore).

Is there an option to remove all of these output messages from the midi sequence itself? I thought the reaticulate insterted plugin would take care of this, once it finds the program/sleect articulation in there.

I guess it could be done with a script that parses the reaticulate bnk file and then removes every output message from the lanes on the midi editor but, before investing time in something like this, i thought i´d rather ask first, since coming from Cubase i find this a very unexpected behaviour.

Cheers!


----------



## tack

vicontrolu said:


> I realize that, after i have added an articulation with Reaticulate, the output CCs defined on the bank now appear in the midi item as well, which is a bit redundant since i´d only expect to see the program/select with the names of the articulation (the output banks/ccs we dont need to see anymore).


No, this shouldn't be the case. Output events aren't baked into the MIDI item, they are emitted dynamically by the Reaticulate JSFX on the track when it receives a program change event. Unless, perhaps, you're explicitly rendering back out the MIDI item with FX processing as a separate take, but I assume you're not doing that. 

Are you sure what you're seeing in "show all used CCs" isn't the output events from the articulation, but rather CC0 and CC32 which is the Bank Select message that precedes a Program Change? This is necessary for Reaper to know which bank it should grab the program name from to display in MIDI editor (and arrange view if you have that enabled).


----------



## JeffvR

Is it possible to set the MIDI CC11 or CC7 value when going to a new articulation? If you have a multi instrument, say violins 1 with different articulations in one patch, the volume is never 100% correct for all articulations. For instance in Cinematic Studio Strings the tremolo patch is a bit too loud in comparison to the normal legato patch, the trill patch is a bit too soft. It would be nice to correct this a bit by sending some CC7 or CC11 information on beforehand to that articulation. Is this possible?


----------



## tack

JeffvR said:


> Is it possible to set the MIDI CC11 or CC7 value when going to a new articulation? If you have a multi instrument, say violins 1 with different articulations in one patch, the volume is never 100% correct for all articulations. For instance in Cinematic Studio Strings the tremolo patch is a bit too loud in comparison to the normal legato patch, the trill patch is a bit too soft. It would be nice to correct this a bit by sending some CC7 or CC11 information on beforehand to that articulation. Is this possible?


Sure, that's no problem, you just need to include the CC in the set of output events for the articulation. For example:



Code:


//! c=long i=note-whole o=note:12/note:22,1/cc:11,92
1 sustain

...

11 tremolo
//! c=long-dark i=tremolo o=note:14/cc:11,127


Or you could use CC7 to taste.


----------



## JeffvR

tack said:


> Sure, that's no problem, you just need to include the CC in the set of output events for the articulation. For example:
> 
> 
> 
> Code:
> 
> 
> //! c=long i=note-whole o=note:12/note:22,1/cc:11,92
> 1 sustain
> 
> ...
> 
> 11 tremolo
> //! c=long-dark i=tremolo o=note:14/cc:11,127
> 
> 
> Or you could use CC7 to taste.


Awesome! Thanks, I'll try that.


----------



## vicontrolu

tack said:


> Are you sure what you're seeing in "show all used CCs" isn't the output events from the articulation, but rather CC0 and CC32 which is the Bank Select message that precedes a Program Change? This is necessary for Reaper to know which bank it should grab the program name from to display in MIDI editor (and arrange view if you have that enabled).



Ah! thats correct. I was fiddling arounf with a Spitfire patch so i assumed it was the CC32 that the articulation was sending on the output. Well then i just need to hide cc0 and cc32 in my "show all used midi CCs" script. 

Thanks!


----------



## vicontrolu

Can Reaticulate acces the 64 midi channels (ports A,B,C and D) in Kontakt?


----------



## tack

vicontrolu said:


> Can Reaticulate acces the 64 midi channels (ports A,B,C and D) in Kontakt?


That's not something Reaticulate will be able to do by itself, but you can combine it with something like FlexRouter to make that possible. See this post for more.


----------



## vicontrolu

Thanks Tack! I used FlexRouter before..just forgot about it wit time 

I am trying to create my first bank and i am quite confused. On the tutorials site it says to just click on the pencil on the UI to edit the file and when i do that a reaticulate.reabank file opens, but the first 2 lines are:

// Generated file. DO NOT EDIT! CONTENTS WILL BE LOST!
// Edit this instead: C:\Users\...\AppData\Roaming\REAPER\Data\Reaticulate.reabank

So? Is this the right file to edit?


----------



## tack

vicontrolu said:


> So? Is this the right file to edit?


Something looks wrong here. This should only appear on the dynamically generated files that have -tmp in their name. So you click the pencil icon, click edit from the menu, it opens notepad and that's what you see? If you locate the file mentioned there (you can click Show In Explorer off the popup menu when you click the pencil icon) and open the Reaticulate.reabank file yourself (again *not* the one that has -tmp in the name) can you confirm it says what you quoted?

Do you have the ability to do a screen capture (with OBS or Licecap or something) so I can see exactly what you're doing? If there's a bug here it's going to be a confusing one I think, so the more details the better.


----------



## vicontrolu

Yeah i checked the file. Its Reaticulate.reabank, not the temp, which has these 2 lines. I have started writing custom banks in it and they work fine though


----------



## vicontrolu

Another thing that surprised me is, once i have created a track with a Reaticulate bank on it, when i load the track as a track template into a new project, i dont need to run reaticulate_MAIN script anymore (the one that docks the UI, etc.).
I actually prefer it this way but then...if i edit the bank manually and then the interface is not needed..whats the purpose of the MAIN script then? Just pointing to the correct bank the first time you set it up?


----------



## tack

vicontrolu said:


> Yeah i checked the file. Its Reaticulate.reabank, not the temp, which has these 2 lines. I have started writing custom banks in it and they work fine though


This one's got me stymied. Reaticulate.reabank, when it doesn't exist (as it wouldn't on a fresh install), is created by the Reaticulate main script on first open, and Reaticulate copies the first few comment lines from Reaticulate-factory.reabank (located in the Scripts directory) to that file. I am not sure how the "Generated file. DO NOT EDIT!" comment landed in this file. Had you ever opened the -tmp file yourself? Do you think it's possible you might have copied/pasted something from there into Reaticulate.reabank? I'm mainly just trying to figure out how deep down the rabbit hole I should go on this one 

Suffice it to say, Reaticulate.reabank is exactly the right file to edit. You can remove those comments.




vicontrolu said:


> if i edit the bank manually and then the interface is not needed..whats the purpose of the MAIN script then?


The JSFX instances that are added to each track FX does the work of translating program changes to the output events defined by each articulation. It's actually a design goal that these JSFX instances are able to function autonomously, without the main GUI script, once they are configured. So indeed you should be able to load a project and have playback work without the Reaticulate GUI being open in that session. (While this is a design _goal_ and it's true today, I'm not sure I can guarantee it in the future. )

The purpose of the main script is:

Provide an accessible GUI for changing articulations and inserting articulations into MIDI items
Install Reaticulate JSFX on tracks, and configure the JSFX whenever changes to Reaticulate's track configuration are made (banks added to track, channel assignments, edits made to bank articulations, etc.)
Implement the logic behind almost all of the Reaticulate actions in Reaper's action list


----------



## vicontrolu

I see. Well, thats a neat system you came up with Tack! Well done 

Yeah, as i said..i prefer it without the UI. Once its setup, the idea is not having to look anywhere and just use your controller with your buttons the way they are supposed to work.

Thanks for everything!


----------



## tack

vicontrolu said:


> Once its setup, the idea is not having to look anywhere and just use your controller with your buttons the way they are supposed to work.


Bearing in mind that if you're using your controller to change or insert articulations via Reaticulate by invoking one of the Reaticulate "activate articulation" actions, the main script will be needed to handle that.


----------



## Kabraxis

Heya peeps,

I prepared Articulation Maps for 78-piece _Best Service: Era_ series and thought it would be crime not to share. Libraries include Dark Era, Ancient Era, ERA II and Celtic era.

Here's the link: *Google Drive*

And while there, I've written some blog about it: http://gameaud.io/reaticulate-banks-era/

@tack: Maybe you'd like to include these in your Userbanks, too


----------



## tack

Kabraxis said:


> @tack: Maybe you'd like to include these in your Userbanks, too


I will indeed! Thanks for this contribution. Having done this for all of my Spitfire libraries, I recognize it for the herculean effort that it is.

In your blog, you wrote:



> After I got used to it over a weekend, I decided it's an invaluable tool for digital composing, and in some ways, better than it's commercial counterparts.



I'm interested to know in what ways you think it's better? Knowing this helps me to ensure I avoid changing things that users actually like.


----------



## Kabraxis

tack said:


> I'm interested to know in what ways you think it's better? Knowing this helps me to ensure I avoid changing things that users actually like.



Well, triggering multi messages with 1 key is killer. Usual problem with orchestral libraries are their sustains often needs a little lift from staccatos. Also, it did helped me with a synth patch once.

And conditional/contextual triggers. I never needed it to use it yet, but I can clearly see where it can be useful.

Thank you again, man. I still think the whole "articulation" thing must be built into the Reaper itself, but I can't deny Reaticulate offers a very straightforward and clean usage after you set it up once.


----------



## vicontrolu

Correct me if I am wrong but this is possible with Steinberg's Expression maps


----------



## tack

vicontrolu said:


> Correct me if I am wrong but this is possible with Steinberg's Expression maps


Multiple outputs is possible yes but I didn't think conditional output events was a feature of Cubase expression maps?


----------



## vicontrolu

Ugh..its a bit too dense to read without a computer in front of you (on holidays here), bit if this goes beyong grupos in Exp maps then i guess yes, this is a feature only available in Reaticulate.

In Expression maps you can write the articulation in the notes themselves. Thst makes the most of using groups in Exp maps. AFAIK this is not possible with Reaticulate. Is that correct?


----------



## tack

vicontrolu said:


> In Expression maps you can write the articulation in the notes themselves. Thst makes the most of using groups in Exp maps. AFAIK this is not possible with Reaticulate. Is that correct?


Yes, but there are several reasons for the current implementation.

This is something I recently wrote on the Reaper forum, which I'll cross-post here as it's applicable:

--snip--
A drawback of Reaticulate frequently called out by users and potential users is its use of Program Change (PC) events, which are by nature decoupled from notes, as opposed to notation events, which are tied to notes.

I do recognize the benefit of being able to tie articulations directly to notes, and to use Reaper's notation system so articulations -- those that are supported by Reaper anyway -- are visible in the notation view.

However, there are some drawbacks too. So I wanted to think out loud a bit about the pros and cons of using notation, and get feedback from other users as well:


PC-based articulations aren't visible in the notation view, and if you want that, you need to juggle two mutually exclusive systems (one to affect visualization, and the other to affect playback).
PCs are independent of notes, and so it is possible to copy or move notes and forget the articulations. (Although there are use-cases for this capability too.) However this is significantly mitigated in Reaper 6 with "Options: Bank/program change events follow note selection when CC selection follows note selection"
PCs are visible from the arrange view, while notation isn't. This is a new feature in Reaper that a lot of Reaticulate users like.
PCs can be used to influence changes unrelated to notes, such as a discrete modifier to a currently-playing note, which has many use-cases in virtual instruments. Note notations can't do this, and I previously thought track notation could be used for that, but recently realized that track notation isn't associated to a MIDI channel, so can't be used to control virtual instruments independent of notes.
The notation events CC lane prefixes built-in articulations with "articulation" and custom articulations with "custom" taking up valuable real-estate in the editor, and making the actually useful information invisible when zoomed out enough. In contrast, PCs are no-nonsense, and display exactly what the program name is, so instead of "articulation staccatissimo" you see "staccatissimo":





Notation events in the piano roll are overly repetitive: they occur on each articulated note which creates a large amount of visual noise, whereas PCs can more easily denote the start of a passage for visual clarity:




With PCs, articulations can be renamed after-the-fact and because the PC is abstracted behind a program number, all references automatically update in all projects. With notation, the text is embedded in the event, so renaming would only apply to newly inserted events.
Up until recently, renaming articulations also would have broken Reaticulate's ability to control virtual instruments, but fortunately schwa addressed this problem with this feature that allows hidden user data, so Reaticulate could leverage this in a notation-based implementation to decouple from the articulation name and to improve efficiency of lookups (numeric evaluation vs text parsing) of the notation event.
PCs can be conveniently removed with alt-mouse-drag in the MIDI editor, the same as other MIDI events. Removing notations requires invoking a custom action.




At least one user (Klangfarben) has expressed a strong preference for program changes based on a workflow that involves exporting standard MIDI files to be passed to an orchestrator. A custom notation system risks losing this information.
A hybrid system has been proposed where Reaticulate uses PCs for playback and synchronizes to notation events for notation editor purposes. This is extraordinarily difficult to implement though, considering that a sane user experience would require bidirectional syncing between PCs and notation events, which could be changed or moved manually by the user or via custom scripts across multiple tracks, and which would require Reaticulate to constantly enumerate all PCs and notation on all tracks all the time to identify and resolve out-of-sync cases. Apart from the frightening performance implications, this is fraught with many edge cases and I doubt it could be made bug free (at least not by me ).

Can you think of other pros and cons of Reaticulate's PC-based approach vs notation?
--snip--


----------



## Artemi

what theme is that?


----------



## tack

Artemi said:


> what theme is that?


It's a heavily hacked/customized version of WT Imperial.


----------



## Kabraxis

I'm looking for ways to prepare a Bank for Orangetree Samples' amazing Guitar series, but that looks like a big chore. So just wanted to ask here before proceeding if anyone else is also tackling that?


----------



## tack

Kabraxis said:


> So just wanted to ask here before proceeding if anyone else is also tackling that?


Not that I've seen, Kabraxis. If you do eventually cook something up, please share it here and I'll post it in the userbanks section on GitHub.

P.S. sorry about the delay in replying. The day job is unrelenting.


----------



## Dementum

Hey @tack .

Here are the first few of my reabank files. Click Here!

Few 8Dio Choir libraries, Cinesamples Strings and Taylor Davis, Ancient Era Persia and united Strings of Europe.

I need to seperate some of my files and clean them up.


----------



## Hari

Hey guys, just installed reaticulate and that worked fine but when i try to add a bank i can only initiate the factory alternative, the user bank option does not exist, what am i missing?


----------



## tack

Hari said:


> Hey guys, just installed reaticulate and that worked fine but when i try to add a bank i can only initiate the factory alternative, the user bank option does not exist, what am i missing?


Did you add any user banks? Click the pencil icon and Edit. Are any banks in the file?

To get started, there are some options of user contributions here, as well as installation instructions (at the bottom):









reaticulate/userbanks at master · jtackaberry/reaticulate


An articulation management system for REAPER. Contribute to jtackaberry/reaticulate development by creating an account on GitHub.




github.com


----------



## Hari

Alright, thanks a lot for the quick reply!


----------



## pceniza

Hi Tack,
Im not sure if you can help but i hope so. I've recently encountered an issue with reaticulate whereby in the midi editor where you set the articulation programs it no longer gives me names for the articulations i've set. So it will be like 1-55-24 instead of 'marc' (articulation name i set). If i look under the bank list if i double click on that articulation, i've noticed quite a few of the recent additions i've made arent included in the list. 

I've re-installed, currently at 0.4.5 but i also tried switching manually to 0.4.3 but that didnt help things. I'm not really sure what has gone wrong and what i else i can try. I'm not that script savvy with this btw, so im sure im missing something obvious.

Appreciate any help 

Thanks
Patrick


----------



## pceniza

Hi Tack or to anyone else that might know this issue.

I seem to have run into another issue. 

.Data\Roaming\REAPER\Scripts\Reaticulate\\app\reabank.lua:311: attempt to perform bitwise operation on a nil value (field 'msb')

i'm not sure what this means but Reaticulate currently won't load.

Please help if you can. Thanks.


----------



## tack

@pceniza yep let's get you fixed up over on the Github issue you opened.


----------



## Trash Panda

@tack apologies if this was covered earlier in the thread. Will Reaticulate automatically switch a Kontakt instrument to the assigned articulation for the time period the articulation is set or would I need to back up to where that articulation starts to force the VST to update the keyswitch?


----------



## tack

The Serinator said:


> @tack apologies if this was covered earlier in the thread. Will Reaticulate automatically switch a Kontakt instrument to the assigned articulation for the time period the articulation is set or would I need to back up to where that articulation starts to force the VST to update the keyswitch?


This _basically_ works. You can resume playback anywhere and the previous articulation change will be sent to Kontakt upon playback.

This is because Reaper chases Program Change messages, and Reaper uses PCs to control articulations.

I said "basically" above because this doesn't work very well with multiple groups. Groups is a Reaticulate construct, something Reaper itself doesn't know about, so while Reaper will chase the last Program Change (per MIDI channel), if you have articulation changes for other groups _before_ that one, they won't get chased.

"Fixing" this requires some heroics and that remains on the backlog.


----------



## Trash Panda

tack said:


> This _basically_ works. You can resume playback anywhere and the previous articulation change will be sent to Kontakt upon playback.
> 
> This is because Reaper chases Program Change messages, and Reaper uses PCs to control articulations.
> 
> I said "basically" above because this doesn't work very well with multiple groups. Groups is a Reaticulate construct, something Reaper itself doesn't know about, so while Reaper will chase the last Program Change (per MIDI channel), if you have articulation changes for other groups _before_ that one, they won't get chased.
> 
> "Fixing" this requires some heroics and that remains on the backlog.


Would that be an issue if I'm only using one articulation at a time on a single track? I'm trying to wrap my head around the technical aspects at the moment. All my projects are currently small, so I'm only doing one instance of Kontakt and 1 MIDI channel per track right now.


----------



## tack

The Serinator said:


> Would that be an issue if I'm only using one articulation at a time on a single track? I'm trying to wrap my head around the technical aspects at the moment. All my projects are currently small, so I'm only doing one instance of Kontakt and 1 MIDI channel per track right now.


The issue comes into play when you have a bank that uses multiple groups, like for example Cinematic Studio Strings where con sordino and senza sordino control the on/off state of the con sord filter in CSS.

Suppose you have something like this, where "con sordino" is in group 2 and "legato std" is in group 1:







Suppose you manually switched to senza sordino, noodled around in the patch live figuring something out, and then resumed playback where the edit cursor is: Reaper would chase "legato std" but _not_ "con sordino" which means your playback would be senza sordino, not con sordino as expected, although it would certainly be legato as that gets chased.

The website has a little bit more of a description of groups:






Reaticulate | a free articulation management system for REAPER


Reaticulate | a free articulation management system for REAPER




reaticulate.com


----------



## andyhy

I've recently installed Reaticulate in Reaper and started using a combination of factory and user bank files from the Reaticulate website. I already have Reaticulate working in templates of BBCSO Core, Spitfire Chamber Strings and some EastWest stuff but I must stress that I'm still in the early part of the learning curve and assessing what it can add to Reaper functionality. I've also created two of my own user banks, one for Orchestral Tools Layers and another for Phoenix Orchestra, both for the OT's SINE. Currently working on another user bank for the Other Patches section of Spitfire Chamber Strings.

Which brings me to the main purpose of this post. Does anyone understand how you contribute your own reabank files to the Reaticulate website? I'm registered as a user but there don't seem to be instructions anywhere or maybe they're there but written for IT buffs which I'm not. If there were simple instructions I believe a lot more people would be experimenting with Reaticulate.


----------



## tack

andyhy said:


> Does anyone understand how you contribute your own reabank files to the Reaticulate website?


Apologies for the frustation. I appreciate this isn't very discoverable. I added a short blurb to the website:




> If you've made banks of your own that you'd like to contribute, please either create an account on GitHub and then open a new issue and attach (or paste) the bank, or, if you prefer, you can email it to me.



Hopefully that helps a little bit.

It's also perfectly fine to paste your contributions on this thread.


----------



## andyhy

tack said:


> Apologies for the frustation. I appreciate this isn't very discoverable. I added a short blurb to the website:
> 
> 
> 
> 
> Hopefully that helps a little bit.
> 
> It's also perfectly fine to paste your contributions on this thread.


Thanks Jason


----------



## andyhy

Here are the first two reabanks I've created. VI Control requires a text files so anyone interested in adding them to their own reabank must copy and paste the contents.

Layers relates to the free OT SINE ensembles library.

Phoenix Orchestra for the OT SINE player is more complex. The matching reaticulate descriptions are my best guess because unlike Spitfire Audio the UACC codes are not stated (or at least I haven't been able to find them anywhere) and Chinese instruments, excepting cello and bass, are very unique.

I have not felt disadvantaged by the absence of a GUI for reaticulate because Jason's instructions are pretty thorough. No doubt at a later stage he will add a GUI.

If nothing else it proves that reaticulate works in SINE, EastWest 's player and Spitfire Audio's BBCSO player as easily as it does in Kontakt. Spitfire's Abbey Road One Foundations will be another later this month. Feedback on their use in practice would be very welcome.

These are not fully tested but they should work. Just remember to avoid duplicating the bank numbers you've previously allocated in your own reabank file.

I'm still very much in my learning curve with reaticulate but during the lockdown here in the Philippines it has provided a welcome distraction. The additional functionality it offers fascinates me so I encourage others to try it out and contribute to the userbanks.

Keep safe everyone


----------



## andyhy

Here is the reabank in txt format for Spitfire Chamber Strings Other Patches

Could be useful for users who are tight on CPU resources - I include myself in that category


tack said:


> Apologies for the frustation. I appreciate this isn't very discoverable. I added a short blurb to the website:
> 
> 
> 
> 
> Hopefully that helps a little bit.
> 
> It's also perfectly fine to paste your contributions on this thread.


Reference the g used for "articulation groups" as distinct from the g used to define individual bank groups, I'm confused. Does it mean I would be able to select from separate articulation groups within the same bank when I'm using reaticulate? The very first screen displayed on the reaticulate website shows four groups together but I couldn't find any coding that would achieve it so I think I must have misunderstood the function of articulation groups. I wanted to experiment mixing a larger range of articulations on one track but maybe I'm still limited to 16 in one bank at a time. I'm still very impressed but the advanced programming parts are presently beyond me. Given a bit more time who knows what I can achieve. And that's the thing about reaticulate, the more time you invest in learning it the more useful it becomes.


----------



## tack

andyhy said:


> The matching reaticulate descriptions are my best guess because unlike Spitfire Audio the UACC codes are not stated (or at least I haven't been able to find them anywhere) and Chinese instruments, excepting cello and bass, are very unique.


If you can't find a good match, the best advice I have is "don't worry about it and pick whatever" 

As a slightly longer explanation, I've fleshed out the guidance on program numbering in the documentation, and tried to clarify better on the rationale and use case:






Reabank files | reaticulate


Reaticulate | a free articulation management system for REAPER




reaticulate.com





Thanks very much for your contributions Andy! I'll put those up on the website later this week.




andyhy said:


> Does it mean I would be able to select from separate articulation groups within the same bank when I'm using reaticulate?


Right, that's what it means. From the website:



> Reaticulate also supports up to 4 "articulation groups" per bank. A group is a set of articulations that are mutually exclusive within the group, but articulations between groups may be simultaneously active.
> 
> One example is to have legato on and legato off in one group, con sordino and senza sordino in another group, and then all other articulations in yet a third group. (As with, for example, Cinematic Studio Strings seen right.)







andyhy said:


> The very first screen displayed on the reaticulate website shows four groups together but I couldn't find any coding that would achieve it so I think I must have misunderstood the function of articulation groups.


The first image on the website you're referring to doesn't use articulation groups, rather it just has multiple banks loaded into the same track. "V1 Legato Performance" and "V1 Legato Decorative" and "V1 Core" etc. are each individual banks that represent separate patches from Spitfire Chamber Strings. Because these are using UACC, they can all be loaded on the same track at once on the same channel, so you can map in all 4 banks in Reaticulate's track configuration.

Meanwhile articulation groups are within the context of a single bank and are typically used with "modifiers" (e.g. sordino on/off in Cinematic Studio Strings, or the mute style in Sample Modeling Brass).




andyhy said:


> I wanted to experiment mixing a larger range of articulations on one track but maybe I'm still limited to 16 in one bank at a time.


A limit of 16 articulations in one bank is only if you're using a library that has separate articulations per patch and you're doing a multi with articulations on different MIDI channels. Then you're limited to 16 because we only have 16 source MIDI channels to work with.

But if you're talking about multi-articulation patches, like the ones you created banks for with Phoenix Orchestra, then the limit is 128 articulations per bank.

Hope that helps!


----------



## andyhy

tack said:


> If you can't find a good match, the best advice I have is "don't worry about it and pick whatever"
> 
> As a slightly longer explanation, I've fleshed out the guidance on program numbering in the documentation, and tried to clarify better on the rationale and use case:
> 
> 
> 
> 
> 
> 
> Reabank files | reaticulate
> 
> 
> Reaticulate | a free articulation management system for REAPER
> 
> 
> 
> 
> reaticulate.com
> 
> 
> 
> 
> 
> Thanks very much for your contributions Andy! I'll put those up on the website later this week.
> 
> 
> 
> Right, that's what it means. From the website:
> 
> 
> 
> 
> 
> 
> The first image on the website you're referring to doesn't use articulation groups, rather it just has multiple banks loaded into the same track. "V1 Legato Performance" and "V1 Legato Decorative" and "V1 Core" etc. are each individual banks that represent separate patches from Spitfire Chamber Strings. Because these are using UACC, they can all be loaded on the same track at once on the same channel, so you can map in all 4 banks in Reaticulate's track configuration.
> 
> Meanwhile articulation groups are within the context of a single bank and are typically used with "modifiers" (e.g. sordino on/off in Cinematic Studio Strings, or the mute style in Sample Modeling Brass).
> 
> 
> 
> A limit of 16 articulations in one bank is only if you're using a library that has separate articulations per patch and you're doing a multi with articulations on different MIDI channels. Then you're limited to 16 because we only have 16 source MIDI channels to work with.
> 
> But if you're talking about multi-articulation patches, like the ones you created banks for with Phoenix Orchestra, then the limit is 128 articulations per bank.
> 
> Hope that helps!


Very helpful thank you Jason


----------



## andyhy

What purpose does the chase attribute bank line serve?


----------



## andyhy

Here is a reabank in txt format for EastWest Hollywood Pop Brass. I have only covered legato, sustain, short and effects because I'm not convinced of the value of reaticulate in the case of phrases or MOD wheel patches. Feedback very welcome.


----------



## andyhy

I have time during this covid lockdown to create more reabank user files for other EastWest Composer Cloud libraries if there's interest. Let me know if that would be useful to other members of the forum and if so which additional sample libraries to do that are not already included in existing factory or user reabanks on the reaticulate website. I was going to prepare one based on my LABS libraries template but have pressed pause on that one a the moment. Feedback welcome.


----------



## Markrs

andyhy said:


> I have time during this covid lockdown to create more reabank user files for other EastWest Composer Cloud libraries if there's interest. Let me know if that would be useful to other members of the forum and if so which additional sample libraries to do that are not already included in existing factory or user reabanks on the reaticulate website. I was going to prepare one based on my LABS libraries template but have pressed pause on that one a the moment. Feedback welcome.


Thanks for doing these Andy, I have CCX but only just dipping my toe in at the moment. As I start to use more of the suite i know I will appreciate having your reabank files to use. 😊


----------



## tack

andyhy said:


> What purpose does the chase attribute bank line serve?


CC chasing is a pretty common thing, so I took it for granted people knew what that was. But it's one of those things DAWs do under-the-hood to provide a better user experience and because of that transparency, you're not the first person to ask this. I've updated the documentation to hopefully explain better the purpose:



> CC chasing occurs when switching articulations between patches across different MIDI channels. For example, suppose you have long normale on channel 1 and long con sordino on channel 2 with long normale currently active. Say you've set CC1 to value 92 and played a note, and then activated the long con sordino articulation. If CC1 is included here in the list of CCs to be chased, when long con sordino is activated, CC1 value 92 will be "chased" into the patch on channel 2, ensuring that your next note with that articulation has the same dynamics level.
> 
> Another use case is with the sustain pedal. Supposing you're on long normale and you hold the sustain pedal, press a note, and then activate long con sordino and press another note, if CC64 (sustain) is in the chase list, Reaticulate will chase the CC64 "pedal down" value into the next channel so that the second note with that articulation also sustains. Provided the antihangcc flag (mentioned above) is not disabled, when the sustain pedal is released, Reaticulate will send the CC64 value 0 (sustain pedal up) event into _both_ channel 1 (long normale with the first note rining) and channel 2 (long con sordino with the second note ringing), which prevents the first note on the previous (but not currently active) MIDI channel from "hanging."



Let me know if you have any more questions about that, I can try to clarify it better.


----------



## andyhy

Markrs said:


> Thanks for doing these Andy, I have CCX but only just dipping my toe in at the moment. As I start to use more of the suite i know I will appreciate having your reabank files to use. 😊


Glad to hear that my first attempts at reabanks are useful to you. In many ways I'm also dipping my toes into this stuff and I greatly appreciate the responses by @tack to my many questions. Imho reaticulate deserves to be integrated into the main Reaper package once there's a GUI for creating userbanks. One or two of the more expensive DAWs like Cubase already include some kind of articulation management system but reaticulate is rated as more advanced in its response to the constant demands of composers for more realistic sounds in their compositions. They want to produce the most convincing mockups even if, as is normally the case, their creations are ultimately re-recorded in a studio with a live orchestra. Reaticulate seems to answers this requirement very effectively.


----------



## andyhy

Here is a keyswitch reabank in txt format for the newly released Spitfire Abbey Road One Orchestral Foundations library. Given that keyswitches are common to all the banks in this one I must study the guidance given by @tack regarding their usage. Sometimes of course we want different articulations to sound together but when that's inconvenient we can employ the different source and output options offered by reaticulate. Essentially we should think of reaticulate as a tool that is always listening out for our instructions. Time to put my study hat on again.


----------



## andyhy

tack said:


> If you can't find a good match, the best advice I have is "don't worry about it and pick whatever"
> 
> As a slightly longer explanation, I've fleshed out the guidance on program numbering in the documentation, and tried to clarify better on the rationale and use case:
> 
> 
> 
> 
> 
> 
> Reabank files | reaticulate
> 
> 
> Reaticulate | a free articulation management system for REAPER
> 
> 
> 
> 
> reaticulate.com
> 
> 
> 
> 
> 
> Thanks very much for your contributions Andy! I'll put those up on the website later this week.
> 
> 
> 
> Right, that's what it means. From the website:
> 
> 
> 
> 
> 
> 
> The first image on the website you're referring to doesn't use articulation groups, rather it just has multiple banks loaded into the same track. "V1 Legato Performance" and "V1 Legato Decorative" and "V1 Core" etc. are each individual banks that represent separate patches from Spitfire Chamber Strings. Because these are using UACC, they can all be loaded on the same track at once on the same channel, so you can map in all 4 banks in Reaticulate's track configuration.
> 
> Meanwhile articulation groups are within the context of a single bank and are typically used with "modifiers" (e.g. sordino on/off in Cinematic Studio Strings, or the mute style in Sample Modeling Brass).
> 
> 
> 
> A limit of 16 articulations in one bank is only if you're using a library that has separate articulations per patch and you're doing a multi with articulations on different MIDI channels. Then you're limited to 16 because we only have 16 source MIDI channels to work with.
> 
> But if you're talking about multi-articulation patches, like the ones you created banks for with Phoenix Orchestra, then the limit is 128 articulations per bank.
> 
> Hope that helps!


Grateful thanks to you for your very detailed guidance and patience. You're very welcome to include here the questions and answers from our email exchange if that would help other users. I must say that your reaticulate video actually answers a number of my questions. I should have viewed it more thoroughly before bothering you.

The following comments are not intended as criticisms as I'm impressed with reaticulate but maybe making it slightly more accessible to beginners like myself is worth considering.

Maybe a simple introduction paragraph to the reaticulate website would be a worthwhile addition. At the moment it dives straight into usage and coding but I think the big question is left unanswered i.e. why reaticulate is needed in the first place. And the simple answer is provided in that Reaperblog video which talks about the quest for that illusive, realistic sound in our compositions. Even though composers know that most of what they write for film and TV will end up being re-recorded with a live orchestra, the quality of the mockup, that final sketch, is what ultimately wins commissions. It would be interesting to compare reaticulate to say Cubase and any other DAW that ostensible includes some form of articulation management system and also highlight how Reaper operates in the absence of reaticulate. i.e. what does it add to the control of the ultimate sound. Those are my thoughts anyway.

I hope my humble additions to the user reabanks will attract other users. Featuring the very latest libraries is a big selling point imo as is the inclusion of those classics in your Factory list which is what initially attracted my attention.


----------



## andyhy

Revised reabank in txt format for Orchestral Tools Phoenix Orchestra. Added harmonics articulation to Gaohu.

And I've taken the liberty here of copying the additional advise received from @tack which expands on the instructions given on the reaticulate website.

@tack said:

I do my best to describe the source/destination channel configuration in Reaticulate https://reaticulate.com/usage.html#track-setup , but it can be tricky to wrap your head around it.

The starting place is in VI player, like Kontakt. As you pointed out, the example with Spitfire's patches allows one to put multiple patches on the same channel using Spitfire's UACC feature, and provided there are no conflicting program numbers between the banks loaded in on the track, this will work fine. In this case, if we're just dealing with one single MIDI channel, you can set the patch in Kontakt to either channel 1 (or any other specific channel you like) or omni, it doesn't matter. And then on the Reaticulate side in its track configuration, you can set the destination channel to the specific channel the Kontakt patch is loaded in on, omni/source in Reaticulate if the Kontakt patch is set to omni. (The documentation link above explains more about what I mean by omni/source in Reaticulate.)

All that is to say, when you have more than one multi-articulation patch loaded into Kontakt, they can be omni or all on the same MIDI channel in Kontakt as long as each articulation can be switched inside Kontakt using its own dedicated MIDI event (e.g. CC32 value 42) such that the other patches _without_ that articulation will switch to a "none" articulation so they're silent until you activate an articulation they happen to provide. This is how Spitfire and some other library makers work.

Now let's stay with the Spitfire example, and suppose we're _not_ using UACC, and instead we're just using the patches directly as they come out-of-the-box, which uses the more conventional note-based keyswitches. This is how most other libraries out there behave. Usually these patches start their keyswitches at the same note, something like C0, and then you go up through the semitones to activate different articulations.

If you have two of these patches loaded in on the same MIDI channel and you pressed C0 on that MIDI channel, you have a conflict: both patches have articulations assigned to C0, so both would activate at the same time. If you play a note, now you hear both articulations. (Sometimes this is what you want for layering purposes, but for this example here let's say we don't want that.)

The way to deal with this conflict is to put the two patches on different MIDI channels in Kontakt, say channels 1 and 2. Then when you assign the banks for those patches to the track over in Reaticulate, you need to tell Reaticulate how to address those patches which listen on different channels, so you'd configure the destination channel in Reaticulate to channels 1 and 2 respectively for the two banks. Now Reaticulate knows when you activate an articulation for one or the other patch, it needs to send it to channel 1 or 2 (depending on the bank).

Here's the trick: as long as there are no conflicting _program numbers_ in those two banks, Reaticulate is happy to let them coexist on the same source MIDI channel. Here "source MIDI channel" refers to the channel the events (and program changes) are assigned in the MIDI editor in Reaper. If there are conflicting program numbers between banks that use the same source MIDI channel, Reaticulate will warn you about that, because just like with the conflicting C0 keyswitch case I described above in Kontakt, if two banks have the same program number on the same source channel, Reaticulate doesn't know which one you actually mean.

And in that case, just like in Kontakt where the solution to the conflicting keyswitch problem was to put the patches on different channels, in Reaticulate, the solution to conflicting program numbers is to use multiple source MIDI channels in the MIDI item for the different banks, and in Reaticulate's track configuration, instead of omni, you'd set them to channels 1 and 2. (This doesn't actually have to be the same channels as those patches are assigned in Kontakt. The destination MIDI channel in Reaticulate has to match those, but the source channel can be anything. Reaticulate takes care of routing to the right MIDI channel.)

Using multiple source channels like this in Reaper is a bit clunkier, because now you're juggling different channels in your MIDI item. It's better to ensure there are no program number conflicts between banks on the same track.

Everything I said above was concerning the case where you have more than one multi-articulation patch loaded in Kontakt (or whatever VI player). Now if you're just talking about an instrument consisting of many single-articulation patches loaded in on different channels, this is a conventional "multi" configuration and you can describe that layout in a single bank. The documentation gives a short example:

https://reaticulate.com/reabank.html#simple-channel-routing

Hopefully that was more helpful than it was confusing. You'll probably need to read it several times while playing with Kontakt and Reaticulate before it clicks. 

[one more piece of guidance]

If you set the source channel to channel 1, then all activations on that bank would map to channel 1. One of the use cases for this behavior is divisi writing. Say you have a Spitfire Chamber Strings V1 patch loaded in Kontakt on channel 1, and you add that bank in Reaticulate with a channel mapping of omni/source.

If you only ever work from channel 1 in the MIDI editor, Reaticulate routes to Kontakt on channel 1. Say you're writing a line on channel 1 using the legato articulation, but now you need to break out into two part divisi. You can load _another_ copy of the V1 patch in Kontakt on channel 2, and, using just the one bank in Reaticulate set to omni/source, in the MIDI item in Reaper, activate the legato articulation on channel 2, and you can layer the two divisi parts on channels 1 and 2 in the MIDI item. Reaticulate will route the parts to Kontakt on channels 1 and 2 so they can be performed at once.


END OF QUOTES

This layman's explanation of how reaticulate operates in practice has certainly helped me a lot and I've made adjustments to the design of my own reabanks as a result. It's not nearly as complicated as it looks.


----------



## andyhy

tack said:


> CC chasing is a pretty common thing, so I took it for granted people knew what that was. But it's one of those things DAWs do under-the-hood to provide a better user experience and because of that transparency, you're not the first person to ask this. I've updated the documentation to hopefully explain better the purpose:
> 
> 
> 
> Let me know if you have any more questions about that, I can try to clarify it better.


If you wouldn't mind could you walk me through your divisi example again very slowly, one step at a time, what goes where in Kontakt and in reaticulate, what box(boxes) I need to tick at each stage of setting up and adding inputting the articulations etc. I tried it but it doesn't seem to behave the way I expected it to so I've probably misunderstood your description.


----------



## tack

0.4.6 is out with some bug fixes.

*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.5:

*Bug Fixes*

 Fixed regression where articulations with multiple note output events would fail to send all note-ons together before sending note-off events.
 Reaticulate JSFX no longer popup when being added to tracks (#120)
 Improved robustness when loading malformed banks
 Added hidden feature for shift-click on the reload toolbar icon to scrub all MIDI items for misconfiguration that might prevent showing articulation names.
 Fixed problem where autostart setting would not work reliably (#107)
 Improved reliability of window pinning when Reaticulate is undocked
 Added note number to articulation tooltip (#96)
 Now respects Reaper's MIDI octave name display offset configuration when displaying articulation tooltips


----------



## tack

andyhy said:


> If you wouldn't mind could you walk me through your divisi example again very slowly, one step at a time, what goes where in Kontakt and in reaticulate, what box(boxes) I need to tick at each stage of setting up and adding inputting the articulations etc.


I thought I would do a quick video:


----------



## andyhy

tack said:


> I thought I would do a quick video:



Even better thank you. Having watched the video I'm a lot clearer now. Unfortunately my lack of knowledge with Reaper has prevented me from duplicating the video example. It's a probably a setting or settngs in your Reaper that I haven't set in mine. I can't seem to view both tracks on the same piano roll or play the two patches together at the same time. Up to now I've tended to have a dedicated track for each articulation so this is exploring features of Reaper with which I'm less familiar. Even how to view the piano roll at the start by inserting a midi track was a new one on me. Can you provide me with a screenshot of your midi editor preference settings. I need to see how I can display both midi channels on the same piano roll.


----------



## tack

andyhy said:


> Can you provide me with a screenshot of your midi editor preference settings.


Here is a screencap of the various settings in my MIDI editor (at least when the editor is docked -- when undocked I have a script that disables "sync to arrange view").












But I think the relevant aspects to your question probably aren't the settings, rather these MIDI editor actions:






So I've configured shift 1 through 0 to show specific MIDI channels, while shift-` (i.e. ~) shows all MIDI channels. I also have "show all channels" and show channels 1-4 as custom buttons on my MIDI editor toolbar, although I almost always just use the keyboard shortcuts.






These were the actions I was using through the video.


----------



## andyhy

Sorry to put you to so much trouble @tack. Having adjusted my midi editor setting in line with your screencap I then downloaded a Reaper 6 Kontakt template from Reaperblog which seems to have corrected my earlier difficulties. I think I've cracked it now. Thanks for you help.


----------



## pmcrockett

EDIT: Solved. Upon further consideration, this isn't a glitch -- I've been overlooking the fact that Reaticulate reads incoming keyswitches and sets its display accordingly. I originally encountered this CC behavior in a much more complicated real world situation and it didn't occur to me that this was what was causing it until I'd stripped it down to this much simpler version and posted it here.


ORIGINAL POST:
I'm running into something I think is a glitch. Using the following example instrument definition:


Code:


//! g="Test" n="Test instrument"
//! m="Test instrument"
Bank 0 0 Test Instrument

//! c=long i=note-whole o=note:32
1 Art 1
//! c=long i=note-whole o=cc:1,64
2 Art 2


Art 2 sends CC1 64 as its output, but if CC1 is sent as user input to the instrument by live monitoring or piano roll playback, Art 2 will become visually selected (but won't actually trigger) when the CC1 input equals a value of 64.

Here's a gif that demonstrates:


----------



## TimRideout

OMG - you are GENIUS  This N00b has been working all day on reverse-engineering the Abbey Road ONE file. Thank you SO much. And THANK YOU to the creator of Reaticulate - it is truly truly appreciated 



andyhy said:


> Here is a keyswitch reabank in txt format for the newly released Spitfire Abbey Road One Orchestral Foundations library. Given that keyswitches are common to all the banks in this one I must study the guidance given by @tack regarding their usage. Sometimes of course we want different articulations to sound together but when that's inconvenient we can employ the different source and output options offered by reaticulate. Essentially we should think of reaticulate as a tool that is always listening out for our instructions. Time to put my study hat on again.


----------



## TimRideout

@andyhy - there are some mistakes in the MIDI note numbers in your original file (they don't start at Zero, but rather at ONE). I have re-edited and tweaked the file - my version is attached  



TimRideout said:


> OMG - you are GENIUS  This N00b has been working all day on reverse-engineering this file. Thank you SO much. And THANK YOU to the creator of Reaticulate - it is truly truly appreciated


----------



## andyhy

TimRideout said:


> @andyhy - there are some mistakes in the MIDI note numbers in your original file (they don't start at Zero, but rather at ONE). I have re-edited and tweaked the file - my version is attached


Thank you for correcting those mistakes. I'm still learning how to use reaticulate.


----------



## pmcrockett

I've modded Reaticulate so it will look in the active project folder for the user bank definitions before it looks in the Reaper data resource folder (the normal location). This means I can save banks along with a project (to ensure future changes I make to the banks won't break that project) and the saved banks will automatically load with that project while still allowing new projects to automatically access the default user banks.

If anyone's interested in this, I can give instructions for performing the mod, but be aware that I haven't really tested it beyond confirming that it appears to work properly. I'm pretty hyped that it seems to be possible to do this, though, since it's a feature I've wished Reaticulate had.

@tack -- is there any chance we'll see a the optional ability to save/load banks on a per-project basis officially implemented in Reaticulate at some point?


----------



## tack

pmcrockett said:


> @tack -- is there any chance we'll see a the optional ability to save/load banks on a per-project basis officially implemented in Reaticulate at some point?


Yep, either in the next release (0.5) or, more likely, the one after that (0.6).

I have a pretty big change in flight for the next release to move away from MSB/LSB as the bank's unique identifier, instead using a randomly generated UUID, and Reaticulate will automatically assign a MSB/LSB for the bank on a per-project basis.

The same internal mechanism for this per-project MSB/LSB assignment also enables what you're asking about. Except my plan is to embed the bank definition in the RPP, so that the RPP can be passed around to others without needing to also include ancillary bank files. You would have the same notion of system banks and project banks you eluded to.

With banks embedded within the RPP, there won't be a text file you can edit for the project-level banks, so this depends on a proper GUI editor, which I have planned for 0.6.

The UX I have in mind is that when the system bank is newer than the one in the project, Reaticulate will ask if you want to update the one in the project or leave them as diverged (with an option never to ask again).

The biggest problem with all these ideas is insufficient free time.


----------



## pmcrockett

tack said:


> Yep, either in the next release (0.5) or, more likely, the one after that (0.6).
> 
> I have a pretty big change in flight for the next release to move away from MSB/LSB as the bank's unique identifier, instead using a randomly generated UUID, and Reaticulate will automatically assign a MSB/LSB for the bank on a per-project basis.
> 
> The same internal mechanism for this per-project MSB/LSB assignment also enables what you're asking about. Except my plan is to embed the bank definition in the RPP, so that the RPP can be passed around to others without needing to also include ancillary bank files. You would have the same notion of system banks and project banks you eluded to.
> 
> With banks embedded within the RPP, there won't be a text file you can edit for the project-level banks, so this depends on a proper GUI editor, which I have planned for 0.6.
> 
> The UX I have in mind is that when the system bank is newer than the one in the project, Reaticulate will ask if you want to update the one in the project or leave them as diverged (with an option never to ask again).
> 
> The biggest problem with all these ideas is insufficient free time.


Thanks for the glimpse into the future -- these all sound like fantastic ideas!


----------



## tack

Hi all,

I am curious to know how many people use the articulation filter from the main screen.

Rather than spam this thread, if you could just quickly vote here, I'd appreciate it:

https://www.survey-maker.com/poll3307879x8C26445f-102

Thanks!


----------



## Oliver.T

Hi all, 
Is there a way to set the midi feedback of the articulation changes to the midi control suffice to match the corresponding slots instead of the values reaticulate sends to the instruments? Eg: first articulation slot sends midi CC-x, value-1, second art. slot sends CC-x, value-2, and so on. If it is combine with the slot selection by CC action, this way one would get two way communication and reflect the behavior of reaticulate to the surface. 
I imagine how this would work by creating custom reabanks and assigning values to the articulations according to their consecutive slot position and than midi learn all the articulation controls in the corresponding instrument. But aside from it being a very laborious process, what if I would like to preserve the numeration of the articulations, say for the sake of UACC? 
I know it is a bit nitpicky but hey, this thing already does things I would only imagine before I discovered it. So, why not aim even higher? 🙂
By the way I have found a way to implement the Zig's iteration of Mihkel Zilmer's Open Sound Control template to work with Reaticulate. It's so cool, it still makes me grin 😁 I will share the files with some explanation, hopefully tomorrow, if someone would need it. 
Thanks to all for your time, effort, camaraderie and ingenious Ness you put in the community. It really makes the world a better place! 
Cheers


----------



## tack

Oliver.T said:


> Is there a way to set the midi feedback of the articulation changes to the midi control suffice to match the corresponding slots instead of the values reaticulate sends to the instruments?


I'm afraid to say it's not, but I definitely understand the use case here and the ability to offer symmetry with the "Activate articulation by slot number" action makes perfect sense. I'm tracking it here and will look to add it to the next release.



Oliver.T said:


> I will share the files with some explanation, hopefully tomorrow, if someone would need it.


I'd definitely be interested in taking a peek at it!


----------



## Oliver.T

tack said:


> I'm tracking it here and will look to add it to the next release.


Thank you, Tack! You are a true champion!


tack said:


> I'd definitely be interested in taking a peek at it!


I would be honoured! Coming up in a few hours.


----------



## Oliver.T

Hi all,

here is my tweaked version of @Mihkel Zilmer 's Open Stage Control template for implementation with Reaticulate. I am not by a long shot a programmer, but I put some time and effort to understand the ins and outs of what is happening under the hood and arrived to this by brute force approach. So, this is by no means the most elegant coding on my side (I think), but rather a minor adjustment of others's work in order for OSC and Reaticulate to talk the same language. Standing on the shoulders of giants, so to say. Also I haven't tested it extensively, but so far it works great.

So, Reaticulate sends MSB (CC0) and LSB(CC32) messages on the default channel each time you select a track, or trigger an articulation on a track. The values of these messages are the "address" of the reabanks, and each reabank has its unique address. OSC then takes these values and it makes a simple arythmetic operation: (MSB value * 128) + LSB value = patch number. For example: CC0 value: 64, CC32 value: 10 (the address of the Reaticulate factory bank: SCC - V2 Legato Decorative) would be (64 * 128) + 10 = patch 8202 in the OSC template. In other words, CC0 values work as banks, and CC32 as patches. So, CC0 bank holds patches 0 - 127, CC1 patches 128 - 255, CC3 patches 256 - 383.....CC127 patches 16 256 - 16 383... that's a lot of patches!

As soon as a patch number is calculated, OSC calls out that patch and it updates the labels of the buttons in the OSC UI, provided that the patch with the appropriate number exists in the custom module.
You can customize/make your own patches by editing the custom module (Reaticulate+OSC.js) in an appropriate editor. I used Free JavaScript Editor. You could tweak and save the file while using OSC at the same time - it will auto update and reload the custom module automatically.

If you open the .js file and scroll a bit it's pretty self explanatory, and you would pretty much understand what you should do by the example patches that are already filled in. However, here is a detailed explanation:

There is a list with many rows of this:
// 2-5 Instrument name
261:{ 'trackname':'XXX', 'trackarticulations':[]},

So, the text after // doesn't matter, as far as OSC is conserned. It is only info for the user. Even the numbers 2-5 in the example are irrelevant for OSC. They should however inform that this patch has an address od CC0 value:2, CC32 value:5. "Instrument name" should be replaced with the... well, name of the instrument on the selected track.

The number 261 in the example however is the most important here - that's the patch number. It should appear red in the script editor. You should enter every patch number according to the reabank file you use. Here comes the math part: (2*128)+5=261 - as per the example.
(IMPORTANT: When OSC recieves the two CC values and looks for the appropriate patch in the .js file, there must be at least the patch number in order for OSC to acknowledge that this patch exists. Otherwise you would get and error message in the OSC console. So, be aware of this when troubleshooting.)

Track name should be filled in place of the XXX. However, the apostrophe (') sign before and after the text is needed. Example: 'SCC Violins 1'.
Track names appear in the OSC UI and update themselves accordingly (courtesy of @zig ).

Track articulation names are filled between the [] brackets and should be formatted in this fashion:
['first articulation name', 'second articulation name', ...'last articulation name']
So, every articulation name should sit between two apostrophes (') and (except the last one) precede a comma (,) and a space.
These will auto populate the buttons in the UI in accordance to the selected patch. Also, the number of buttons showed in the UI will change in relation to how many articulation names for the currently sellected patch are filled in the .js file.

The UI (Reaticulate+OSC.json file):
The 54 buttons are assigned to CC127, however this is by personal preference. You can choose to assign them to another CC. However you must assign this same CC to the "Activate articulation by slot number" action. You can do that easily, by adding shortcut in the Reaper action list. You don't have to assign every single button, just one, as they send on the same CC.
First button sends value of 1, second value of 2 ..... last (54th) sends value of 54. They are in tap mode, so there is no off value being sent.

The Enable and Disable buttons are assigned to CC126 and 125 respectvely (again, personal preference) and send values of 127-null. These too need to be assigned to the appropriate actions. (I use OTR, where there is Custom actions "Track enable" and "Track disable", I suppose Reaper has those natively too?) I imagine more elegant way to do this is possible, by using only one CC, but I didn't get to delve into that.

Lastly, you should change the target of the buttons to correspond to your midi port. Mine is midi:send, so in stead of send, fill in the name of your midi port.

For testing purposes there are two patches: 8195 'SCC - V1 Core' and 8202 - 'SCC - V2 Legato Decorative'. These are Reaticulate factory banks, so when you first test the template, you can put them on two tracks and switch between them, in order to see if OSC reacts accordingly. VSTi is not neaded for the test, just see if Reaticulate changes state as expected when you control it from OSC.

I think that's about it. I appologize for my wordiness, I am not a native english speaker. I hope it is intelligibly written. Also, to the more versed in programming stuff: sorry for the unnecessary details, but I wanted to make easier to the others like me, that are not so. I spent many many hours searching, collecting info, tweaking, reading, watching JavaScript tutorials, trying and failing, just to be able to tweak some few lines of code. Nonetheless, it was worth it!

I would like to extend my gratitude to @tack , @Mihkel Zilmer , @Manaberry and all the others for their hard work and selfless contribution to the community. Hats off!

Stay safe all and write some marvelous music,
Cheers


----------



## axb312

@tack I occasionally have this issue where the key switch doesn't land up where I want it to (cursor position). Any ideas how to fix this?


----------



## Oliver.T

Hi @tack ,
I noticed that when I use "Activate articulation slot number by CC" the hidden programs don't count as slots (understandable, why would they when they do not exist in the GUI). But using OSC, it would be great to make patches to be as consistent across instruments as possible, meaning each particular articulation to map to a designated button in the OSC button grid, yet still not cluttering the Reaticulate GUI in the process, by having bunch of non-hidden empty slots that do nothing.
So, long story short, is it possible for a hidden program to have its designated slot? Thanks!
O.T.


----------



## Hamrock

OT Berlin Brass


----------



## Hamrock

Heavyocity Forzo Modern Brass


----------



## Markrs

Hi @tack I have had a thought regarding a feature. It might not be a good idea but I thought I would sound it out.

One of the issues with articulation maps is that you can't use track pre-delay to compensate for the different sample delays, as it is fixed for the entire track. Thankfully Reaper has Midi nudge (you can also use JS Time Selection as a pre-delay but you also need all the FX on an item for that to work) which can be done on an item basis. What would be great is that I could set the sample delay in Reaticulate in miliseconds, then when I use a articulation it slices the midi at that point and apply the midi nudge to the given value.

The benefits is that you can have all your articulations on one track and compensate for individual sample delay.

I have looked into how to do this via using custom actions when an articulation is selected in Reaticulate but haven't come up with a solution.


----------



## tack

Markrs said:


> What would be great is that I could set the sample delay in Reaticulate in miliseconds, then when I use a articulation it slices the midi at that point and apply the midi nudge to the given value.


On the radar 









Negative note delay depending on articulation · Issue #130 · jtackaberry/reaticulate


@jason, I think, we had a talk about this in the past: negative note delay depending on the articulation. A group of composers started to maintain an Excel Sheet with the delay times of different l...




github.com


----------



## h.s.j.e

I'm having a strange problem with Reaticulate, which I assume is somehow down to my inexperience/ignorance, but might also just be an issue with Session Strings Pro 2:

I built multis in K6 for each Session Strings Pro section, grouping the articulations by type. So Midi Channel 2 is routed to the first instance of Kontakt in the multi, with legato, portamento, glissando and sustain on keyswitches C-1 to D#-1, and so on.

Within Reaticulate, it looks like this:

//! c=legato i=legato [email protected]/note:12
1 legato
//! c=legato i=legato-portamento [email protected]/note:13
2 portamento
//! c=legato i=legato-glissando [email protected]/note:14
3 glissando
//! c=legato i=sustain [email protected]/note:15
4 sustain

This set up successfully triggers all the other articulations, but not these. Even if I move them to a different instance of Kontakt within the multi and adjust the channel number and note trigger to match, they still won't trigger. Instead, whatever articulation was last selected manually or by keyswitch within the instance plays.

The keyswitches themselves work to trigger articulations. So does selecting the articulation in the UI. Is there something special about how these articulations work that I'm missing? Is there some reason that the keyswitch info from Reaticulate isn't getting through? Like I said at the top, I'm tempted to suspect I'm just being dense, but I can't figure it out, and I'd love any answers folks might have.


----------



## tack

h.s.j.e said:


> //! c=legato i=legato [email protected]/note:12


Just hastily reading this on the couch but at first blush, assuming you want to send note 12 to channel 2 and then route future events to channel 2, this (and the other articulations) should be in the form [email protected]:12


----------



## h.s.j.e

tack said:


> Just hastily reading this on the couch but at first blush, assuming you want to send note 12 to channel 2 and then route future events to channel 2, this (and the other articulations) should be in the form [email protected]:12


Thanks for taking the time to answer so quickly! This is helpful to know, and a sign of the kind of ignorance I may be suffering from, but it didn't solve the problem. 

I keep wondering if it's some kind of a glitch (or feature) in SSP2, but I can't figure out why it would only impact keyswitch information sent via Reaticulate, not manual keyswitches. Is there a difference between how Kontakt receives manual keyswitch entry and the Reaticulate info?


----------



## tack

h.s.j.e said:


> Is there a difference between how Kontakt receives manual keyswitch entry and the Reaticulate info?


Nope, at the end of the day it's just a MIDI event, all the same to Kontakt whether it's something you manually play or whether it's generated.

Would you be able to email me a sample project that shows a slimmed down view of what you're going after, and include in the email your current reabank? It's always faster figure out the intended workflow and whatever might be going wrong that way.

Thanks!


----------



## h.s.j.e

tack said:


> Nope, at the end of the day it's just a MIDI event, all the same to Kontakt whether it's something you manually play or whether it's generated.
> 
> Would you be able to email me a sample project that shows a slimmed down view of what you're going after, and include in the email your current reabank? It's always faster figure out the intended workflow and whatever might be going wrong that way.


Thanks so much, I've just done so. It's one of those things that isn't a huge deal - after all, I'm not switching between portamento and glissando constantly - but it's been nagging at me steadily since I first set up the system.


----------



## h.s.j.e

h.s.j.e said:


> Thanks so much, I've just done so. It's one of those things that isn't a huge deal - after all, I'm not switching between portamento and glissando constantly - but it's been nagging at me steadily since I first set up the system.


Long story short: I had not actually done so, and when @tack pointed that out, I corrected it and it solved the problem. Many thanks.


----------



## Oliver.T

Hi all,
Does anyone use UACC KS with Spitfire Libs with Reaticulate? Does it work reliably over all and for layering in particular? Is it wort the hussle remapping everything from UACC to UACC KS? It would be great if one could layer articulations on the fly, compared to preconfigured layered programs, which is not too bad either. Maybe there is a way already, I just didn't figure it out yet?... Thanks


----------



## tack

Oliver.T said:


> Does it work reliably over all and for layering in particular? Is it wort the hussle remapping everything from UACC to UACC KS? It would be great if one could layer articulations on the fly, compared to preconfigured layered programs, which is not too bad either. Maybe there is a way already, I just didn't figure it out yet?


UACC KS would work fine in principle, it's just a different type of output event as far as Reaticulate is concerned. Unfortunately the idea of layering doesn't fit with Reaticulate's design of using program changes to trigger articulations, because program changes are discrete point-in-time events. So you would have to create custom articulations for the specific layerings you want.

At some point in the future I hope to switch to notation events from program changes, but right now there are too many Reaper limitations to make this feasible.


----------



## tack

0.4.7 is out with some bug fixes.

*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.6:

*Bug Fixes*

Fixed bug where window pinned state was not preserved between restarts


----------



## andyhy

While I was working with Reaticulate today I created an updated reabank for BBCSO Professional so it now includes both legato types where applicable i.e. legato and legato (Extended) see attached txt file. This has not yet been posted to the Reaticulate User Banks page as I'm not sure how to do that bit yet.


----------



## andyhy

tack said:


> 0.4.7 is out with some bug fixes.
> 
> *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.6:
> 
> *Bug Fixes*
> 
> Fixed bug where window pinned state was not preserved between restarts


I updated my version of reaticulate yesterday with no problem. When you have a moment please could you upload my revised BBCSO Pro reabank to your website - see above. I've added the new legato articulations where applicable so it should be complete now as the current website reabank already has the new mutes. I don't know if it would also be useful for me to post my Reaper template for each section of BBCSO Pro as they take ages to set up from scratch.


----------



## tack

Hi Andy, apologies for the delay here.


andyhy said:


> I've added the new legato articulations where applicable so it should be complete now as the current website reabank already has the new mutes.


Do you think this bank would be usable for non-Pro users? It's largely the same as the existing set of banks that @Stevie contributed. I'm wondering if it makes sense to keep both sets just for the occasional extended legato articulation that's not available with non-Pro.

Also, I noticed some keyswitch changes to the Bass Flute bank:






Were these corrections from Stevie's bank, or did perhaps the library itself change?



andyhy said:


> I don't know if it would also be useful for me to post my Reaper template for each section of BBCSO Pro as they take ages to set up from scratch.


I definitely see the appeal, but kinda falls outside the purview of Reaticulate. But if you wanted to attach them here (or you have some means of hosting them elsewhere), we could include a link to your post as a comment in the reabank file for future users.

Thanks!


----------



## andyhy

tack said:


> Hi Andy, apologies for the delay here.
> 
> Do you think this bank would be usable for non-Pro users? It's largely the same as the existing set of banks that @Stevie contributed. I'm wondering if it makes sense to keep both sets just for the occasional extended legato articulation that's not available with non-Pro.
> 
> Also, I noticed some keyswitch changes to the Bass Flute bank:
> 
> 
> 
> 
> 
> 
> Were these corrections from Stevie's bank, or did perhaps the library itself change?
> 
> 
> I definitely see the appeal, but kinda falls outside the purview of Reaticulate. But if you wanted to attach them here (or you have some means of hosting them elsewhere), we could include a link to your post as a comment in the reabank file for future users.
> 
> Thanks!


I think it's better to post both Core and Pro versions of the BBCSO reabank. Keep them separate. I think I just used what was already uploaded and added the new legato stuff. Btw I just added the new Wondrous Flutes to the AROOF reabank (see attachment).


----------



## andyhy

Attachment now attached!


----------



## andyhy

tack said:


> Hi Andy, apologies for the delay here.
> 
> Do you think this bank would be usable for non-Pro users? It's largely the same as the existing set of banks that @Stevie contributed. I'm wondering if it makes sense to keep both sets just for the occasional extended legato articulation that's not available with non-Pro.
> 
> Also, I noticed some keyswitch changes to the Bass Flute bank:
> 
> 
> 
> 
> 
> 
> Were these corrections from Stevie's bank, or did perhaps the library itself change?
> 
> 
> I definitely see the appeal, but kinda falls outside the purview of Reaticulate. But if you wanted to attach them here (or you have some means of hosting them elsewhere), we could include a link to your post as a comment in the reabank file for future users.
> 
> Thanks!


I didn't answer the specific question about sharing a template. In retrospect I decided it's unnecessary as most people have their own ideas of what to include in their template and I'm not doing this professionally so best left to others at the sharp end of the music business.


----------



## Oliver.T

Hi @tack ,
Sorry if this comes out rude, but I would like to kindly ask if you are planning to add the "Support slot numbering for articulation feedback to control surface" feature anytime soon? I really hope that you would consider it for the next update. I sorely miss it for visual feedback to my touch surface. It would mean so much to me and others' too, I'm sure. That, and maybe increasing the amount of groups, but now I'm really pushing it, sorry 
All the best


----------



## tack

A little teaser showing some work I've been doing to improve touch display support:



New things shown in this video (in order of appearance):

Refreshed icons (made with vector graphics to better support higher DPI displays)
Finessed button stylinga
Smooth scrolling (with mousewheel)
Some new experimental settings
Touchscreen support with kinetic touch-scrolling
Default articulation colors are customizable from settings
Articulation _insertion_ animation to more easily see when the project has been modified
Refined drag-and drop

(The touchscreen is my phone running Spacedesk, streaming the display over WiFi. Consequently it's lags a couple frames and there is occasional display jank, but you get the idea.)


----------



## tack

@Oliver.T man I'm _really _sorry I didn't reply until now -- I missed your post. :(


Oliver.T said:


> I would like to kindly ask if you are planning to add the "Support slot numbering for articulation feedback to control surface" feature anytime soon?


"Soon" is a problematic word, but it's probably a safe bet that when I plan to implement this feature wouldn't qualify as soon. My goal is to get it out in the next major release after the upcoming one, which puts it around Dec/Jan (depending on Christmas staycations).



Oliver.T said:


> That, and maybe increasing the amount of groups, but now I'm really pushing it, sorry


Nah, increasing groups is on the to-do list.  I think I can get it to 16 without any major problems, but it's been a while since I looked at that area of code.

I've not been overly motivated on this front because groups are a bit problematic: groups are a Reaticulate concept and not understood by Reaper, but Reaper is the thing that takes care of chasing the program change events. You would _expect_ all the articulations in each group to be retriggered on transport start, but in reality only the last program change on each channel is, because that's all REAPER knows how to chase.

Groups have their uses to be sure, but unfortunately they aren't perfect. My fear is that adding more groups serves to draw attention to an area I know has a few big warts.


----------



## Trash Panda

@tack perhaps I missed it (haven't combed through the past few pages). Is there a GUI for setting up articulations yet or is it still text editor to put it in?


----------



## TimRideout

oooooooh - anything to do with Reaticulate is *automatically* exciting  Thanks @tack !


----------



## tack

Trash Panda said:


> @tack perhaps I missed it (haven't combed through the past few pages). Is there a GUI for setting up articulations yet or is it still text editor to put it in?


Text editor for now I'm afraid. The next major release (0.5.0) will have some new important plumbing to enable the GUI editor which will be in the major release following that one (0.6.0). It's taken me much longer to get here than I wanted -- among other things, the Covidpocalypse has resulted in me working quite a lot more hours for my day job than usual which has impeded my Reaticulate hacking time.

But I'm making progress, slowly and steadily. I plan to release the GUI library that powers Reaticulate as a separate project very soon, so that has also been a bit of a diversion from Reaticulate proper as I've been refactoring that code, addressing quite a lot of technical debt, and preparing documentation. (And writing new tools for Lua documentation generation and Lua library packaging -- an area where Lua is quite deficient compared to other languages, IMO.)


----------



## NeonMediaKJT

is there a simpleton's guide anywhere? I have watched a few videos on YouTube but it all goes way over my head. I downloaded a few banks online, but something must've gone wrong because I've got wrong articulations playing etc.


----------



## tack

NeonMediaKJT said:


> is there a simpleton's guide anywhere? I have watched a few videos on YouTube but it all goes way over my head.


Have you come across this video? It's a very gentler and more appropriate introduction than the one I did.


----------



## NeonMediaKJT

tack said:


> Have you come across this video? It's a very gentler and more appropriate introduction than the one I did.


Thank you mate! I’ll watch that. I’ve been considering going to studio one for sound variations but if I can figure this out that’d be much better!


----------



## tack

Hi Reaticulate users -- I have another quick survey for you.

This time it's about how CCs should be chased when using articulations assigned to patches spread across multiple channels.

https://www.survey-maker.com/QCW9SQ8DD

Your feedback is much appreciated!


----------



## Markrs

tack said:


> Hi Reaticulate users -- I have another quick survey for you.
> 
> This time it's about how CCs should be chased when using articulations assigned to patches spread across multiple channels.
> 
> https://www.survey-maker.com/QCW9SQ8DD
> 
> Your feedback is much appreciated!


I have filled in the survey (very well explained and demonstrated). I hope it helps


----------



## Oliver.T

Markrs said:


> I have filled in the survey (very well explained and demonstrated). I hope it helps





tack said:


> Hi Reaticulate users -- I have another quick survey for you.
> 
> This time it's about how CCs should be chased when using articulations assigned to patches spread across multiple channels.
> 
> https://www.survey-maker.com/QCW9SQ8DD
> 
> Your feedback is much appreciated!


Hi @tack, 
I've taken the survey and chose "something else". So, (assuming i properly understood the matter) ideally for me it would be if both are available, possibly on per bank basis, with the option to override. If that is not an option however, or an unnecessary complication, the default behaviour (no chasing on the previous channel) seems to me the most appropriate, as one can always shape the cc curve on another track assigned to a dedicated midi channel. That way you wouldn't be stuck with the initial curve only, with no way to modify it. Hope that makes sense. 
Cheers

P. S: in retrospect, I think i should've chosen the default in the first place.


----------



## tack

Oliver.T said:


> ideally for me it would be if both are available, possibly on per bank basis, with the option to override.


What if it were a per _track_ configurable option, instead of at the bank level?



Oliver.T said:


> the default behaviour (no chasing on the previous channel) seems to me the most appropriate, as one can always shape the cc curve on another track assigned to a dedicated midi channel. That way you wouldn't be stuck with the initial curve only, with no way to modify it.


Indeed. But whichever approach is default, you could always use another track (or, probably better, another MIDI channel on the same track) to achieve the other behavior. So the purpose of the survey is to determine which of the two behaviors most users would expect to see as the default.

Thanks for filling out the survey and following up here!


----------



## Oliver.T

tack said:


> What if it were a per _track_ configurable option, instead of at the bank level?


Well, I don't see why not. But than again, I haven't stumbled upon a case yet where I was missing this function. So, maybe I am not really as relevant as a respondent for the survey. I was merely going with the "more is better" attitude, without much thought. But as I said above, on second look it seamed to me a bit overly complicated. So, any one of those that does not completely prohibit the other would be fine by me. 


tack said:


> you could always use another track (or, probably better, another MIDI channel on the same track) to achieve the other behavior.



I didn't know that works that way... Won't two identical CCs at the same time interfere with one another?


tack said:


> So the purpose of the survey is to determine which of the two behaviors most users would expect to see as the default


As a default I would expect the current behaviour.


----------



## andyhy

I don't know if this is useful to anyone else but I've just updated my reabank for Cinematic Studio Woodwinds (latest expressive legato version). Every articulation mode is catered for. Please see attachment. Just change the bank number if it's one you're already using in your own user reabank file.


----------



## andyhy

Similarly I don't know if anyone is interested in Reaticulate for Spitfire Audio Aperture Rapter Orchestra and Aperture Dreadnought Orchestra but here are the banks I created for them. Apologies for the long file names. Again if you've used these bank numbers already in your user reabank just change them.


----------



## andyhy

Another one I've not yet seen on the github userbanks page is a bank for Abbey Road One, so again here it is. It works for me but if anyone spots a mistake let me know. All the additional AR1 modules to date are covered.


----------



## andyhy

Finally some miscellaneous stuff: SCS Other Patches, OT Phoenix Orchestra and OT Dagu. Again I've not seen these on the github userbanks page so far. Seems a pity not to share them with other users of reaticulate.


----------



## Markrs

Thanks for all these Reatictulate files @andyhy having the Aperture Orchestra ones might encourage me to use them more


----------



## andyhy

Markrs said:


> Thanks for all these Reatictulate files @andyhy having the Aperture Orchestra ones might encourage me to use them more


You're very welcome. I agree in many ways Aperture is a hidden gem. Quite a versatile little library. Very handy for sketching ideas. Maybe one day Spitfire will release it in the Originals series.


----------



## tack

Oliver.T said:


> But than again, I haven't stumbled upon a case yet where I was missing this function.


Me neither, but the scenario was discussed in this thread and I understand the utility of it. To your point, I can see cases when _both_ behaviors would be warranted, so I do have in mind that it ought to be configurable (at least at the track level).



Oliver.T said:


> I didn't know that works that way... Won't two identical CCs at the same time interfere with one another?


Not as long as the bank is assigned to the track with a source channel of Omni. In this case, events on different source channels are routed independently. A conflict would occur only if the same articulation were active on both source channels, but that's not the scenario being discussed here.



Oliver.T said:


> As a default I would expect the current behaviour.


Yeah me too, hence why I implemented it that way. But so far about 75% of responders disagree with us. 

With that much of a lead, I'm sufficiently convinced that most people expect the other behavior by default.

Admittedly only 20 people have submitted the survey so far. If you're lurking on this thread and haven't done so yet, I'd appreciate your input.

@andyhy, appreciate the bank submissions. I'll get those reviewed and uploaded to the userbanks location this week.


----------



## Villanao

Hi, I'm trying to set up my first map with Reaticulate (Hyperion Strings Micro).

I'm trying to send a note and a CC message in the same program:

//! c=legato i=legato o=cc:102,64/o=note:12 
20 Legato

But they don't work together. Separate they work fine though, I wonder what I'm missing.

Thanks for an awesome tool!


----------



## Dementum

Villanao said:


> Hi, I'm trying to set up my first map with Reaticulate (Hyperion Strings Micro).
> 
> I'm trying to send a note and a CC message in the same program:
> 
> //! c=legato i=legato o=cc:102,64/o=note:12
> 20 Legato
> 
> But they don't work together. Separate they work fine though, I wonder what I'm missing.
> 
> Thanks for an awesome tool!


So you have the o= command in there twice. You need to seperate several command just by the "/".
In your case this would be:


//! c=legato i=legato o=cc:102,64/note:12 
20 Legato


----------



## Villanao

Dementum said:


> So you have the o= command in there twice. You need to seperate several command just by the "/".
> In your case this would be:
> 
> 
> //! c=legato i=legato o=cc:102,64/note:12
> 20 Legato


Right! That did the trick, thank you so much! I was up to 3 AM and woke up in a bad mood because of this lol, you just made my day!


----------



## Desertanu

Most of the articulations I've assigned work correctly, but I'm running into a strange issue with one of my lines. I'm using BBC Core and I have a viola line that's meant to play longs. However, no matter which articulation I assign to this section of the piece, the viola plays spicatto notes instead. I noticed that for some reason, in the Spitfire Player, it switches the articulation, but I'm unsure as to why that occurs. Does anyone know how I can solve this issue?


----------



## tack

Desertanu said:


> I'm using BBC Core and I have a viola line that's meant to play longs. However, no matter which articulation I assign to this section of the piece, the viola plays spicatto notes instead.


Without seeing the MIDI item, my best guess is that there is some stray MIDI event in that's causing the BBC Core patch to directly change to spiccato bypassing Reaticulate.

Are you able to recreate this in a small (single track, single MIDI item) project that you can email me, along with the BBC Core bank file you're using?


----------



## Desertanu

tack said:


> Without seeing the MIDI item, my best guess is that there is some stray MIDI event in that's causing the BBC Core patch to directly change to spiccato bypassing Reaticulate.
> 
> Are you able to recreate this in a small (single track, single MIDI item) project that you can email me, along with the BBC Core bank file you're using?


I noticed that the midi had three different items, but I couldn't find anything that seemed out of place in the bank/program select in the midi editor. I'll email you a copy of the track along with the bank file.


----------



## tack

Desertanu said:


> I noticed that the midi had three different items, but I couldn't find anything that seemed out of place in the bank/program select in the midi editor. I'll email you a copy of the track along with the bank file.


Got it, thanks. I don't have BBC SO myself but looking at the project it seems to me that the problem is that your articulation change (Program Change event) is on channel 1, while all your notes are on channel 5.


----------



## Desertanu

tack said:


> Got it, thanks. I don't have BBC SO myself but looking at the project it seems to me that the problem is that your articulation change (Program Change event) is on channel 1, while all your notes are on channel 5.


Thanks for taking a look at it. I'm a bit confused about why that may be the issue. For all of the other instruments (aside from the Oboe), the Program Change event and notes are on separate channels as well. The 2nd violins also have notes on channel 5 and are working as intended.


----------



## tack

Desertanu said:


> I'm a bit confused about why that may be the issue. For all of the other instruments (aside from the Oboe), the Program Change event and notes are on separate channels as well. The 2nd violins also have notes on channel 5 and are working as intended.


I'd need to see the whole project to really explain it, but what I can say definitively is that's not the right approach. If it's working at all, it's a fluke.  PC events need to be on the same channel as the notes they intend to modify.

I'm not sure if that will fix your issue though. Since we're even talking about multiple MIDI channels, I'm guessing you're doing some sort of multitimbral instrument with BBC SO? Or perhaps layering multiple instruments on a single track?

Although, you only have one bank mapped to the track using Omni -> Source routing, so based on that it seems relatively straightforward, and everything should be on the same channel (why not channel 1?). Unfortunately without BBC SO I can't open the actual VI and see how it's configured in terms of channels, so if you're still having issues I'll need more details on how the instrument is configured.

Another useful thing you can do -- it's the first thing I do when I'm troubleshooting this sort of thing -- is stick a ReaControlMIDI on the FX chain just after Reaticulate and enable the MIDI logger. Then you can see whether what's coming out of Reaticulate makes sense for the downstream patch.


----------



## Desertanu

tack said:


> I'd need to see the whole project to really explain it, but what I can say definitively is that's not the right approach. If it's working at all, it's a fluke.  PC events need to be on the same channel as the notes they intend to modify.
> 
> I'm not sure if that will fix your issue though. Since we're even talking about multiple MIDI channels, I'm guessing you're doing some sort of multitimbral instrument with BBC SO? Or perhaps layering multiple instruments on a single track?
> 
> Although, you only have one bank mapped to the track using Omni -> Source routing, so based on that it seems relatively straightforward, and everything should be on the same channel (why not channel 1?). Unfortunately without BBC SO I can't open the actual VI and see how it's configured in terms of channels, so if you're still having issues I'll need more details on how the instrument is configured.
> 
> Another useful thing you can do -- it's the first thing I do when I'm troubleshooting this sort of thing -- is stick a ReaControlMIDI on the FX chain just after Reaticulate and enable the MIDI logger. Then you can see whether what's coming out of Reaticulate makes sense for the downstream patch.


I see. I usually import the midi from notation software and expand those tracks into Reaper tracks. I then import the midi and meta events as multichannel items on a single track and assign one instrument fx to each track. The channels seem to be assigned automatically before I add the fx. After looking at the Midi log, I believe what's coming out makes sense. In the event list it looks like all of the notes are sent to channel 1.


----------



## tack

Desertanu said:


> After looking at the Midi log, I believe what's coming out makes sense. In the event list it looks like all of the notes are sent to channel 1.


In the sample project you sent me, the note outputted by Reaticulate in response to the PC goes on channel 1, because the PC is on channel 1. All the subsequent notes in the MIDI item are on channel 5.

I can't reconcile that against what you said earlier that "in the event list it looks like all of the notes are sent to channel 1." From your screenshot above, all the notes are on channel 5. Given the BBC SO bank definition you provided (which doesn't hardcode output channels) and the fact that the bank is mapped to the track in Reaticulate as Omni -> Source (wherein Reaticulate will take a note on channel 5 and pass it through on channel 5), those notes are hitting the Spitfire VI on channel 5, not channel 1.

I don't have BBC SO Core, but I picked up Discover as it's cheap enough, hoping it would be enough to reproduce your issue. First observation: the reason this channel separation between PC and notes works at all is because the player is set to "Midi Channel: Any".






So that explains why any of this ever worked at all for you.  I would still really recommend you put the PC events on the same channel as the notes as a standard practice, because when you deal with multitimbral instruments or do things like divisi on a single track, failing to do this will definitely bite you in the ass.

Ok, so all that said, as to your specific problem why the problem passage is always playing spiccato, this doesn't appear to have anything to do with Reaticulate: your Spitfire Player instance, as configured, always switches to spiccato when you play Bb3 (the Bb just below middle C). The first note in problem area is -- surprise! -- the Bb. You can see the note on the keyboard in the GUI is a different color.






I am either too thick to figure out how to remap articulations in the Spitfire Player or it's not something that's possible with the Discover version, but I can confirm when I reload the patch within the player the keyswitch assignment resets.

HTH.


----------



## Desertanu

tack said:


> In the sample project you sent me, the note outputted by Reaticulate in response to the PC goes on channel 1, because the PC is on channel 1. All the subsequent notes in the MIDI item are on channel 5.
> 
> I can't reconcile that against what you said earlier that "in the event list it looks like all of the notes are sent to channel 1." From your screenshot above, all the notes are on channel 5. Given the BBC SO bank definition you provided (which doesn't hardcode output channels) and the fact that the bank is mapped to the track in Reaticulate as Omni -> Source (wherein Reaticulate will take a note on channel 5 and pass it through on channel 5), those notes are hitting the Spitfire VI on channel 5, not channel 1.
> 
> I don't have BBC SO Core, but I picked up Discover as it's cheap enough, hoping it would be enough to reproduce your issue. First observation: the reason this channel separation between PC and notes works at all is because the player is set to "Midi Channel: Any".
> 
> 
> 
> 
> 
> 
> So that explains why any of this ever worked at all for you.  I would still really recommend you put the PC events on the same channel as the notes as a standard practice, because when you deal with multitimbral instruments or do things like divisi on a single track, failing to do this will definitely bite you in the ass.
> 
> Ok, so all that said, as to your specific problem why the problem passage is always playing spiccato, this doesn't appear to have anything to do with Reaticulate: your Spitfire Player instance, as configured, always switches to spiccato when you play Bb3 (the Bb just below middle C). The first note in problem area is -- surprise! -- the Bb. You can see the note on the keyboard in the GUI is a different color.
> 
> 
> 
> 
> 
> 
> I am either too thick to figure out how to remap articulations in the Spitfire Player or it's not something that's possible with the Discover version, but I can confirm when I reload the patch within the player the keyswitch assignment resets.
> 
> HTH.


Thanks for the assistance. The part is working as expected now. I'll try to keep things in the same channel going forward. I've certainly learned a lot through this experience.


----------



## Desertanu

I think I may have run into a bug or issue with Reaticulate. I have the details posted on this thread: https://vi-control.net/community/threads/strange-issue-with-legato-during-playback.115996/


----------



## robgb

Hi, @tack. So while screwing around in the Reaper MIDI editor, I found that if I break out a Kontakt instrument to separate articulations on different channels, I can create a MIDI Editor right-click menu that allows me to change articulations on the fly. I've simply renamed each "channel" to the name of the articulation. So the menu reads "Legato" "Sustain" "Marcato" etc.







This is great for a simple system, but I started to wonder is there some way to call up the reaticulation articulation switches via a menu like this in addition to the reaticulate GUI? I have no idea what .lua scripts call up the specific articulations. But the few I've tried have not been successful (those closest I came is "Script: Reaticulate_Activate next articulation in group 1 on default channel.lua." Is there a way to do this?

Is what I'm asking making any sense?

UPDATE: I've got it figured out. If I change the above script as follows:

cmdlist = reaper.GetExtState("reaticulate", "command")
cmd = ' activate_articulation=0,1,2,127,1'
reaper.defer(function()
reaper.SetExtState("reaticulate", "command", (cmdlist or '') .. cmd, false)
end)

The second number after activate_articulation switches to the corresponding articulation. So, in my case, 1 is legato, 2 is sustain, etc.


----------



## tack

robgb said:


> cmd = ' activate_articulation=0,1,2,127,1'


Two things:

The activate_articulation internal command takes 3 arguments, not 5. Channel (where 0 means the default channel, 1 means channel 1, etc.), program number (zero offset), and whether the articulation should be inserted (0=activate only, 1=activate and insert).
This isn't intended to be a user-facing API, so it's not going to be stable. But if you're ok with the volatility, go nuts. 
Obviously the biggest drawback with a non-builtin approach is your popup menu isn't able to be dynamically generated based on the current track's actual articulations.



robgb said:


> Is there a way to do this?


Unfortunately no, not out of the box -- this isn't a workflow I had considered before.

It's not out of the question to support natively though, if others chime in and say they would find that useful.


----------



## robgb

tack said:


> Two things:
> 
> The activate_articulation internal command takes 3 arguments, not 5. Channel (where 0 means the default channel, 1 means channel 1, etc.), program number (zero offset), and whether the articulation should be inserted (0=activate only, 1=activate and insert).
> This isn't intended to be a user-facing API, so it's not going to be stable. But if you're ok with the volatility, go nuts.
> Obviously the biggest drawback with a non-builtin approach is your popup menu isn't able to be dynamically generated based on the current track's actual articulations.
> 
> 
> Unfortunately no, not out of the box -- this isn't a workflow I had considered before.
> 
> It's not out of the question to support natively though, if others chime in and say they would find that useful.


Thanks. I realize it's limited but it's working like a charm. If there was a way for the menus to change per track/instrument, that would be amazing, but I figure I could also set up all my libraries to be uniform. I really do like the ability to do it this way. Hope others will, too.


----------



## lbeetge

Hi All

I made a little Reaticulate scaffolding app for myself and thought maybe someone else here would like to use it. Please note that it is very simple and written to meet my own way of working with Reaticulate. As such, it only generates o:note values as that is all I use. I feel that it makes it easier to generate sections for the reaticulate file which can then just be copied and pasted. Much easier to choose icons and color from a dropdown than having to scan through the web site to find what you are looking for. Like I said, consider it a scaffold. Once it's generated you can manually make any changes or additions to suit your needs.

Anyway, hope someone else finds some use for it.

Here's the link:






rscaffold







rscaffold.netlify.app





PS: Forgot to say, you can just keep adding your needed articulations and then press generate to view the text to be copied and pasted


----------



## Audio Birdi

lbeetge said:


> Hi All
> 
> I made a little Reaticulate scaffolding app for myself and thought maybe someone else here would like to use it. Please note that it is very simple and written to meet my own way of working with Reaticulate. As such, it only generates o:note values as that is all I use. I feel that it makes it easier to generate sections for the reaticulate file which can then just be copied and pasted. Much easier to choose icons and color from a dropdown than having to scan through the web site to find what you are looking for. Like I said, consider it a scaffold. Once it's generated you can manually make any changes or additions to suit your needs.
> 
> Anyway, hope someone else finds some use for it.
> 
> Here's the link:
> 
> 
> 
> 
> 
> 
> rscaffold
> 
> 
> 
> 
> 
> 
> 
> rscaffold.netlify.app
> 
> 
> 
> 
> 
> PS: Forgot to say, you can just keep adding your needed articulations and then press generate to view the text to be copied and pasted


This is amazing! Thank you so much! :D


----------



## lbeetge

Audio Birdi said:


> This is amazing! Thank you so much! :D


No Problem. Happy if someone finds it useful


----------



## tack

lbeetge said:


> I made a little Reaticulate scaffolding app for myself and thought maybe someone else here would like to use it.


Neat little Vuetify app.  Thanks for sharing it!



liquidlino said:


> Is the o:note the key on the keyboard (e.g. G1)? If so - would be super helpful if it had the musical note and octave against each in the drop down.


It is. There are lookup tables online (for example) but you can also install a ReaControlMIDI FX on a track, enable logging, and press any note to see the note value. This is what I do. (FWIW, the built-in GUI editor, which will be released next year, will show the note names as well as offer a MIDI learn feature.)


----------



## lbeetge

tack said:


> Neat little Vuetify app.  Thanks for sharing it!
> 
> 
> It is. There are lookup tables online (for example) but you can also install a ReaControlMIDI FX on a track, enable logging, and press any note to see the note value. This is what I do. (FWIW, the built-in GUI editor, which will be released next year, will show the note names as well as offer a MIDI learn feature.)


Vue & Vuetify is awesome for doing something like this really quickly. If anybody is interested I can put the code on Github and you can modify it to your heart's content. It's a very simple little script if you know Vue & Vuetify. 

Can't wait for the built in Reaticulate GUI next year.


----------



## Markrs

lbeetge said:


> Vue & Vuetify is awesome for doing something like this really quickly. If anybody is interested I can put the code on Github and you can modify it to your heart's content. It's a very simple little script if you know Vue & Vuetify.
> 
> Can't wait for the built in Reaticulate GUI next year.


I heard of Vue.js but hadn't heard of Vuetify, but after having a bit of an explore it looks very good framework. Thank you for Reaticulate Scaffold, looks very easy to use for building articulation maps.


----------



## odod

Please help i cannot turn it the reaticulate off, it is always popped out everytime i open reaper, even though i already turned it off .. any help?


----------



## Chris Richter

odod said:


> Please help i cannot turn it the reaticulate off, it is always popped out everytime i open reaper, even though i already turned it off .. any help?


Do have it set up as a startup action maybe? That would be explain the behavior.


----------



## odod

Chris Richter said:


> Do have it set up as a startup action maybe? That would be explain the behavior.


already tried all the option, still showing everytime


----------



## robgb

Okay. So in my quest to be the laziest composer on earth, I've figured out a way to use a right click Reaper menu that follows Reaticulate's articulations on each track. Instead of going with names, I went with numbers and I have Reaticulate docked to the left and each articulation has a corresponding number. Here's how it works:







Of course, I could simply mouse over to Reaticulate, but like I said, I'm lazy. It's also possible to remove Reaticulate from the dock and toggle it with a hot key so that it's right beside you in the midi editor. Either way makes that long mouse glide to the left unnecessary...


----------



## robgb

odod said:


> already tried all the option, still showing everytime


I have these kinds of glitches with Reaper sometimes. It eventually goes away. Or you could try closing it and saving your default template with it closed. That might work.


----------



## lbeetge

robgb said:


> Okay. So in my quest to be the laziest composer on earth, I've figured out a way to use a right click Reaper menu that follows Reaticulate's articulations on each track. Instead of going with names, I went with numbers and I have Reaticulate docked to the left and each articulation has a corresponding number. Here's how it works:
> 
> 
> 
> 
> 
> 
> 
> Of course, I could simply mouse over to Reaticulate, but like I said, I'm lazy. It's also possible to remove Reaticulate from the dock and toggle it with a hot key so that it's right beside you in the midi editor. Either way makes that long mouse glide to the left unnecessary...


Hahaha. "That long mouse glide to the left". That made me laugh so hard


----------



## lbeetge

Markrs said:


> I heard of Vue.js but hadn't heard of Vuetify, but after having a bit of an explore it looks very good framework. Thank you for Reaticulate Scaffold, looks very easy to use for building articulation maps.


yeah Vuetify is pretty cool to use with view. It uses Google's Material Design principles. Another one is bootstrap-vue. Same thing but with the bootstrap framework.


----------



## odod

robgb said:


> I have these kinds of glitches with Reaper sometimes. It eventually goes away. Or you could try closing it and saving your default template with it closed. That might work.


strangely now it's gone ..


----------



## Chris Richter

robgb said:


> Okay. So in my quest to be the laziest composer on earth, I've figured out a way to use a right click Reaper menu that follows Reaticulate's articulations on each track. Instead of going with names, I went with numbers and I have Reaticulate docked to the left and each articulation has a corresponding number. Here's how it works:
> 
> 
> 
> 
> 
> 
> 
> Of course, I could simply mouse over to Reaticulate, but like I said, I'm lazy. It's also possible to remove Reaticulate from the dock and toggle it with a hot key so that it's right beside you in the midi editor. Either way makes that long mouse glide to the left unnecessary...


That’s great! Would you mind sharing how you did this?


----------



## robgb

Chris Richter said:


> That’s great! Would you mind sharing how you did this?


Create multiple instances of this script (a modified Reaticulation script) and name them ART 01, 02, 03, etc. In the script you have to change the second number in the sequence to correspond to the numbered articulations.



Code:


-- Activates and Commits an Articulation. Second number determines what articulation is played

cmdlist = reaper.GetExtState("reaticulate", "command")
cmd = ' activate_articulation=0,1,1'
reaper.defer(function()
    reaper.SetExtState("reaticulate", "command", (cmdlist or '') .. cmd, false)
end)


Once all these scripts are created, add them to your Reaper Midi Actions list, then customize the Midi Piano Roll Menu and add each of the scripts there. Then rename them to 01, 02, 03, etc.

Now, with Reaticulate open and assigned to a track, you should be able to right click as illustrated.


----------



## Chris Richter

robgb said:


> Create multiple instances of this script (a modified Reaticulation script) and name them ART 01, 02, 03, etc. In the script you have to change the second number in the sequence to correspond to the numbered articulations.
> 
> 
> 
> Code:
> 
> 
> -- Activates and Commits an Articulation. Second number determines what articulation is played
> 
> cmdlist = reaper.GetExtState("reaticulate", "command")
> cmd = ' activate_articulation=0,1,1'
> reaper.defer(function()
> reaper.SetExtState("reaticulate", "command", (cmdlist or '') .. cmd, false)
> end)
> 
> 
> Once all these scripts are created, add them to your Reaper Midi Actions list, then customize the Midi Piano Roll Menu and add each of the scripts there. Then rename them to 01, 02, 03, etc.
> 
> Now, with Reaticulate open and assigned to a track, you should be able to right click as illustrated.


Thank you very much for sharing. I have to confess I have no legs in coding. So I guess I'll have to rather find workflow improvements in creating shortcuts until I can make the time to learn it. I am also thinking about a responsive GUI like Composer Tools Pro might provide. But I really appreciate the input. Always great to see what is possible.


----------



## robgb

Chris Richter said:


> Thank you very much for sharing. I have to confess I have no legs in coding. So I guess I'll have to rather find workflow improvements in creating shortcuts until I can make the time to learn it. I am also thinking about a responsive GUI like Composer Tools Pro might provide. But I really appreciate the input. Always great to see what is possible.


Trust me, I know almost nothing about coding. The script above was written by @tack. I merely changed it slightly for my own use. So basically all I'm talking about is a cut and paste job.


----------



## tack

[Cross-posted on the REAPER forum]

Hi all,

I've just released Reaticulate 0.5.0-pre1, now included in the Prerelease Reapack (though branded as 0.4.90 in that ReaPack because <technical reasons>).

For the thrillseekers among you who enjoy throwing caution to the wind, I would certainly appreciate some additional eyeballs (and projects) with testing. If you're already on Reaticulate's prerelease track, it should eventually auto-upgrade. (Or you can force it via Extensions | ReaPack | Synchronize packages.)

This isn't an official stable release yet, so I won't list all the changes here as I normally do for release announcements. But here's a link to the 0.5.0 changelog.

Using a prerelease isn't without risks: there will be bugs, and projects saved out with 0.5.0-pre will not work properly if opened with the current stable Reaticulate (0.4.7). I've done my best to test it, but, y'know, I'm just one guy. Ensure you backup your projects beforehand.

Even if you tested it out in a portable REAPER install and gave a few of your existing projects a go and reported back success or failure, I'd be very grateful. This version should support projects from any previous version of Reaticulate, so any issues in that regard are considered bugs. Though not required, I'd also appreciate if problems were reported over on GitHub.

Thanks!


----------



## Stevie

Thats awesome Jason! So, simply creating duplicates of projects and go from there should work for testing purposes.


----------



## tack

Reaticulate 0.5.0 is now available!

Thanks to everyone who helped with testing during the pre-release cycle, particularly Sam and Stephan. Your feedback was invaluable!

👉 You can read much more in the *release notes on the website* which expands on the highlights of this release.

*Installing*

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

*Upgrading*

For those of you on the release track, you should eventually receive the update, but you can force it by following the updating instructions. Those using the prerelease track will receive this update as well, plus of course all the prereleases leading up to 0.5.0.

Here are the changes since 0.4.7:

*New Features*

 MSB/LSB bank values are now entirely assigned and managed by Reaticulate. Users no longer need to worry about this annoying technical detail, and can simply put "*" as placeholders for both MSB and LSB values in bank definitions. (#63)
 Pre-created banks (such as those contributed by other users) can now be much more conveniently imported into Reaticulate, either from clipboard ([Pencil Icon] | Import Banks from Clipboard) or by dragging-and-dropping one or more files onto Reaticulate's window. Users no longer need to edit the Reabank file in a text editor just to import existing banks. Nor, thanks to dynamic and automatic MSB/LSB assignment, do users need to worry about adjusting MSB/LSB of third party banks to avoid conflicts.
 Reaticulate now fully supports Retina/Hi-DPI displays with UI scaling and high-DPI graphics. The UI scale automatically respects the system-wide DPI but can be adjusted in Reaticulate's settings.
 Default MIDI channel can be remembered globally, per track, or per item, and is more robustly synced with the MIDI editor (#83)
 Changes to the default MIDI channel are now fed back to the control surface, if configured. See Reaticulate's Usage documentation for more information.
 Holding alt while clicking an articulation button in any manner that inserts the articulation (i.e. double clicking, long-pressing, or right-clicking) will always insert at the edit cursor, even when notes are selected in the MIDI editor. (#79)
 Articulation definitions in banks now respect the "m" (message) attribute, which displays the message as a tooltip when hovering over the articulation (#67)
 Touch scrolling can now be enabled, in addition to smooth scrolling, which significantly improves the experience on touch-capable devices (#56)
 Default articulation colors are now configurable in Reaticulate's settings page
 A new experimental option has been added to maintain a single floating FX window for instrument FX (such as VSTi) as different tracks are selected
 A default list of CCs for chasing (when not explicitly defined in the bank itself) is now configurable in Reaticulate's settings page (#146)
 Articulations will now be inserted on all selected Reaticulate-enabled tracks. If the banks are different between tracks, then the first bank on the track that defines an articulation with the same program number is used.
 Inserting articulations on selected tracks will create a new MIDI item under the edit cursor if there isn't currently one
 Two new "tweak" functions have been added to Reaticulate's track configuration page:
 Repair tracks where the user manually assigned a custom ReaBank resulting in articulations to appear as numeric values (e.g. 70-2-17).
 Clear all articulation assignments for the track in the GUI, to provide a more discoverable solution to the problem of an inadvertently activated articulation on the wrong channel. (You were always able to middle-click articulation buttons in the main screen to reset the assignment, but this wasn't discoverable.)

*Minor Enhancements*

 "Track selection follows MIDI editor" is now enabled by default for new installations
 Display a warning when the selected track doesn't match focused item in MIDI editor (a common gotcha)
 Articulations can be inserted into a MIDI item when using the articulation filter either by pressing shift-enter or the insert key.
 Articulation buttons will now layout in multiple columns when space permits
 When an articulation is inserted by clicking on the articulation's button, it will flash to indicate the insertion
 All articulation icons have been redone with vector graphics in order to support high-DPI displays
 The articulation list's scroll position is now retained per track and restored when the track is selected
 All buttons in the GUI got a minor facelift
*Bug Fixes*

 Fixed a bug where CCs were not always properly chased when activating articulations between different channels
 Properly refocus the previous window when using the "Focus articulation filter" action after activating an articulation (enter) or clearing the filter (escape). (Requires js_ReaScriptAPI to be present.)
 Fixed a bug where control surface feedback send would not be setup when the Reaticulate JSFX was initially installed on a track
 Fixed an issue where existing Program Change events would sometimes not be deleted when replacing articulations
 Improved robustness when starting with invalid or malformed saved configuration


----------



## storyteller

Congrats on the release Jason. Looks like a big list of welcomed improvements.


----------



## Kabraxis

I throw up some very basic tool for building Reaticulate (keyswitch) banks. I'll be updating it over the weekend with more features, but thought it might be useful for some people as is already

https://kabraxis.itch.io/reaticulate-helper


----------



## tack

0.5.1 is out with a couple bug fixes.

See also the release notes for 0.5.0.

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


*Upgrading*
If you've installed using ReaPack, you can upgrade to this release by following the updating instructions.


Here are the changes since 0.5.0:

*Bug Fixes*

Fix runtime error when js_ReaScriptAPI is not installed
Fix bug where docking/undocking failed to work without js_ReaScriptAPI


----------



## tack

Third time's the charm? 0.5.2 is out with another pair of bug fixes.

See also the release notes for 0.5.0.

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


*Upgrading*
If you've installed using ReaPack, you can upgrade to this release by following the updating instructions.


Here are the changes since 0.5.1:

*Bug Fixes*

 Fixed a regression from 0.5.1 where Reaticulate would crash when a bank on the current track had an articulation without an icon name
 Fixed a bug where the user's default articulation color (as configured in the settings screen) was not respected


----------



## CATDAD

As someone who has been experimenting with the idea of consolidating the rest of my DAW duties to Reaper recently (specifically, orchestral template), Reaticulate has been a great help. So thanks for that!


----------



## liquidlino

CATDAD said:


> As someone who has been experimenting with the idea of consolidating the rest of my DAW duties to Reaper recently (specifically, orchestral template), Reaticulate has been a great help. So thanks for that!


Not just a great help, it's amazing. I haven't got direct hands on experience with other DAW articulation solutions, but watching videos for things like Expression Maps in cubase, Reaticulate is so much better and cleaner. Take for instance if you have a large number of articulations, then Expression Maps becomes almost unusuable in Cubase, as it's effectively a piano roll of articulations - no such issue with reaticulate.


----------



## labyrinths

Reaticulate is seriously a game changer. I’ve used other DAWs and I think this is as good as any articulation manager out there, and I prefer being able to edit banks in a text editor, too. It’s faster for me than using most GUIs (though the fact that I’m a programmer doesn’t hurt). This is a tremendous gift to the community.

If there’s eventually a solution for per-articulation negative delays that doesn’t involve bumping notes around on the grid, this will be essentially a perfect piece of software, IMO. It does exactly what it’s supposed to do, it’s easy to use, and it never gets in the way.


----------



## tack

I've released 0.5.3 which fixes a critical issue on MacOS with Retina displays.

See also the release notes for 0.5.0.

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


*Upgrading*
If you've installed using ReaPack, you can upgrade to this release by following the updating instructions.


Here are the changes since 0.5.2:

*Minor Enhancements*


 On startup, Reaticulate now ensures its window, if undocked, fits within the display where it resides
 Bank group names are now case insensitive, so that e.g. "Spitfire" and "SpitFire" will no longer create separate submenus, but will be placed within the same submenu

*Bug Fixes*

 Fixed bonkers infinitely-expanding undocked window and potential REAPER crash on Macs with Retina displays
 Avoid crashing when parsing a malformed Bank definition in the reabank file (#98)


----------



## NeonMediaKJT

there's a ui now? Like i don't have to do coding anymore? lol. I wanted to use it so bad but could never get my head around the notepad stuff.


----------



## tack

NeonMediaKJT said:


> there's a ui now? Like i don't have to do coding anymore? lol. I wanted to use it so bad but could never get my head around the notepad stuff.


No bank editor GUI yet natively. Kabraxis offered a web-based helper above. The native option will exist in the next major release of Reaticulate, but that'll take a few months to develop.


----------



## tack

0.5.4 is a minor release bringing a couple small functional improvements.


See also the release notes for 0.5.0.

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


*Upgrading*
If you've installed using ReaPack, you can upgrade to this release by following the updating instructions.


Here are the changes since 0.5.3:

*New Features*


 Allow inserting articulations across multiple MIDI items when they are all open in the MIDI editor, enabled for editing, and have selected notes (#167)
*Bug Fixes*

 Fix articulation insertion using the inline MIDI editor when multiple items are being edited in an inline editor at the same time


----------



## rMancer

@tack I'm having an issue with the latest release (0.5.4) where Reaticulate opens all scrunched up vertically if undocked (i.e. I have to drag it back out to make it visible). See picture below for what I mean. And it doesn't seem to remember what size it should be; upon closing it and reopening it, it gets all scrunched again.

I'm guessing this is related to the 0.5.3 change regarding window position? I believe I missed the last couple updates entirely (I believe I was on 0.5.0 or 0.5.1 and it was working fine then).

If it makes a difference, I'm running two monitors stacked vertically. Typical setup is Arrange view on top (primary monitor), MIDI and Reaticulate (undocked) on bottom monitor.

No big deal really, it only needs to be done once when I open/start a project. Just thought I'd report it though. Thank you!


----------



## tack

rMancer said:


> If it makes a difference, I'm running two monitors stacked vertically. Typical setup is Arrange view on top (primary monitor), MIDI and Reaticulate (undocked) on bottom monitor.


Yup, this is it exactly.

This was reported over on the REAPER forum and I have fix pending for the next release, which I'll be pushing out either later tonight or tomorrow (time permitting).


----------



## rMancer

That's wonderful, thank you very much!


----------



## tack

0.5.5 is another minor release bringing a couple small functional improvements.

See also the release notes for 0.5.0.

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


*Upgrading*
If you've installed using ReaPack, you can upgrade to this release by following the updating instructions.


Here are the changes since 0.5.4:

*Minor Enhancements*


 Finessed the behavior of multi-item insertion logic introduced in 0.5.4, which should work more intuitively for typical workflows (#171)
*Bug Fixes*

 Fixed undocked windows shrinking to very small heights on certain multi-monitor configurations on Windows and Linux


----------



## tack

rMancer said:


> That's wonderful, thank you very much!


And it's out. Hope the new version works ok for you. Please let me know if you still run into any bugs or related weirdness. Thanks!


----------



## rMancer

Seems to work just fine now. Thank you again!


----------



## tack

0.5.6 is a hotfix for the 0.5 series of releases.

See also the release notes for 0.5.

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


*Upgrading*
If you've installed using ReaPack, you can upgrade to this release by following the updating instructions.


Here are the changes since 0.5.5:

*Bug Fixes*

Fixed a runtime error that could occur on startup when detecting display resolution


----------



## Kabraxis

Came up with a very very basic script to convert Cubase .expressionmaps to Reaticulate format. It's in very very rough shape but does the work as of now. Check out:









GitHub - Kabraxist/Expression-2-Reaticulate


Contribute to Kabraxist/Expression-2-Reaticulate development by creating an account on GitHub.




github.com


----------



## tack

Kabraxis said:


> Came up with a very very basic script to convert Cubase .expressionmaps to Reaticulate format. It's in very very rough shape but does the work as of now


Cool. I was contemplating writing something like this myself -- even posted on VI-C a while back asking if anyone had an informal spec for Cubase expression maps -- but never found the time and motivation. Would love to see your project get fleshed out!

Thanks for sharing.


----------



## Kabraxis

tack said:


> Cool. I was contemplating writing something like this myself -- even posted on VI-C a while back asking if anyone had an informal spec for Cubase expression maps -- but never found the time and motivation. Would love to see your project get fleshed out!
> 
> Thanks for sharing.


Did anyone has any spec? I'd like too see that 
I saw some other projects on github that mingles with expressionmaps but it seems everyone is doing it by hand.


----------



## tack

Kabraxis said:


> Did anyone has any spec? I'd like too see that


The thread I started is here. @Dewdman42 had a go at drafting up an initial spec, which looks like it would make an excellent starting point. The structure itself is pretty straightforward and readable XML, but in practice the challenge will come from understanding the range of possible values and their semantics. Like for example symbol, displaytype and articulationtype are numeric values, but what does symbol=117 mean, say, and how should that be mapped to Reaticulate's articulation icons.


----------



## Kabraxis

tack said:


> The thread I started is here. @Dewdman42 had a go at drafting up an initial spec


That's a fantastic documentation there. It will be helping me much going forward.



tack said:


> but in practice the challenge will come from understanding the range of possible values and their semantics.


Yeah, that's what I realized when I started. Planning to use UACC list for generic articulations and leaving rest of it to the end user.


----------



## Kabraxis

So I put some more work into the .expressionmap converter and it turned out very well.

It's missing accuracy here and there but many articulation cosmetics are right on spot. It also supports CCs now. Helps with the 90% of the chore.


----------



## axb312

Hi @tack , How do I write a keyswitch in Re-articulate to select notes one after the other..

For Sonokinetic Sordino Strings, I have to select C1 (24) followed by C#1 to get a non-vib sustain.


----------



## tack

axb312 said:


> How do I write a keyswitch in Re-articulate to select notes one after the other. For Sonokinetic Sordino Strings, I have to select C1 (24) followed by C#1 to get a non-vib sustain.


This actually depends on what you mean by "one after the other." If the library needs to receive C1's note-up event _before_ it receives C#1's note-on, that's going to be a problem because Reaticulate doesn't support that. I've never actually seen this before in the wild.

OTOH -- and this is more likely given other libraries -- Sonokinetic Sordino Strings is fine with receiving note-ons for both C1 and C#1 one after the other and then both note-offs subsequently, this is straightforward, you just need to specify multiple note output events in the output event list.

Here is an example from one of the factory libraries:



Code:


//! c=legato-dark i=legato-tremolo o=note:25/note:34,65
30 legato tremolo


Here velocity 65 is defined in the second note, but the first note doesn't need a velocity so it's not specified (Reaticulate will use 127 in that case).


----------



## odod

downloaded the latest version, but the bank was not updated .. how to install the user reabank in mac osx?


----------



## tack

odod said:


> downloaded the latest version, but the bank was not updated


I'm afraid I don't understand what you mean by this. Can you elaborate?



odod said:


> how to install the user reabank in mac osx?


There's no "the" user reabank, but a collection of banks contributed by various users for various libraries. Installation is the same on all platforms -- either copy the bank to clipboard and import by clipboard, or download the bank file and drag and drop it into Reaticulate's window. More detailed instructions at the bottom of this page.


----------



## odod

tack said:


> I'm afraid I don't understand what you mean by this. Can you elaborate?
> 
> 
> There's no "the" user reabank, but a collection of banks contributed by various users for various libraries. Installation is the same on all platforms -- either copy the bank to clipboard and import by clipboard, or download the bank file and drag and drop it into Reaticulate's window. More detailed instructions at the bottom of this page.


drag and drop to the window solved the issue, but the factory preset now is gone ..


----------



## andyhy

Hi @tack

Once a reabank has been created is there any way for Reaticulate be controlled from a Stream Deck?


----------



## axb312

tack said:


> This actually depends on what you mean by "one after the other." If the library needs to receive C1's note-up event _before_ it receives C#1's note-on, that's going to be a problem because Reaticulate doesn't support that. I've never actually seen this before in the wild.
> 
> OTOH -- and this is more likely given other libraries -- Sonokinetic Sordino Strings is fine with receiving note-ons for both C1 and C#1 one after the other and then both note-offs subsequently, this is straightforward, you just need to specify multiple note output events in the output event list.
> 
> Here is an example from one of the factory libraries:
> 
> 
> 
> Code:
> 
> 
> //! c=legato-dark i=legato-tremolo o=note:25/note:34,65
> 30 legato tremolo
> 
> 
> Here velocity 65 is defined in the second note, but the first note doesn't need a velocity so it's not specified (Reaticulate will use 127 in that case).


That worked. Thank you.


----------



## tack

odod said:


> drag and drop to the window solved the issue, but the factory preset now is gone ..


When you say factor preset is gone, I am inferring that you mean when you go to track configuration in Reaticulate and select from the list of Banks, the Factory submenu does not appear in the bank selection popup menu?

Try uninstalling Reaticulate via ReaPack, remove the the repository altogether, and then reinstall it from scratch.

If that still doesn't work, can you run the REAPER action "Show REAPER resource path in finder" and from that path, navigate into Scripts/reaticulate and tell me if you see a file called "Reaticulate-factory.reabank"? (This, as you might have guessed, is the file that contains all the factory banks.) If If you see it, is it around 138KB? Are you able to read it? (Right click on the file in Finder and select Open With | Text Edit.) Does the file contain a comment about a dozen lines down that says "This file is distributed with Reaticulate and will be replaced with upgrades"?


----------



## tack

andyhy said:


> Once a reabank has been created is there any way for Reaticulate be controlled from a Stream Deck?


Not in the sophisticated, fully synchronized, articulations-dynamically-updating-as-you-change-tracks, articulation-icons-reflected-in-the-Stream-Deck way that we'd all want. That would require a custom Stream Deck plugin to work (with some customizations in Reaticulate), assuming it's even possible.

A simpler approach would be to use MIDI plugin (by Trevliga Spel) and have it send different values on a CC (e.g. CC 119) for different standard articulations (legato, sustains, mutes, pizz, etc.), and then you bind that CC to the "Script: Reaticulate_Activate articulation by CC on default channel.lua" action. This only works for banks that follow the documented advice on program number consistency, which was crafted specifically with control surface support in mind, but unfortunately the majority of user-contributed banks ignore this advice.


----------



## odod

tack said:


> When you say factor preset is gone, I am inferring that you mean when you go to track configuration in Reaticulate and select from the list of Banks, the Factory submenu does not appear in the bank selection popup menu?
> 
> Try uninstalling Reaticulate via ReaPack, remove the the repository altogether, and then reinstall it from scratch.
> 
> If that still doesn't work, can you run the REAPER action "Show REAPER resource path in finder" and from that path, navigate into Scripts/reaticulate and tell me if you see a file called "Reaticulate-factory.reabank"? (This, as you might have guessed, is the file that contains all the factory banks.) If If you see it, is it around 138KB? Are you able to read it? (Right click on the file in Finder and select Open With | Text Edit.) Does the file contain a comment about a dozen lines down that says "This file is distributed with Reaticulate and will be replaced with upgrades"?


Thani you for the prompt response, so here's what I did, uninstall it via reapack did not solve it, i had to do it manually from reaper folder and reinstall it, the factory folder is back and i drag and dropped the user reabank to the plugin window, and voila .. now back to normal. 

thank you so very much


----------



## andyhy

tack said:


> Not in the sophisticated, fully synchronized, articulations-dynamically-updating-as-you-change-tracks, articulation-icons-reflected-in-the-Stream-Deck way that we'd all want. That would require a custom Stream Deck plugin to work (with some customizations in Reaticulate), assuming it's even possible.
> 
> A simpler approach would be to use MIDI plugin (by Trevliga Spel) and have it send different values on a CC (e.g. CC 119) for different standard articulations (legato, sustains, mutes, pizz, etc.), and then you bind that CC to the "Script: Reaticulate_Activate articulation by CC on default channel.lua" action. This only works for banks that follow the documented advice on program number consistency, which was crafted specifically with control surface support in mind, but unfortunately the majority of user-contributed banks ignore this advice.


I'll explore using the Trevliga Spel route thanks @tack . In practice I have to admit that a simple project I set up with SSS yesterday using the Sideshowfx midi controller profile and the Reaticulate window docked on the side proved to be perfectly adequate workflowwise. But it's good to experiment so I will examine the alternative you described.


----------



## andyhy

I want to be able to select vibrato on and off but don't know the correct syntax when I'm using the CC value option in an OT SINE library. Say I want to switch on and off the expressive vibrato on a sustain patch, so I specify say 70,7 for the sustain followed by what? Or do I set the vibrato manually at the same time as adding the Reaticulate instruction? Help please.


----------



## tack

andyhy said:


> Say I want to switch on and off the expressive vibrato on a sustain patch, so I specify say 70,7 for the sustain followed by what? Or do I set the vibrato manually at the same time as adding the Reaticulate instruction?


I'm not sure I understand the question. Are you asking how to create an articulation in Reaticulate that sends two CC values out at the same time when activated? If not, can you expand more on what you're going for?


----------



## andyhy

tack said:


> I'm not sure I understand the question. Are you asking how to create an articulation in Reaticulate that sends two CC values out at the same time when activated? If not, can you expand more on what you're going for?


Yes, one to select the CC value the chosen articulation and the other to trigger a change in the status of CC3 in order to switch from expressive vibrato to non-vibrato, much as I have done using note instructions in CS2 to change settings in addition to selecting articulations..


----------



## tack

andyhy said:


> Yes, one to select the CC value the chosen articulation and the other to trigger a change in the status of CC3 in order to switch from expressive vibrato to non-vibrato


You can chain up to 16 different output events per articulation. Just separate them by a slash. Here's an example from the factory bank list which uses notes, but this works for any output type (including CC, as in your case):



Code:


//! c=legato-dark i=legato-tremolo o=note:25/note:34,65
30 legato tremolo


----------



## Ricgus3

@tack Is there a way for me to map the articulation in order to keys/buttons on my controller? Right now most articulations are UACC and have midi "velocity" triggers. But I was wondering if it is possible to like "bind" the buttons on Reaticulate to a key. So when you press a key/button it also sends information to trigger that articuation /midivelocity? 

I have a Impact LX61+ integrated with Reaper and I cannot figure it out


----------



## tack

Ricgus3 said:


> So when you press a key/button it also sends information to trigger that articuation /midivelocity?


If your controller can be configured to map the buttons to send out different values on some CC (I use CC119), then you can bind this CC to the "Script: Reaticulate_Activate articulation by CC on default channel.lua" action. The CC value being sent out will correspond to the program number, and since most of your articulations are following the UACC numbering this should work pretty well.

If you can't reconfigure your controller this way (though I'd be surprised, even my ancient and crappy Axiom controller could do this), then you'll probably need to shim in something like Bome MIDI Translator in between to translate between whatever your controller sends and MIDI CCs.


----------



## Ricgus3

tack said:


> If your controller can be configured to map the buttons to send out different values on some CC (I use CC119), then you can bind this CC to the "Script: Reaticulate_Activate articulation by CC on default channel.lua" action. The CC value being sent out will correspond to the program number, and since most of your articulations are following the UACC numbering this should work pretty well.
> 
> If you can't reconfigure your controller this way (though I'd be surprised, even my ancient and crappy Axiom controller could dot his), then you'll probably need to shim in something like Bome MIDI Translator in between to translate between whatever your controller sends and MIDI CCs.


Yes i can reconfigure the buttons.

What so you medan by Program Numbers? Do you mean: in the order my articulations are listed in reaticulate? Or do you mean like “long cs” has value CCx?

If the latter then I don’t think I have enough buttons . I have 8 buttons and the uacc has so many articulations


----------



## tack

Ricgus3 said:


> What so you medan by Program Numbers? Do you mean: in the order my articulations are listed in reaticulate? Or do you mean like “long cs” has value CCx?


The program number is the left-most number in the bank file beside the articulation name. Seeing as you've aligned to UACC, then you can pick which 8 articulations you want to be able to trigger from your controller.

Some more here:






Reabank files | reaticulate


Reaticulate | a free articulation management system for REAPER




reaticulate.com


----------



## metallissimus

I am new (again – played around with it for a while 15 years ago) to the whole VI world, new to Reaper and now stumbled upon this amazing tool Reaticulate. Got it running quite smoothly but I have a question now that I can't figure out on my own:
I have set up an extensive Multi in Kontakt (Player that is) with more than 16 patches, so patch 17 and following are on MIDI port B. Is it possible to route to another MIDI port with Reaticulate?


----------



## tack

metallissimus said:


> Is it possible to route to another MIDI port with Reaticulate?


Not directly, because REAPER (or any DAW, for that matter) can't address Kontakt Ports B-D. These are internal to Kontakt.

There are some tricks though, if you're willing to manage the complexity. Take a look at page 3 of this thread for details.

Alternatively, you might be interested to know that OTRv2 (from @storyteller) has this integration working out of the box, using the FlexRouter method I mention on the aforementioned page. However OTR isn't something you easily incorporate into your existing workflow. But it's certainly worth looking at if you're still experimenting with new workflows and are open to changing.


----------



## metallissimus

Now that was quick, thank you @tack!
After a quick look at flexrouter I don't understand it at all, I will look into OTR.

So far I have no workflow at all, I just want to set it up somewhat organized. I have the old EWQLSO Kontakt version right now (because I seem to have lost my ILok with the play license) and rebuilding the KS Instruments as Multis seems to be a relatively easy way to use existing Reaticulate custom banks for EWQLSO instead of having to write them all on my own – I would just need to change the outputs from notes to MIDI channels.


----------



## metallissimus

tack said:


> There are some tricks though, if you're willing to manage the complexity. Take a look at page 3 of this thread for details.


Turns out it's not that hard if one uses the right FlexRouter – were you aware there's another project on github with the same name? https://github.com/vincent178/flexrouter

Still got my head spinning a bit, but I made it work the way you describe on page 3, thanks again!


----------



## tack

metallissimus said:


> were you aware there's another project on github with the same name? https://github.com/vincent178/flexrouter


I am, but this project was created over 3 years after my FlexRouter. 

Glad to hear you got it sorted!


----------



## JeffvR

I have this bug where I put (for example) cc:11,90 after the o.
Now it does output value 90 on cc11 for that articulation, but when I move my cc11 fader and it hits 90 it's also switching to that particular articulation, only visually. With only visually I mean I can see the articulation is switching inside Reaper, but it's actually not changing inside the Kontakt patch.


----------



## tack

JeffvR said:


> Now it does output value 90 on cc11 for that articulation, but when I move my cc11 fader and it hits 90 it's also switching to that particular articulation, only visually. With only visually I mean I can see the articulation is switching inside Reaper, but it's actually not changing inside the Kontakt patch.


I'm guessing the CC11 you're sending is incidental, and not actually used by the patch to change the articulation (presumably just to level-match between articulations), and you're sending other MIDI events other than the CC11 to do the actual articulation change?

Yeah, this is known issue. Reaticulate tries to be clever by observing the underlying keyswitch events and reflecting what it assumes will be a direct articulation change (bypassing Reaticulate) that within the GUI. It's particularly convenient for libraries that use note-based keyswitches, where if you play the note to trigger the articulation directly, Reaticulate can at least reflect that in the GUI. But as you've noticed, this has some rough edges.

I'll fix it in the next release to only implement this behavior if there is a single output event for the articulation, which is the only case it can reliably detect the direct articulation control.


----------



## Marcus Millfield

Hi guys,

This is probably my fault somehow, but can someone give me any pointers on what I'm doing wrong?

I have this as an example:
//! c=staccato-short i=staccato-short o=note:1/note:36/note:24
40 staccato short

When I hover over this articulation in Reaticulate, I see:






But when I insert this articulation, the VST I'm controlling ends up in:
note E-1 (4), note C#2 (37), note E1 (28), note B0 (23)

Which is another articulation all together:

//! c=rep190-dim i=rep190-dim o=note:4/note:37/note:28/note:23
40 Repetitions diminuendo 190 bpm

The only thing that I can think of is that somehow, the Program Number (40) has some influence, although the docs say no:


> _Although the *program numbers are arbitary* and don't influence any specific behavior_




Some help would be appreciated. Thanks in advance!

Marcus


----------



## storyteller

Marcus Millfield said:


> Hi guys,
> 
> This is probably my fault somehow, but can someone give me any pointers on what I'm doing wrong?
> 
> I have this as an example:
> //! c=staccato-short i=staccato-short o=note:1/note:36/note:24
> 40 staccato short
> 
> When I hover over this articulation in Reaticulate, I see:
> 
> 
> 
> 
> 
> 
> But when I insert this articulation, the VST I'm controlling ends up in:
> note E-1 (4), note C#2 (37), note E1 (28), note B0 (23)
> 
> Which is another articulation all together:
> 
> //! c=rep190-dim i=rep190-dim o=note:4/note:37/note:28/note:23
> 40 Repetitions diminuendo 190 bpm
> 
> The only thing that I can think of is that somehow, the Program Number (40) has some influence, although the docs say no:
> 
> 
> 
> Some help would be appreciated. Thanks in advance!
> 
> Marcus


Your LSB, MSB, and Program Number should be a unique combination from everything else in your Reabank. Otherwise, it might choose from another place in the file.


----------



## Marcus Millfield

storyteller said:


> Your LSB, MSB, and Program Number should be a unique combination from everything else in your Reabank. Otherwise, it might choose from another place in the file.


Does that mean that the Program Number should be unique for every articulation in that one bank? Or for every group of articulations (i.e. shorts, sustains etc.)?


----------



## Marcus Millfield

storyteller said:


> Your LSB, MSB, and Program Number should be a unique combination from everything else in your Reabank. Otherwise, it might choose from another place in the file.


Thank you, the Program Number was the answer. I needed to throw away my better judgement and let go of the Program Number standards from the UACC v2 specs and just assign a unique Program Number to each articulation for that bank. That solved this issue.


----------



## tack

Marcus Millfield said:


> Does that mean that the Program Number should be unique for every articulation in that one bank? Or for every group of articulations (i.e. shorts, sustains etc.)?


Each articulation needs a unique program number just within the bank. I've updated the documentation to make this clearer. Sorry for the confusion.



Marcus Millfield said:


> I needed to throw away my better judgement and let go of the Program Number standards from the UACC v2 specs and just assign a unique Program Number to each articulation for that bank.


If you're making banks for yourself and you're not interested in the use cases mentioned in the documentation (namely adding articulations to selected notes across multiple tracks that use different banks, or using a control surface of some sort to select from a standard set of articulations for sketching purposes), then yeah, it doesn't much matter.

But if you're inclined to share those banks (which would be great if they're for libraries for which there aren't currently any user-contributed banks) then aligning to the common articulations listed in the docs is really recommended. In your case, you can use program 40 for the staccato variant you think is most generally useful in a sketching context, and then use whatever for the other variants.


----------



## Marcus Millfield

tack said:


> Each articulation needs a unique program number just within the bank. I've updated the documentation to make this clearer. Sorry for the confusion.
> 
> 
> If you're making banks for yourself and you're not interested in the use cases mentioned in the documentation (namely adding articulations to selected notes across multiple tracks that use different banks, or using a control surface of some sort to select from a standard set of articulations for sketching purposes), then yeah, it doesn't much matter.
> 
> But if you're inclined to share those banks (which would be great if they're for libraries for which there aren't currently any user-contributed banks) then aligning to the common articulations listed in the docs is really recommended. In your case, you can use program 40 for the staccato variant you think is most generally useful in a sketching context, and then use whatever for the other variants.



Thank you for your reaction and for clearing things up in the documentation.

I use VSL VI series and those tend to work best with custom presets, so sharing the files on GitHub isn't really helpful for anyone.

One last question that comes to mind: do the Program Numbers need to be in the MIDI range (1-127), or can they go beyond?


----------



## tack

Marcus Millfield said:


> One last question that comes to mind: do the Program Numbers need to be in the MIDI range (1-127), or can they go beyond?


Unfortunately only 0-127 is allowed. It's constrained by MIDI, as you say. At some point in the future it's possible I'll move Reaticulate away from Program Changes as the basis of articulation control to something like REAPER's text or annotation events, but at the moment these aren't fit for purpose.


----------



## Marcus Millfield

tack said:


> Unfortunately only 0-127 is allowed. It's constrained by MIDI, as you say. At some point in the future it's possible I'll move Reaticulate away from Program Changes as the basis of articulation control to something like REAPER's text or annotation events, but at the moment these aren't fit for purpose.


Thanks again for the quick response. I love the product so far!


----------



## liquidlino

For anyone who bought the OT Andea Ronroco recently, here's a CC based Reaticulate reabank. Make sure you load the whole instrument by double clicking the instrument name, and then in the options for the instrument, change to using CC Values for Keyswitch:






//! g="OT/Andea" n="Ronroco"
//! m="Set Keyswitch to CC"
//! id=cbbdac4f-34a1-4a1d-86ea-3e9e00365d1f
Bank * * Andea - Ronroco
//! c=long i=note-whole o=cc:70,0
1 Sustains Chromatic
//! c=long i=note-whole o=cc:70,12
2 Sustains
//! c=short i=portato o=cc:70,24
3 Portato Long
//! c=short i=portato o=cc:70,36
4 Portato Short
//! c=short i=staccato o=cc:70,48
5 Staccato
//! c=short i=bend-up o=cc:70,60
6 Bends
//! c=long i=trill o=cc:70,72
7 Trills
//! c=long i=note-whole o=cc:70,84
8 Chords
//! c=long i=tremolo o=cc:70,96
9 Chords tremolo
//! c=short i=staccato o=cc:70,108
10 Dead notes


----------



## liquidlino

Hi - do you think Reaticulate could be a solution for phrasing. I'm looking at the CSS way of using sustain pedal to indicate legato phrases, rather than using overlapping notes. If I mark a phrase as slurred in Reaper notation, it doesn't seem to do anything other than make the notation nice. Could Reaticulate pick this up and turn it into pedal on/off events?


----------



## Russell Anderson

There must be something simple I am missing or messing up, and I am hoping either I can figure out what it is or someone can point out what it is I'm doing wrong.

- SCS factory bank is not sending any midi information to Komtakt. Banks are set to Source/Omni, patches are set to channel 1 and locked to UACC
- My NSS bank, starting with violins, is also doing nothing (barring having temporary wrong icons/colors!), and the "Bank * *" MSB/LSB numbers are not auto-populating:

//! g="Nashville Scoring Strings" n=Violins
//! id=ef983354-710d-458a-aabd-a8c130cd1706
Bank * * NSS Violins
//! c=legato i=legato [email protected]
20 legato
//! c=legato-cs i=legato [email protected]
26 legato cs
//! c=marcato i=marcato-quarter [email protected]
52 marcato
//! c=spiccato i=spiccato [email protected]
42 spiccato
//! c=col-legno i=col-legno [email protected]
58 col legno
//! c=pizzicato i=pizz [email protected]
56 pizzicato
//! c=tremolo i=tremelo [email protected]
11 tremelo
//! c=trill i=trill [email protected]
71 trill
//! c=long-cs i=con-sord [email protected]
7 long-cs
//! c=harmonics i=harmonics [email protected]
10 harmonics

I am so close I can almost visualize thinking about tasting success
I've been working on this template for days @[email protected] and wrangling Reaticulate finally is one of the last steps.


----------



## liquidlino

Russell Anderson said:


> There must be something simple I am missing or messing up, and I am hoping either I can figure out what it is or someone can point out what it is I'm doing wrong.
> 
> - SCS factory bank is not sending any midi information to Komtakt. Banks are set to Source/Omni, patches are set to channel 1 and locked to UACC
> - My NSS bank, starting with violins, is also doing nothing (barring having temporary wrong icons/colors!), and the "Bank * *" MSB/LSB numbers are not auto-populating:
> 
> //! g="Nashville Scoring Strings" n=Violins
> //! id=ef983354-710d-458a-aabd-a8c130cd1706
> Bank * * NSS Violins
> //! c=legato i=legato [email protected]
> 20 legato
> //! c=legato-cs i=legato [email protected]
> 26 legato cs
> //! c=marcato i=marcato-quarter [email protected]
> 52 marcato
> //! c=spiccato i=spiccato [email protected]
> 42 spiccato
> //! c=col-legno i=col-legno [email protected]
> 58 col legno
> //! c=pizzicato i=pizz [email protected]
> 56 pizzicato
> //! c=tremolo i=tremelo [email protected]
> 11 tremelo
> //! c=trill i=trill [email protected]
> 71 trill
> //! c=long-cs i=con-sord [email protected]
> 7 long-cs
> //! c=harmonics i=harmonics [email protected]
> 10 harmonics
> 
> I am so close I can almost visualize thinking about tasting success
> I've been working on this template for days @[email protected] and wrangling Reaticulate finally is one of the last steps.


HAve you gotten it working with any other libraries yet? Some basics - is Reaticulate before kontakt in the FX chain for the instrument track? Can you show a screenshot of your FX Chain, and the Reaticulate window when you have the track selected?


----------



## Russell Anderson

I probably read over the need to have Reaticulate first in the FX chain 3 times. hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh

Thanks for the help. The basics were exactly what I needed!


----------



## liquidlino

Russell Anderson said:


> I probably read over the need to have Reaticulate first in the FX chain 3 times. hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
> 
> Thanks for the help. The basics were exactly what I needed!


It's always the simplest things that trip us up. Glad I could help!


----------



## tack

Thanks for the support @liquidlino  

When you click the "Add Reaticulate FX" button in Reaticulate's GUI, it does ensure to insert it at the top of the FX chain, but indeed if things get moved around such that Reaticulate is downstream of the VSTi it's meant to control, nothing very exciting is likely to happen. 

@Russell Anderson the MSB/LSB doesn't get assigned to the reabank file, only the 'id' attribute is generated and stored in that file. Reaticulate dynamically generates an MSB/LSB for each bank per project, so that mapping is stored in the project file, not in the reabank file. Hope that clarifies what you observed.


----------



## tack

liquidlino said:


> If I mark a phrase as slurred in Reaper notation, it doesn't seem to do anything other than make the notation nice. Could Reaticulate pick this up and turn it into pedal on/off events?


Oops, missed this one, sorry about that.

It's definitely not impossible, but it's a fairly big change needed to support notation. I've been holding off to see if notation (and in particular custom text events) will be capable enough to replace Reaticulate's current Program Change approach, but as I said at the very top of this page, they just aren't fit for purpose yet.

So basically what you're asking in practice is a hybrid approach, where Reaticulate uses PCs as today but _optionally_ uses notation, which means users can end up in a very confusing situation where PCs and notation -- each providing independent articulation control -- can fight with each other. A hybrid approach sounds really, really tricky to me to make work in a way that doesn't also end up with a very confusing UX.

So, tl;dr, technically possible, but not likely to happen soon.


----------



## liquidlino

tack said:


> Oops, missed this one, sorry about that.
> 
> It's definitely not impossible, but it's a fairly big change needed to support notation. I've been holding off to see if notation (and in particular custom text events) will be capable enough to replace Reaticulate's current Program Change approach, but as I said at the very top of this page, they just aren't fit for purpose yet.
> 
> So basically what you're asking in practice is a hybrid approach, where Reaticulate uses PCs as today but _optionally_ uses notation, which means users can end up in a very confusing situation where PCs and notation -- each providing independent articulation control -- can fight with each other. A hybrid approach sounds really, really tricky to me to make work in a way that doesn't also end up with a very confusing UX.
> 
> So, tl;dr, technically possible, but not likely to happen soon.


Totally fine! In fact, Foresight just came into existence, and it takes care of doing the legato overlapping automatically. It uses cc58 though for CSS in default config, which is the deprecated method in reaticulate. I've been pondering how best to resolve this, or just leave it alone and keep on having a separate legato track without reaticulate but with Foresight vs a shorts track with reaticulate and no foresight.


----------



## tack

0.5.7 is a minor update for the 0.5 series of releases.

See also the release notes for 0.5.

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


*Upgrading*
If you've installed using ReaPack, you can upgrade to this release by following the updating instructions.


Here are the changes since 0.5.6:

*New Features*

 Reaticulate can now be configured (via Reaticulate's track configuration screen) to send custom MIDI messages to the configured control surface when a track is selected (#33)
 This feature addresses a regression introduced in 0.5.0 caused by the fact that bank MSB/LSBs are now dynamically generated, may vary between projects, and therefore are no longer useful for control surface integrations


*Minor Enhancements*

 Retroactive record is improved because now Reaticulate will always send the necessary MIDI for articulation changes to the VKB, which is captured in the retroactive record buffer
 The factory bank for Cinematic Studio Strings is now compatible with the newly released CSS v1.7 (which changed the keyswitch used for legato). These same factory banks continue to be compatible with previous versions of CSS as well.

*Bug Fixes*

 Support 14-bit CCs assigned to Reaticulate's various "insert/activate by CC" actions (#189) (thanks to Kabraxist)
 Fixed a regression in 0.5.0 where selecting notes and inserting a new articulation would fail to remove any existing articulations under the selected notes (#194)
 Fixed a regression where Reaticulate's global option to "Insert articulations based on selected notes when MIDI editor is open" would not respect a disabled setting
 Fixed a confusing bug where Reaticulate would reflect a manual articulation change in the GUI if it observed a MIDI message matching *any* of the output events for that articulation. Now it will only reflect manual articulation changes for articulations with a single note-based output event (#184)
 Fixed a crash of Reaticulate's GUI involving a race during track deletion


----------



## liquidlino

Is anyone else having a problem with the latest update? Adding articulations no longer inserting anything to the midi, and if I have the midi editor open on a track, and then select a different track on the TCP, I get the following error:

07:20:30.702 [ERROR] fatal: ...pData\Roaming\REAPER\Scripts\Reaticulate\reaticulate.lua:2224: attempt to perform arithmetic on a nil value (field '?')
stack traceback:
...pData\Roaming\REAPER\Scripts\Reaticulate\reaticulate.lua:205: in metamethod '__mul'
...pData\Roaming\REAPER\Scripts\Reaticulate\reaticulate.lua:2224: in method 'animate'
...pData\Roaming\REAPER\Scripts\Reaticulate\reaticulate.lua:9346: in field 'set_warning'
...pData\Roaming\REAPER\Scripts\Reaticulate\reaticulate.lua:9151: in method 'handle_onupdate'
...pData\Roaming\REAPER\Scripts\Reaticulate\reaticulate.lua:6341: in method 'onupdate'
...pData\Roaming\REAPER\Scripts\Reaticulate\reaticulate.lua:3884: in method '_update'
...pData\Roaming\REAPER\Scripts\Reaticulate\reaticulate.lua:3498: in function <...pData\Roaming\REAPER\Scripts\Reaticulate\reaticulate.lua:3498>
[C]: in function 'xpcall'
...pData\Roaming\REAPER\Scripts\Reaticulate\reaticulate.lua:210: in field 'call'
...pData\Roaming\REAPER\Scripts\Reaticulate\reaticulate.lua:218: in function <...pData\Roaming\REAPER\Scripts\Reaticulate\reaticulate.lua:218>

I have removed the reaticulate folder from scripts, and resynchronized from reapack, same result. Tested with CSS factory bank, and with Synchron Strings Pro bank, same result.

Have rolled back to 0.5.6 manually downloaded from github and works fine again.


----------



## tack

liquidlino said:


> Adding articulations no longer inserting anything to the midi


Are you trying to insert by double clicking? If so that one was reported, hotfix coming tonight.



liquidlino said:


> and if I have the midi editor open on a track, and then select a different track on the TCP, I get the following error


This one I can't reproduce but thanks for the stack trace, I'll dig into it. (Edit: I tell a lie. Reproduced here with a different REAPER install. On the case.)



liquidlino said:


> Have rolled back to 0.5.6 manually downloaded from github and works fine again.


FWIW you can also downgrade via ReaPack. All of the historical versions for the latest major release (0.5.x in this case), plus the latest from the previous major release (0.4.x) are included in the ReaPack for just this contingency.


----------



## tack

@liquidlino ok I've tracked down the crasher you ran into and will push a fix out with the release tonight. Can you confirm my first question about whether you were using double click to insert? If not there must be something else going wrong, in which case could you provide a bit more detail about what you're doing? Thanks!


----------



## liquidlino

tack said:


> @liquidlino ok I've tracked down the crasher you ran into and will push a fix out with the release tonight. Can you confirm my first question about whether you were using double click to insert? If not there must be something else going wrong, in which case could you provide a bit more detail about what you're doing? Thanks!


Hi - yep spot on, was double clicking the articulation in the reaticulate window.

Wow dude, super impressed with how fast you got onto these things. Do you have a buymeacoffee or someway I can support you? Without reaticulate I'd have switched DAW by now, it's priceless!


----------



## tack

liquidlino said:


> Wow dude, super impressed with how fast you got onto these things.


Sometimes the timing works out. 



liquidlino said:


> Do you have a buymeacoffee or someway I can support you?


Kind of! See donations blurb on website.




liquidlino said:


> Without reaticulate I'd have switched DAW by now, it's priceless!


Always grateful to hear from (mostly ) happy customers!


----------



## liquidlino

tack said:


> Sometimes the timing works out.
> 
> 
> Kind of! See donations blurb on website.
> 
> 
> 
> Always grateful to hear from (mostly ) happy customers!


Nice - I've just donated to Doctors without borders, as per your recommendation.

I've got Cubase trial at the moment, and IMHO, reaticulate is way better than the expression map system in Cubase.


----------



## tack

liquidlino said:


> Nice - I've just donated to Doctors without borders, as per your recommendation.


That's _wonderful_ to hear! Thanks very much for that. 



liquidlino said:


> I've got Cubase trial at the moment, and IMHO, reaticulate is way better than the expression map system in Cubase.


Nice. I've managed to remain relatively ignorant about Cubase's expression map feature, notwithstanding what I've seen in videos or read on this forum. Would be interested to learn what things in particular you feel Reaticulate does much better?

And on that note, can you try updating to the latest version in ReaPack and let me know if that works better for you?


----------



## liquidlino

tack said:


> That's _wonderful_ to hear! Thanks very much for that.
> 
> 
> Nice. I've managed to remain relatively ignorant about Cubase's expression map feature, notwithstanding what I've seen in videos or read on this forum. Would be interested to learn what things in particular you feel Reaticulate does much better?
> 
> And on that note, can you try updating to the latest version in ReaPack and let me know if that works better for you?


Tested, both issues fixed, brilliant!

Cubase - well I've only done two very short exercises in it to test it (and then decided I can't be bothered learning a new DAW, they're all the same, and Reaper is fine for me). I didn't like that you have to drag and drop the articulation on to the note in score editing mode - and then it just kinda floats on top - it's not precisely aligned like the event cc channel. Could just be me not knowing how to use Cubase fully, but I don't like it:


----------



## ToadsworthLP

liquidlino said:


> Totally fine! In fact, Foresight just came into existence, and it takes care of doing the legato overlapping automatically. It uses cc58 though for CSS in default config, which is the deprecated method in reaticulate. I've been pondering how best to resolve this, or just leave it alone and keep on having a separate legato track without reaticulate but with Foresight vs a shorts track with reaticulate and no foresight.


I just added support for MIDI program change events in the 1.1.0 version of Foresight, so this shouldn't be an issue anymore.


----------



## redninja

Hi,

After trying several methods(seperate tracks, CC autom. etc, I avoid KS) for articulation management, I, again returned back to Reaticulate.
I have 2 questions though.

1) I've never managed to clear articulations by middle-clicking. Maybe I'm overlooking something or misunderstand the usage. But when I either click on the midi item or click the articulation on the main panel or open MIDI item in editor and middle click articulation/program tag found in the below lane, nothing happens and it does not remove the articulation. How is that supposed to work? Where am I to middle-click to remove the articulation? 

2) I've seen several posts for Reaticulate usage in OT's SINE player. But how should I setup my SINE instance? Can I assign CC values to one midi channel for one instrument and use it with Reaticulate or should the articulations of each instrument be loaded in Keyswitches for Reaticulate to work? Or can we have both? Or 1 MIDI channel per articulation of 1 instrument in a SINE instance(i.e. channel 1 for staccato, channel 2 for sustains, channel 3 for marcato etc)..?

Thank you!


----------



## Kabraxis

Hey Redninja, s̶i̶n̶c̶e̶ ̶O̶T̶ ̶S̶I̶N̶E̶ ̶i̶n̶s̶t̶r̶u̶m̶e̶n̶t̶s̶ ̶d̶o̶e̶s̶n̶'̶t̶ ̶p̶r̶o̶v̶i̶d̶e̶ ̶a̶ ̶k̶e̶y̶s̶w̶i̶t̶c̶h̶ ̶o̶r̶ ̶a̶r̶t̶i̶c̶u̶l̶a̶t̶i̶o̶n̶ ̶m̶a̶p̶p̶i̶n̶g̶ ̶o̶u̶t̶ ̶o̶f̶ ̶t̶h̶e̶ ̶b̶o̶x̶, I found the most easy way is to use generic C0-based and C6-based Reaticulate banks. Here's what I use:

EDIT: I just discovered they _do _provide default mapping! It's the first time I tried dragging _the whole_ instrument into the articulation section. Sorry!



Code:


//! g="Orchestral Tools/Berlin Orchestra" n="C0 Articulations" off=0
Bank * * OTO - C0 Articulations

//! c=legato i=legato g=1 o=note:24,1
0 Legato

//! c=short i=staccato g=1 o=note:25,1
1 Staccato

//! c=textured i=alt-x g=1 o=note:26,1
2 Articulation A

//! c=textured i=alt-x g=1 o=note:27,1
3 Articulation B

//! c=textured i=alt-x g=1 o=note:28,1
4 Articulation C


//! g="Orchestral Tools/Berlin Orchestra" n="C6 Articulations" off=0
Bank * * OTO - C6 Articulations
//! c=legato i=legato g=1 o=note:96,1
0 Legato

//! c=short i=staccato g=1 o=note:97,1
1 Staccato

//! c=textured i=alt-x g=1 o=note:98,1
2 Articulation A

//! c=textured i=alt-x g=1 o=note:99,1
3 Articulation B

//! c=textured i=alt-x g=1 o=note:100,1
4 Articulation C


Sadly, there's no way to edit articulation map names on the runtime. So you need to remember what you put to which slot.


----------



## liquidlino

redninja said:


> Hi,
> 
> After trying several methods(seperate tracks, CC autom. etc, I avoid KS) for articulation management, I, again returned back to Reaticulate.
> I have 2 questions though.
> 
> 1) I've never managed to clear articulations by middle-clicking. Maybe I'm overlooking something or misunderstand the usage. But when I either click on the midi item or click the articulation on the main panel or open MIDI item in editor and middle click articulation/program tag found in the below lane, nothing happens and it does not remove the articulation. How is that supposed to work? Where am I to middle-click to remove the articulation?
> 
> 2) I've seen several posts for Reaticulate usage in OT's SINE player. But how should I setup my SINE instance? Can I assign CC values to one midi channel for one instrument and use it with Reaticulate or should the articulations of each instrument be loaded in Keyswitches for Reaticulate to work? Or can we have both? Or 1 MIDI channel per articulation of 1 instrument in a SINE instance(i.e. channel 1 for staccato, channel 2 for sustains, channel 3 for marcato etc)..?
> 
> Thank you!


If you double click an instrument name (not an articulation, but the instrument) in the browser, it adds the instrument and all its articulations. Then choose in the drop down menu for that instrument on the right, to keyswitch via cc. It'll set all the artics to cc values. Then it's the cc channel set in the sine options (54 from memory). You can then program a reaticulate bank to match, apply it on the track, and either save in your template or as a track template. That's what I do anyway.


----------



## redninja

Thank you both, @Kabraxis & @liquidlino .

Actually, after playing around a little and remembering what and how I have done with my old custom banks, I easily managed to integrate CC mapped banks to my SINE MIDI tracks. Sorry for being a bit lazy and asking for help so quick. 

I'm also writing CC values next to articulation names in my Reabank file so that in case if I remove an articulation from an Instrument channel or add a new articulation that another instrument does not have, I can easily assign corresponding CC70 value from within SINE Instance so that all instruments(string section) will use the same mapping regardless of which articulations they contain. i.e. Violins I have Pizzicato tremolo while Violas don't. So in case I load all artics. for those two instruments, all CC values will be consistent between each other and I won't have to go back and forth and look what I had written in reabank file. Because SINE assigns different CC70 values per articulation if you insert them in a different order... =/

Now only thing left to do is to add all articulations of all SINE flagship libraries into my reabank file and sort them logically. An hour or two...  






BTW, I'm still clueless about that "middle-click" thing. =/


----------



## tack

redninja said:


> BTW, I'm still clueless about that "middle-click" thing. =/


Middle clicking an articulation in Reaticulate's GUI just unhighlights it from the GUI and nothing else. It's just a UI treatment, a way to tell Reaticulate "the instrument isn't _actually_ using this articulation right now" -- most commonly it's because you've created an articulation assignment on a source MIDI channel you don't normally use and just want to clear it out. (This same action can be done by clicking the "Clear active articulations in UI" button in Reaticulate's track configuration screen.)

When you want to delete an articulation from a MIDI item, you're deleting the program change event. This is REAPER's native UI at that point. A few ways to skin that cat, but the easiest way is to hold the alt-click on the Program Change in the MIDI editor. Or you can alt-click-drag and swipe across the articulation.


----------



## liquidlino

tack said:


> Middle clicking an articulation in Reaticulate's GUI just unhighlights it from the GUI and nothing else. It's just a UI treatment, a way to tell Reaticulate "the instrument isn't _actually_ using this articulation right now" -- most commonly it's because you've created an articulation assignment on a source MIDI channel you don't normally use and just want to clear it out. (This same action can be done by clicking the "Clear active articulations in UI" button in Reaticulate's track configuration screen.)
> 
> When you want to delete an articulation from a MIDI item, you're deleting the program change event. This is REAPER's native UI at that point. A few ways to skin that cat, but the easiest way is to hold the alt-click on the Program Change in the MIDI editor. Or you can alt-click-drag and swipe across the articulation.


Always wondered - how do you create those little mini videos like that?


----------



## tack

liquidlino said:


> Always wondered - how do you create those little mini videos like that?


LICEcap, a handy little utility from Cockos.


----------



## redninja

tack said:


> Middle clicking an articulation in Reaticulate's GUI just unhighlights it from the GUI and nothing else. It's just a UI treatment, a way to tell Reaticulate "the instrument isn't _actually_ using this articulation right now" -- most commonly it's because you've created an articulation assignment on a source MIDI channel you don't normally use and just want to clear it out. (This same action can be done by clicking the "Clear active articulations in UI" button in Reaticulate's track configuration screen.)
> 
> When you want to delete an articulation from a MIDI item, you're deleting the program change event. This is REAPER's native UI at that point. A few ways to skin that cat, but the easiest way is to hold the alt-click on the Program Change in the MIDI editor. Or you can alt-click-drag and swipe across the articulation.


Ahh thanks for the clarification! I misunderstood that function. 

BTW, I'm glad that we have a tool like this and appreciate your efforts much. I tried several other ways just to make sure which of them is the most suitable for my workflow and came to conclusion that none matches Reaticulate. I'll donate(to the organization you mentioned) in the upcoming couple of days when I'm able to do so and will let you know it. 🍻


----------



## liquidlino

VSL Free Harp Glissandos ReaBank


----------



## Kabraxis

I have updated my Expression-2-Reaticulate script to support Apple Logic .plist Articulation Maps. It's wonky right now but I thought someone might want to experiment with it.

https://github.com/Kabraxist/Expression-2-Reaticulate/

Cheers,


----------



## lettucehat

Kabraxis said:


> I have updated my Expression-2-Reaticulate script to support Apple Logic .plist Articulation Maps. It's wonky right now but I thought someone might want to experiment with it.
> 
> https://github.com/Kabraxist/Expression-2-Reaticulate/
> 
> Cheers,


Was wondering about whether someone had done this already, thanks!

By the way, totally unrelated question for anyone reading, but as I'm new to Reaticulate - since we're using program changes, is layering articulations or having simultaneously played notes have different articulations pretty much out of the question, unless using multiple channels + specific articulations layering the arts I want or something? Sorry if that didn't make any sense.


----------



## tack

0.5.9 is a hotfix for the 0.5 series of releases.

See also the release notes for 0.5.

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


*Upgrading*
If you've installed using ReaPack, you can upgrade to this release by following the updating instructions.


Here are the changes since 0.5.7 (includes fixes in 0.5.8 which were not announced here):

*Bug Fixes*

 Fixed double clicking not reliably working on touch screens (caused by overly tight mouse drift detection)
 Fixed visual glitching (such as disappearing text) that could occur at particular zoom levels and window sizes
 Fixed status bar message not always properly updating while mousing through the articulation list
 Fixed a crash that could sometimes occur when changing tracks in the TCP while the MIDI editor was open


----------



## tack

lettucehat said:


> since we're using program changes, is layering articulations or having simultaneously played notes have different articulations pretty much out of the question, unless using multiple channels + specific articulations layering the arts I want or something?


Your intuition is exactly right. Although you can use _either_ multiple source MIDI channels _or_ custom articulations with the desired layering, you don't need both.

This is a limitation of the program-based approach, but even if Reaticulate used REAPER's notation (even assuming for the sake of discussion that its notation articulations were actually fit for purpose), there's still the complication in that not every library supports layering in their multi-articulation patches. (Athough a multitimbral approach would certainly work universally.)


----------



## Russell Anderson

Is there any option to have Reaticulate auto-minimize/undock and close itself when selecting tracks without Reaticulate on them?

If not, a perfectly reasonable solution is probably to include it in my midi editor toggle cycle action. In fact I'm just going to go do that now! *Edit: *Looks like I can't figure out how to toggle only the right-side docker, where I have Reaticulate, and I can't find an action to close Reaticulate, but I can at least use Reaticulate Main to open it.

Any suggestions on how to close Reaticulate's window without closing all dockers, or how to re-open only the left-side docker?

Here's continued hoping that Reaticulate becomes an official feature!


----------



## tack

Russell Anderson said:


> Is there any option to have Reaticulate auto-minimize/undock and close itself when selecting tracks without Reaticulate on them?


Afraid not, sorry. I have some major design changes in store for the next release that will make something like this easier, but for now you'll have to open/close it yourself.



Russell Anderson said:


> Looks like I can't figure out how to toggle only the right-side docker, where I have Reaticulate, and I can't find an action to close Reaticulate, but I can at least use Reaticulate Main to open it.


Just re-run Reaticulate_Main. REAPER will tell you the script is already running, ask if you want to terminate it instead, and in that popup you'll have the option to have REAPER remember this decision. So if you bind Reaticulate_Main to a single key, you can use it to toggle Reaticulate on and off. This is what I do.



Russell Anderson said:


> Any suggestions on how to close Reaticulate's window without closing all dockers, or how to re-open only the left-side docker?


The above should work for this. Reaticulate remembers where it was docked (or, if undocked, the window's position and size) on the next invocation.


----------



## Russell Anderson

tack said:


> Afraid not, sorry. I have some major design changes in store for the next release that will make something like this easier, but for now you'll have to open/close it yourself.
> 
> 
> Just re-run Reaticulate_Main. REAPER will tell you the script is already running, ask if you want to terminate it instead, and in that popup you'll have the option to have REAPER remember this decision. So if you bind Reaticulate_Main to a single key, you can use it to toggle Reaticulate on and off. This is what I do.
> 
> 
> The above should work for this. Reaticulate remembers where it was docked (or, if undocked, the window's position and size) on the next invocation.


Perfect, everything I needed! I appreciate it!


----------



## tack

0.5.10 is a hotfix for the 0.5 series of releases.

See also the release notes for 0.5.

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


*Upgrading*
If you've installed using ReaPack, you can upgrade to this release by following the updating instructions.


Here are the changes since 0.5.9:

*Bug Fixes*

 Fixed "CC feedback is enabled but BUS Translator FX not found" error that was logged to console as of REAPER 6.70 when Reaticulate feedback is enabled
 Fixed numeric articulation names (e.g. "1-15-42") when the user deletes the Reaticulate-tmp<n>.reabank file in Reaper's Data directory


----------



## Kabraxis

Hey @tack, do you have plans to update the bank picker for the next major version? Dropdown doesn't play well when you have hundreds of maps. An alternative view with a filter box would be lovely.


----------



## tack

Kabraxis said:


> Hey @tack, do you have plans to update the bank picker for the next major version? Dropdown doesn't play well when you have hundreds of maps. An alternative view with a filter box would be lovely.


Yep that's in the plan. I began work on the ComboBox widget needed for this some time ago (although it's currently incomplete). Idea is to support fuzzy-match filtering like the articulation list. So you could type "scsv1" to get to Spitfire Chamber Strings Violins 1, for example.

If you think the current native picker is bad, you should see it on Linux. Whatever widget toolkit REAPER is using on Linux makes it completely unusable unless you're a pro gamer with crazy precise mouse movement.


----------



## TomislavEP

Kind thanks to the developer for all the hard work and effort on this plugin. When composing, I tend to use separate tracks for everything and rarely go for keyswitches. However, I'm hoping to get more into orchestral arrangements in due time, so Reaticulate will be a worthy addition to my workflow in REAPER.


----------



## JimDiGritz

Hi all, anyone else have an issue starting Reaticulate after the update to 0.5.10?

I'm running the Reaticulate_Start.lua and nothing happens... no error messages or anything...

I may try reinstalling but want to backup my edits to the reabank - where can I find the Reabank file?

Thanks!

**EDIT Fixed it.. for some reason I was trying to run Reaticulate_Start not Reaticulate_Main....!!


----------



## tack

JimDiGritz said:


> I'm running the Reaticulate_Start.lua and nothing happens... no error messages or anything...


The fact that nothing happens and you're not getting an error actually suggests Reaticulate is already running. Perhaps you've moved the window off screen?

What happens if you use the Reaticulate_Main instead? This is actually the action you should be using anyway to open Reaticulate (which you can also bind to a key to open/close Reaticulate's window).



JimDiGritz said:


> I may try reinstalling but want to backup my edits to the reabank - where can I find the Reabank file?


It's Reaticulate.reabank in the Data directory within the REAPER resources folder. Uninstalling Reaticulate won't affect this file.


----------



## robgb

Hope your holidays are going well @tack. When I create an FX Chain that includes Reaticulate (with bank loaded) and then later add that chain to a track, Reaticulate is present, but the Bank has disappeared and must be reloaded.

Is there a way to correct this?

I know I can create a track template instead, but I'm experimenting with different methods of loading tracks.


----------



## tack

robgb said:


> When I create an FX Chain that includes Reaticulate (with bank loaded) and then later add that chain to a track, Reaticulate is present, but the Bank has disappeared and must be reloaded.
> 
> Is there a way to correct this?


Sorry Rob, unfortunately the bank assignment is stored in the REAPER track metadata, not in the Reaticulate JSFX. The JSFX is programmed with the articulations and required output events, but it's actually ignorant about the bank mapping. So what you're looking to do isn't possible with Reaticulate.


----------



## robgb

tack said:


> Sorry Rob, unfortunately the bank assignment is stored in the REAPER track metadata, not in the Reaticulate JSFX. The JSFX is programmed with the articulations and required output events, but it's actually ignorant about the bank mapping. So what you're looking to do isn't possible with Reaticulate.


I suspected as much. Thanks.


----------

