What's new

CSS (Cinematic Studios) Control Panel - CSS/CSSS/CSB/CSW legato delay solution + other features (1.8, now with Winds!)

Don't forget not to use the script on the first note of a line, i belive Alex also states this in a video. What i love as well is the handy delay offset script which is great in the midi editor also for different libraries with timing discrepences.
Yep, the Legato scripting doesn't change the first note I noticed, but the shorts script does (makes sense).
 
Ok, just tested the shorts auto setting, and couple of issues straght away:

1. The script doesn't move the reaticulation keyswitches as well, only the notes - I can probably fix that I'll have a look in the code and see what to do
2. The script moves the first note backwards in time - if there's no space in the media item to do this, it can't move it, and then when playback stops, it moves everything back again, but the first note wasn't originally moved backwards, but is moved forwards, meaning it ends up now permanently pushed forwards in the midi (had to manually correct). Not a big deal, just have to remember to always have a bar of space ahead of the first note for CSS media items.
This all makes sense but i don't use Reaticulate so these scripts work great just as they are. If you are going to add anymore possibillities to this script to make this even easier drop it in this group or even better create another thread for Reaper users. If i remember correctly there was a script for Logic called Thanos that was doing the rounds here so having a Reaper Thread for users would aslo be great.
 
This all makes sense but i don't use Reaticulate so these scripts work great just as they are. If you are going to add anymore possibillities to this script to make this even easier drop it in this group or even better create another thread for Reaper users. If i remember correctly there was a script for Logic called Thanos that was doing the rounds here so having a Reaper Thread for users would aslo be great.
Holy hell, just realised, looking at the code, that cc isn't touched at all - so even for longs, the cc values are left where they were - this is fundamentally broken! Fixing now, new script inbound once I've tested it fully....

EDIT: Nope, I'm wrong, don't want to move cc at all for legato, only for non-legato.
 
Last edited:
Holy hell, just realised, looking at the code, that cc isn't touched at all - so even for longs, the cc values are left where they were - this is fundamentally broken! Fixing now, new script inbound once I've tested it fully....

EDIT: Nope, I'm wrong, don't want to move cc at all for legato, only for non-legato.
Right, updated scripts zip attached. Provided as-is no warranty, not liable for your losses etc etc, usual disclaimer. I've tested on my test file, and all looks well.

If someone could test this too and let me know if you see anything unexpected, that'd be great. So basically:

1. Use a Track for Legato
2. Use a Track for everything else (including sustains, shorts, etc - everything non-legato)
3. Do or don't use reaticulate, your choice.
4. The updated Auto CSS script (I haven't touched the other scripts, I won't be using them) now moves all the CC data back and forth along with the notes in the non-legato track. Ideal, so now I can move around between artics in the non-legato track

I think I am still going to code the JSFX at some point for all the reasons I said above, it'll be much more elegant than this solution. But learnt a lot from this!
 

Attachments

  • CRT - Liquidlino Shorts Update.zip
    245.9 KB · Views: 13
Right, updated scripts zip attached. Provided as-is no warranty, not liable for your losses etc etc, usual disclaimer. I've tested on my test file, and all looks well.

If someone could test this too and let me know if you see anything unexpected, that'd be great. So basically:

1. Use a Track for Legato
2. Use a Track for everything else (including sustains, shorts, etc - everything non-legato)
3. Do or don't use reaticulate, your choice.
4. The updated Auto CSS script (I haven't touched the other scripts, I won't be using them) now moves all the CC data back and forth along with the notes in the non-legato track. Ideal, so now I can move around between artics in the non-legato track

I think I am still going to code the JSFX at some point for all the reasons I said above, it'll be much more elegant than this solution. But learnt a lot from this!
Although, having done this, I've answered my own question - there's no point in using this script for non-legato as all it does it put a 60ms pre-delay on everything. Might as well just use the track pre-delay and then the minor issue of the first note moving is no longer an issue. So I'll just setup my template to use the CRT script for legato tracks, and other tracks I'll put a track pre-delay on.
 
Right, updated scripts zip attached. Provided as-is no warranty, not liable for your losses etc etc, usual disclaimer. I've tested on my test file, and all looks well.

If someone could test this too and let me know if you see anything unexpected, that'd be great. So basically:

1. Use a Track for Legato
2. Use a Track for everything else (including sustains, shorts, etc - everything non-legato)
3. Do or don't use reaticulate, your choice.
4. The updated Auto CSS script (I haven't touched the other scripts, I won't be using them) now moves all the CC data back and forth along with the notes in the non-legato track. Ideal, so now I can move around between artics in the non-legato track

I think I am still going to code the JSFX at some point for all the reasons I said above, it'll be much more elegant than this solution. But learnt a lot from this!
Great thank you, how can i test if the CC information also moves with the notes? When i run the script i don't see this, so it sounds no different than before.
 
Great thank you, how can i test if the CC information also moves with the notes? When i run the script i don't see this, so it sounds no different than before.
You should see the cc for non-legato track move as well - I do on my machine. Maybe restart the CSS script - you have to terminate it and restart it for changes to take effect. Or restart Reaper.
 
Although, having done this, I've answered my own question - there's no point in using this script for non-legato as all it does it put a 60ms pre-delay on everything. Might as well just use the track pre-delay and then the minor issue of the first note moving is no longer an issue. So I'll just setup my template to use the CRT script for legato tracks, and other tracks I'll put a track pre-delay on.
I only ever used the legato script and the delay offset script within the midi editor when needed. The rest i have always used Reapers Track delay offset.
 
I only ever used the legato script and the delay offset script within the midi editor when needed. The rest i have always used Reapers Track delay offset.
Ahh - I'm using the Auto CSS script, that runs in the background and moves the note starts on playback and puts them back when playback stops. Means I don't have to worry about what notes have already been delay compensated vs not already etc. I only updated the auto scipt, didn't touch the manual apply scripts.
 
You should see the cc for non-legato track move as well - I do on my machine. Maybe restart the CSS script - you have to terminate it and restart it for changes to take effect. Or restart Reaper.

You should see the cc for non-legato track move as well - I do on my machine. Maybe restart the CSS script - you have to terminate it and restart it for changes to take effect. Or restart Reaper.
What do you mean by non legato CC, i just ran it and looked at CC1 information but no movment.
 
What do you mean by non legato CC, i just ran it and looked at CC1 information but no movment.
Yep - I didn't amend the manually run scripts, only the auto script.

Just started using the auto CSS CVT script in an actual piece and immediately run into another downside of this approach - which is that if I'm editing notes whilst the playback is going - when it finishes, it pushes any new notes back as if they'd been delay compensated already. This is really an inferior solution. JSFX will be much better when I do it. That'll be a learning curve - never coded JSFX, but I've coded Java for 25 years, so should be easy enough I hope.
 
Yep - I didn't amend the manually run scripts, only the auto script.

Just started using the auto CSS CVT script in an actual piece and immediately run into another downside of this approach - which is that if I'm editing notes whilst the playback is going - when it finishes, it pushes any new notes back as if they'd been delay compensated already. This is really an inferior solution. JSFX will be much better when I do it. That'll be a learning curve - never coded JSFX, but I've coded Java for 25 years, so should be easy enough I hope.
Okay I look forward to this solution. The Cinematic series is amazing but clunky as hell to work with, Do you have CCW and CCB? If so could you include these in a JSFX script?
 
Okay I look forward to this solution. The Cinematic series is amazing but clunky as hell to work with, Do you have CCW and CCB? If so could you include these in a JSFX script?
I don't yet - but I understand that they all have matching delays to CSS by and large. Hey, if I code it maybe Alex will give me a free NFR copy of each of the remaining libraries I haven't bought yet to develop and test the JSFX against them :). I see Alex is Sydney based, and Caleb is Newcastle (just north of Sydney), and I'm Sydney based too...
 
I don't yet - but I understand that they all have matching delays to CSS by and large. Hey, if I code it maybe Alex will give me a free NFR copy of each of the remaining libraries I haven't bought yet to develop and test the JSFX against them :). I see Alex is Sydney based, and Caleb is Newcastle (just north of Sydney), and I'm Sydney based toWhy not, chance it
Why not, nobody has really come up with a real solution, if you can i see no reason he could say no:cool:
 
Behold and I shall bestow unto thee, a JSFX that rules the untamed beast that is CSS Legato, certainly within Reaper. (users of lesser DAWs can just watch and be saddened beyond comprehension). Attached.

Instructions:

Drop the file from the attached zip (not the zip itself) into your %APPDATA%\Reaper\Effects folder
Load/Restart Reaper
Add the JSFX "CSS Legato Advanced Lookahead" to the offending CSS track, and move it so it's before Kontakt:
1642307714576.png

Set the CSS track to -333ms media playback offset:
1642307740989.png

Make sure the CSS track is set to Legato Advanced.

Just write your notes on the grid, without a care in the world for legato latency.

Enjoy life again, and stop regretting buying a very expensive library.

Let me know if you find any bugs or weird behaviours.

EDIT: I should add - this is a solution that only works for having a dedicated track for the legato patches. Personally, I think have another track for all the other articulations, set to -60ms, and use reaticulation on that track to switch between artics. One thing I've noticed already is that if I put say a four bar loop on, then the first pass through the loop is all bang on the beat, but the second and subsequent passes, it's like the track pre-delay is removed entirely, and everything is late.

EDIT2: Taking the script off for now, it's not quite ready, found some issues with CC etc, so I'll fix that up, refactor, improve etc.
 
Last edited:
Behold and I shall bestow unto thee, a JSFX that rules the untamed beast that is CSS Legato, certainly within Reaper. (users of lesser DAWs can just watch and be saddened beyond comprehension). Attached.

Instructions:

Drop the file from the attached zip (not the zip itself) into your %APPDATA%\Reaper\Effects folder
Load/Restart Reaper
Add the JSFX "CSS Legato Advanced Lookahead" to the offending CSS track, and move it so it's before Kontakt:
1642307714576.png

Set the CSS track to -333ms media playback offset:
1642307740989.png

Make sure the CSS track is set to Legato Advanced.

Just write your notes on the grid, without a care in the world for legato latency.

Enjoy life again, and stop regretting buying a very expensive library.

Let me know if you find any bugs or weird behaviours.
And not one to hang around, here's the full set of legato. I'm completely unable to test CSB and CSW, but should all be fine, I went off the published delay ms

Set your predelays to the max legato for each, so

CSS= -333 (should work fine on CSSS too - they share the same delays)
CSW = -220
CSB Bones, Horns, Tubbs = -230
CSB Trumpets = -180

This solution provides:

1. Variable automated delays for different legato speeds
2. Ensures the note-on for new notes is not delayed (see question at end of post)
3. Ensures the note-offs aren't delayed at all (they happen exactly when the midi note-off occurs)

One thing that I wouldn't mind some feedback on - I've set the pre-delay for new notes to effectively be zero. But I don't think that's right at all... the doc doesn't say what the predelay for legato new notes should be, so I'm open to suggestions...? I can update and re-issue if someone has a definitive number we should be using.

EDIT2: Taking the script off for now, it's not quite ready, found some issues with CC etc, so I'll fix that up, refactor, improve etc.
 
Last edited:
And not one to hang around, here's the full set of legato. I'm completely unable to test CSB and CSW, but should all be fine, I went off the published delay ms

Set your predelays to the max legato for each, so

CSS= -333 (should work fine on CSSS too - they share the same delays)
CSW = -220
CSB Bones, Horns, Tubbs = -230
CSB Trumpets = -180

This solution provides:

1. Variable automated delays for different legato speeds
2. Ensures the note-on for new notes is not delayed (see question at end of post)
3. Ensures the note-offs aren't delayed at all (they happen exactly when the midi note-off occurs)

One thing that I wouldn't mind some feedback on - I've set the pre-delay for new notes to effectively be zero. But I don't think that's right at all... the doc doesn't say what the predelay for legato new notes should be, so I'm open to suggestions...? I can update and re-issue if someone has a definitive number we should be using.
Alright I'm going up do my darndest to try this in the next day and let you know all of my thoughts. This seems incredible!
 
Alright I'm going up do my darndest to try this in the next day and let you know all of my thoughts. This seems incredible!
Cool. Let me know, and if your testing goes ok I will post as its own post so others can see it and try it.

It wasn't complex in the end. I leveraged the JS midi delay code that comes with reaper and added some logic for when and how much delay to add.
 
Top Bottom