What's new

Reaticulate - articulation management for REAPER - 0.5.13 now available

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.
 
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)
 
Is it possible to make an appearance of banks contextual?
Not possible today.

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

Attachments

  • WARPIV Pro woodwinds for reaticulate.zip
    1.7 KB · Views: 3
Last edited:
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?


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.
 
Can you confirm that this description aligns to what you had in mind?
Yes.



Hurray!
This is a very big step forward, big thanks!



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
 

Attachments

  • Screen Shot 2019-10-07 at 00.49.45.JPEG
    Screen Shot 2019-10-07 at 00.49.45.JPEG
    119.8 KB · Views: 15
  • 1570399348217.jpeg
    1570399348217.jpeg
    91.8 KB · Views: 17
  • 1570399348730.jpeg
    1570399348730.jpeg
    40.5 KB · Views: 17
Last edited:
Can you confirm that this description aligns to what you had in mind?
Yes
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:
  1. Clamp to min/max
  2. Drop event if outside min/max
  3. Interpolate within min/max
 
Last edited:
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.
 

Attachments

  • Velocity limitation in Expression Map.jpg
    Velocity limitation in Expression Map.jpg
    71.5 KB · Views: 7
Last edited:
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)
 
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.
 
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
 

Attachments

  • Screen Shot 2019-10-15 at 03.07.00.JPEG
    Screen Shot 2019-10-15 at 03.07.00.JPEG
    38.6 KB · Views: 10
a color bug: I don't see a description of KS action at the bottom of the window
Thanks, fixing. (And fixed.)

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?

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.
 
Last edited:
@Vadium in the meantime you can insert this line here (between int2hex() and color2luma()) on your local system:

Code:
bg = '#000000'
 
A strange thing: If I open projects with simple routing like this:

//! c=short o=@3
6 Staccato long RR
//! c=short o=@6
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.
 
A strange thing: If I open projects with simple routing like this:

//! c=short o=@3
6 Staccato long RR
//! c=short o=@6
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. :)
 
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
 
Last edited:
Top Bottom