Thanks for providing this script. As a Cubase user contemplating the switch to Reaper, this is a great help. I never had Reaper down as a viable alternative to Cubase, but I am fast reappraising that notion. So many user customizations is great.
Thanks again, Jason!
I don't have 88 keys keyboard and it was always clumsy
to work with XSample library play instruments using key-switches.
Not anymore! I continue working on articulations for those!
Here are 23 out of 48 articulations for
XSample Solo strings score instruments.
(If somebody's interested, let me know and I'll expand it
As I own XSample, these are very handy. Thanks for sharing...appreciated.
Thanks for providing this script. As a Cubase user contemplating the switch to Reaper, this is a great help. I never had Reaper down as a viable alternative to Cubase, but I am fast reappraising that notion. So many user customizations is great.
No no, Cubase is better, because Hans Zimmer is using it, and Klaus Schulze.
tack.... as said in my email to you... No, I never did get to the 'root' cause of why it would not install properly via reapack on my most used portable install of reaper...
being a bit lazy I just went for getting it to work in the way you have already described...
I suppose it could be more a problem on a Mac since it is not as easy to do multiple 'portable' installs there... [but it can be done]...
Perhaps the most expedient solution would be to upload a zip file of the script to the stash with instructions about where to put the files, etc.???
github is sometimes quite confusing for me...
Thanks for providing this script. As a Cubase user contemplating the switch to Reaper, this is a great help. I never had Reaper down as a viable alternative to Cubase, but I am fast reappraising that notion. So many user customizations is great.
Attached is my final version for Xsample instruments:
strings (play and score)
woodwinds (play and score)
@tack : in your video you use berlin WoodWinds, but in the factory preset there is no Berlin Woddwinds, could it be possible to have it ?
The one in the video was an example of a Kontakt multi, and there's no really stock way of configuring that for BWW. People can decide to put whatever single articulations they want on each channel. So it didn't seem to fit very well with the factory banks.
Perhaps we could include factory banks for the the multi-articulation capsule patches that come with BWW? Does anyone use those as-is without significant configuration, though? Unlike the Spitfire combination palettes, the Berlin multi-articulation patches seem like they intend to be significantly customized.
Another user has asked for the ability to be able to step-input articulation activations from the arrange view. When this mode is enabled (and it would certainly default to off), when an articulation is activated it would insert the program change in the MIDI item(s) under the edit cursor for all armed tracks.
I can see the use-case for this, but I feel like it might violate the Principle of Least Astonishment.
For me, the best way is always KIS ( Keep It Simple). In Cubase, Expr Maps are only in the Piano Roll. It's where you need them..
On another issue, any problems found with chasing the art switches? Still a problem in CB and never really addressed. Thanks
On another issue, any problems found with chasing the art switches? Still a problem in CB and never really addressed.
Reaper will chase program changes on transport play (or on scrub preview MIDI in the piano roll), and since program changes are the basis of articulations with Reaticulate, they'll be chased.
The main limitation is that you would expect each articulation in each group to be chased, however groups are an organization layer within Reaticulate that Reaper doesn't understand. Consequently Reaper can only chase the last program change just before the play head, regardless of which group it might be in.
Hm, it's not a bad idea actually to be able to insert it in the arrangement view. To circumvent the "Principle of Least Astonishment" it would maybe sense to make it an option, for advanced users.
Reaper will chase program changes on transport play (or on scrub preview MIDI in the piano roll), and since program changes are the basis of articulations with Reaticulate, they'll be chased.
I just finished putting together a bank for OT Berlin Orchestra Inspire. It covers all of the multi articulation patches and I also included an on/off con sordino for the strings.
enjoy
**edit - just updated the con sordino switch's to a second group (that to Tack for the tip!)
//! 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-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
I'm working on a bank definition for Soundiron's Voices of Rapture, and I noticed that you said to try and include everything the VST can do. In these instruments, there are analog dials, ranging from 0% - 100%, for things like Legato and Vibrato. Is there any way to include those in the bank file?
I noticed that you said to try and include everything the VST can do. In these instruments, there are analog dials, ranging from 0% - 100%, for things like Legato and Vibrato. Is there any way to include those in the bank file?
No, Reaticulate doesn't provide a means of tracking CCs in the GUI[*]. So you'd create programs for things that have key switches, for example, but skip CCs.
[*] At least not yet anyway. Theoretically it's possible. The Reaticulate JSFX does keep track of CCs, and I've already incorporated my Sync CC to Control Surface hack in my dev build. But for now, the banks don't include CCs.
Thank you very much for this nice tool!
I have a question though.
I have started building banks for Metropolis Ark 1.
So far, I'm successful with implementing some Brass articulations and tested them.
I'd like to control the articulation changes in Track envelopes rather than MIDI lanes.
When I click the envelope icon on the MIDI track with Reaticulate, the parameters look abstract under JS:Reaticulate. Which one should I be using or arming in the envelope in order to make patch/articulation changes thoughout the track envelope? Similar to square points with Mute/Unmute envelopes.
Sorry if this is a dumb question because I'm really not good with MIDI programming in overall and not sure if what I'm asking is achieveable at all.
I'd like to control the articulation changes in Track envelopes rather than MIDI lanes.
Not really very easily achieved I'm afraid. The Reaticulate JSFX isn't intended to be controlled through automation.
You could theoretically insert ReaControlMIDI before Reaticulate and enable it for Bank/Program select on the channel of your choice. Then you could automate ReaControlMIDI by adding the Program number as an envelope. However this would be very cumbersome to use, because the automation point values don't translate 1:1 with program numbers, and nor is it compatible with any of Reaticulates activate program actions.
I'm afraid I never envisioned using Reaticulate this way, so its most basic assumptions are rather incompatible with envelopes.
For things like "Legato On/Legato Off", I put them in their own group. They seem to work for the most part, except that by default neither On or Off is selected. Is there a way to either specify a default, or have it automatically sync to whatever is chosen by default in the VST?
Not really very easily achieved I'm afraid. The Reaticulate JSFX isn't intended to be controlled through automation.
You could theoretically insert ReaControlMIDI before Reaticulate and enable it for Bank/Program select on the channel of your choice. Then you could automate ReaControlMIDI by adding the Program number as an envelope. However this would be very cumbersome to use, because the automation point values don't translate 1:1 with program numbers, and nor is it compatible with any of Reaticulates activate program actions.
I'm afraid I never envisioned using Reaticulate this way, so its most basic assumptions are rather incompatible with envelopes.
Hmm, just like I thought so with the point values.
I've used reacontrolMIDI before for simple needs and it worked fine while automating some MIDI values like expression, pan etc.
I've tried inserting ReacontrolMIDI but couldn't figure out how to make it work in conjunction with Reaticulate.
Ok then, I'll go with MIDI lanes for the time being. At least I'm not enforced to use some dumb keyswitch notes in piano roll that makes it complete mess, which is a nice thing!
This is not a priority and I don't know if it's too much to ask but if you consider integrating Reaticulate into automation envelopes some time in the future, that would be awesome.
A couple more quesitons,
Quote:
Bank 32 1 MPArk1 - Koenisgberger Cimbassi a3
a) Is this line space and case sensitive?
b) I randomly picked up 32-1 interval for Bank MSB & LSB. What is the importance of this and how should I determine what numbers will go there? It isn't quite clear to me despite I watched the instructional video and looked through the documentation on the web.
c) When I first tried implementing articulations for my own library it didn't accept it and despite saving the reabank and refreshing the Reaticulate, the articulations didn't appear. Then, I changed a couple of things all at once and it appeared there magically. Do you know what causes this? Can it be because I tried to use "CC32" rather than "note" attribute with that particular sample library or does it have something to do with that MSB & LSB values? It was 63-0 first and then I changed it to 32-1.
Quote:
//! c=long i=note-whole o=note:73
73 sustain
d) Is the attribute to be used determined by the nature of the sample library? i.e. How did you figure out the correct CC32 values to be used with Spitfire? I couldn't make it work with Metropolis Ark 1 which uses Capsule Engine so I switched to "note" attribute. How do you find out which articulation uses which CC32 value? Or might CC32 be not present at all with some libraries?
Also, if I go back to clause a), I first implemented it like this,
Quote:
Bank 32 1 Metropolis Ark 1 - Koenisgberger Cimbassi a3
and it didn't work and the bank hasn't appeared. Then I changed it to this,
Quote:
Bank 32 1 MPArk1 - Koenisgberger Cimbassi a3
Do the extra spaces in between Bank name cause some trouble?
I would appreciate it if you can elaborate these so I won't be playing around with this plugin randomly and make sure everything goes fine.
Thank you for quick response!
I'll get back to work and create some more custom banks.
They seem to work for the most part, except that by default neither On or Off is selected. Is there a way to either specify a default, or have it automatically sync to whatever is chosen by default in the VST?
There is no way to have it sync backwards from the VSTi, no. It'd be possible to include a new default flag which you can set on a given program, but in practice this is only really an issue on the initial configuration of the track. Once the track is configured (in your project template, or even a track template) then the last selected program will be remembered.
This is not a priority and I don't know if it's too much to ask but if you consider integrating Reaticulate into automation envelopes some time in the future, that would be awesome.
I think I'll wait to see if there's any further feedback along these lines. It'd require a pretty significant overhaul, from what I can tell.
Quote:
Originally Posted by SymboliC
a) Is this line space and case sensitive?
Bank and program names are not case sensitive. By convention in the factory banks, the bank name is title cased, using human-readable abbreviations for the library name (e.g. SCS for Spitfire Chamber Strings) and the full name for the patch the bank describes. Meanwhile, program names are lower case, where some common terms are abbreviated if necessary to reduce length.
For your own custom banks you're free to use whatever you want. The names can be changed after-the-fact without breaking anything.
In terms of spaces, the program and bank names can have arbitrarily many spaces.
Quote:
Originally Posted by SymboliC
b) I randomly picked up 32-1 interval for Bank MSB & LSB. What is the importance of this and how should I determine what numbers will go there? It isn't quite clear to me despite I watched the instructional video and looked through the documentation on the web.
At some point Reaticulate will come with a GUI to create and manage banks, and it will choose an unused bank number for automatically. But absent that, yes, I can see how it'd be confusing.
The only requirement is that the two numbers (MSB/LSB combination) are unique for your Reaper installation. MSB 64 and above are reserved for factory banks and are allocated by me. I'd suggest avoiding value 0 for your custom bank and program numbers, just to side step possible corner cases. So, for your custom banks, you could start at 1-1 if you like, and work upward.
Quote:
Originally Posted by SymboliC
c) When I first tried implementing articulations for my own library it didn't accept it and despite saving the reabank and refreshing the Reaticulate, the articulations didn't appear. Then, I changed a couple of things all at once and it appeared there magically. Do you know what causes this? Can it be because I tried to use "CC32" rather than "note" attribute with that particular sample library or does it have something to do with that MSB & LSB values? It was 63-0 first and then I changed it to 32-1.
Yes, I'm guessing the use of LSB=0 has hit one of those aforementioned corner cases.
I'll take a look at that. By specification it should be allowed, but I'm not surprised if there's a bug there. Meanwhile just avoid 0 values for bank and program numbers.
Quote:
Originally Posted by SymboliC
d) Is the attribute to be used determined by the nature of the sample library? i.e. How did you figure out the correct CC32 values to be used with Spitfire? I couldn't make it work with Metropolis Ark 1 which uses Capsule Engine so I switched to "note" attribute. How do you find out which articulation uses which CC32 value? Or might CC32 be not present at all with some libraries?
You do need to configure each program to use the output events that the underlying patch expects to receive to trigger the articulation. If your patch uses regular notes, then the programs should emit notes.
CC32 is definitely a Spitfire-ism, and even then not even out of the box (it requires setting the patch to a mode that Spitfire calls UACC). Once set to UACC, the Spitfire patch tells me what CC32 value to use to trigger the articulation. It's also described by the UACC spec (although even Spitfire themselves variously disregard their own spec).
Quote:
Originally Posted by SymboliC
Also, if I go back to clause a), I first implemented it like this, [...] and it didn't work and the bank hasn't appeared. Then I changed it to this, [...] Do the extra spaces in between Bank name cause some trouble?
Either of these should work. Are you sure the problem wasn't related to using 63-0 and you misremembered? Can you try it again, changing the bank name back to "Metropolis Ark 1 - Koenisgberger Cimbassi a3" and confirm that it suddenly breaks when you do that? FWIW, I can't reproduce it here.
.......
The only requirement is that the two numbers (MSB/LSB combination) are unique for your Reaper installation. MSB 64 and above are reserved for factory banks and are allocated by me. I'd suggest avoiding value 0 for your custom bank and program numbers, just to side step possible corner cases. So, for your custom banks, you could start at 1-1 if you like, and work upward.
Yes, I'm guessing the use of LSB=0 has hit one of those aforementioned corner cases.
Either of these should work. Are you sure the problem wasn't related to using 63-0 and you misremembered? Can you try it again, changing the bank name back to "Metropolis Ark 1 - Koenisgberger Cimbassi a3" and confirm that it suddenly breaks when you do that? FWIW, I can't reproduce it here.
Cheers!
Just did a quick test, as you've mentioned, it has nothing to do with Bank names. I tried an abbrev. like "Metropolis Ark 1" with spaces and it worked.
Then, I changed the MSB/LSB to 31-0 instead of 32-1, BUM! It disappeared and then came back when I revert that. So, as you've also suggested, "0" as a LSB value caused it to stop working. I'll keep this in mind. It's always better to change things one at a time to spot the errors.
Still having a little confusion with MSB/LSB though.
One last question,
can I use 32-1 for another sample library or another instrument? Would this cause conflicts? Or, should I use 32-2 as values for another instrument in the same sample library?
can I use 32-1 for another sample library or another instrument? Would this cause conflicts? Or, should I use 32-2 as values for another instrument in the same sample library?
Bank numbers need to be unique for your installation. So you'd need to use 32-2 for the second instrument, otherwise it would indeed conflict with the first.
Bank numbers need to be unique for your installation. So you'd need to use 32-2 for the second instrument, otherwise it would indeed conflict with the first.
So, whatif I have 150 instruments? There won't be room left for new instruments then. Is it where channels from 1-16 come into play?
I'm pretty much missing something.
Or is it the permutation/combination of MSB/LSB's? I mean can I use just 5-4 as MSB/LSB there for an instrument bank? If this is the case, then it won't be a problem.
Thanks for being patient and kind enough to reply all my questions!
Any chance of having more than 4 groups? I've come across some instruments that need up to 6, but when making user banks that are multis, the required number could be 3-4 times that.
Just a quick note about my question regarding the integration of Reaticulate into automation envelopes.
GOOD NEWS,
-I was able to make Reaticulate work together with ReaControlMIDI.
-Point values are named after articulation name or key number if empty.
BAD NEWS,
-You have to zoom incredibly to make changes.
-Does not add to productivity that much.
I wish we were able to manage articulation in the main TCP arrange window. While working with tons of instruments&orchestration where I need to see the big picture, I find it distractive to dive in and out of MIDI Editor. But this is not related to the nature of Reaticulate. More on the Reaper and overall DAW functionality side.
I even draw expressions on automation envelopes rather than MIDI lanes.
I have a question about how to best do this. When I have multiple Kontakt instruments that span the full range of articulations for a specific instrument, I've been combining them all into a single bank. For example, a choir library might have one instrument for Sustain, one for Legato, one for Marcato, and one for Staccato. Each of these could have several syllables or vowels within them. My approach of combining all of them has been working fine so far, until I came across one that results in more than 128 combined articulations, which is the maximum for a bank. What is the best way to handle this? If I do a different bank for each instrument, it doesn't switch all the following notes to the new MIDI channel. Any suggestions?
What is the best way to handle this? If I do a different bank for each instrument, it doesn't switch all the following notes to the new MIDI channel. Any suggestions?
Whether consolidated in a single large bank, or split out into separate banks (as with the factory library, which tends to have one bank per patch), ultimately you can't duplicate program numbers on a given channel lest you have a conflict (e.g. if you have program 42 listed multiple times and you activate program 42, it can't know which articulation you intend to activate).
Apart from splitting out into multiple tracks, the only way around this problem is to break things out into different source MIDI channels. Then in the track configuration page, you'd use a specific source channel instead of omni. This means you can have up to 16*128=2048 different programs on a given track -- 128 per MIDI channel -- but it comes with the added complexity of having to juggle MIDI channels as you input MIDI data.
If you have any other ideas on how to overcome that limitation, I'd be curious.
Apart from splitting out into multiple tracks, the only way around this problem is to break things out into different source MIDI channels. Then in the track configuration page, you'd use a specific source channel instead of omni. This means you can have up to 16*128=2048 different programs on a given track -- 128 per MIDI channel -- but it comes with the added complexity of having to juggle MIDI channels as you input MIDI data.
If you have any other ideas on how to overcome that limitation, I'd be curious.
I tried this idea, and although it works, it's kind of a pain to manage MIDI channels while adding notes. On a whim, I just tried putting in program numbers past 127 and for some reason, it seemed to work. I have one that goes from 0 to 136, and it looks like it's working. Am I missing something? Because I didn't expect that to work.