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



## Ihnoc

Hi,

This community is grand and has provided so many useful things for me. I have been tooling with a script to automatically offset the notes in CSS, based on what articulation you have set and I would like to share this with you.

A control panel for Cinematic Studio Strings, Cinematic Studio Solo Strings, Cinematic Studio Brass and Cinematic Studio Woodwinds that allows DAW based customisation.

*Features*

Ability to offset short notes, slow legato, medium legato and fast legato/marcato/trill legato individually, allowing all these note types to be triggered at the same time
This requires negatively offsetting the MIDI track by the Slow Legato speed, which is 330ms by default
Offset delay takes the slowest articulation (Slow Legato) and works out when to play faster articulations, making every articulation in sync
Note delay is controlled by CC, CC13 by default. Set the CC 0-64 to allow for playability, then set it 65-127 to force the note types to sync to the same time
Script responds to the same keyswitches and keyswitch CC messages as the instrument to equalise the timing

Ability to control short note velocity with a CC, CC1 by default
Ability to trigger major and minor trills with a single key
When enabled, setting the Keyswitch CC to 46-47 will force minor trills, while setting it 48-50 will trigger major trills
When enabled, pressing the Trills keyswitch with velocity 0-64 will force minor trills, while setting it to 65-127 will trigger major trills

Ability to auto-rebow (auto trigger CC64) when playing legato
Operates on a user defined channel, so you can run multiple scripts, one for each section
By default all settings are set up for the Violins, Violas, Celli and Basses as the default patches are saved
Options are available to set defaults for Strings, Trumpets, Brass or Winds
*Update 1.8*

Added support for Winds mode. Default delays for this mode are supplied as with Strings and Brass modes
Added a colour bar to indicate which mode the script it is in. It illuminates when the delay is active
Slightly re-arranged the UI to make it easier to understand
Fixed an issue where short notes at very fast tempo speeds would cut into the next note
*Update 1.7*

Added option to set the delay on the first note in a legato phrase. The default is 100ms, as with other long notes
Added options to set the script into Brass mode or Strings mode. In the Brass mode, the script will react assuming the instrument is from Cinematic Studio Brass instead. Default delays for Trumpets and the rest of the Brass, as defined in the manual, are available
Added an element that informs the user what track offset to set in the DAW in the top right
*Update 1.6*

Added option to toggle the delay on all of the time, if you never want to turn it off. The option to enable or disable delay by CC is still available
Added option to delay all CC data sent to the instrument as well as the keyswitch CC and notes. CC data is delayed by the same amount as the articulation playing. This results in better sync between things like modulation and notes
Updated the default delay speeds to match the documentation better: 330ms for slow legato/portamento, 250ms for medium legato, 100ms for fast legato/longs, 60ms for shorts
*Update 1.5*

Script now supports keyswitches as a method of input, along with keyswitch CC or any combination. Keyswitches can be moved in octaves, set to CSS defaults or changed individually
Updated UI with tabs to provide help, add more functions (like keyswitches) and make customisation easier
Added auto-rebow feature for legato (regardless whether delay is on or not)
Further improved timing of articulation switching when seeking and on articulations that trigger at the same time as a note
*Update 1.4*

Improved the accuracy of the articulation selection when a note is played or when CC123 (All Note Off) is received. This was sometimes resulting in the legato phrase being forgotten when the transport was stopped mid-way through a phrase or jumping between articulations
*Update 1.3*

Fixed an issue where the first note in a legato phrase would play before the beat
Locked the multi-script with a password to make it a bit more presentable. The password is "AVO"
*Update 1.2*

Fixed an issue where the first note in a legato phrase would be offset – it is not offset like other long notes
Fixed an issue where some values would sometimes not be cleaned up when the transport stops
Improved the delays applied to notes when switching from shorts to legato
*Update 1.1*

Fixed an issue where notes would always overlap, causing midi events on the same note not fire
Fixed an issue where some delays would not be set properly when a note was played
*Requirements*

Cinematic Studio Strings or Cinematic Studio Solo Strings
Kontakt 5.7
Must be set up in the Kontakt instance's script panel (the ‘KSP’ button in the top right)
Use of Keyswitch CC (instead of actual note keyswitches)
A bit of time to set up to your tastes
*Limitations*

I added a legato keyswitch which is user defined. This is to get around the issue that expression maps in Cubase don’t trigger the same CC twice. Regardless setting the keyswitch CC to enable or disable legato will be observed by the script
Since there is no function for converting note bytes to actual notes, I elected to keep them as numbers in order to release the script earlier. You can find out your key switches and re-assign them by shift-clicking on an articulation in CSS
The one note trills purposefully cull the harmony they make almost immediately after being played, but this can cause some issues with trills very close together. If you use this feature, I recommend playing trills where the upper note of the lower trill is a semi-tone away than the lower note of the upper trill
*Alternate Versions*
User @img has provided an alternate version of the script that supports multiple channels being delayed independently in one script. While there are no plans to support this officially in my version of the script, please take a look at their work and consider using it if you need a multi-channel version.

*Download and Source*
http://www.alexjevincent.co.uk/css-control-panel

*Donations*

I have been asked for ways to donate for use of the script, including libraries. While this is most appreciated, I am lucky to have a full time job and money to spend on such things
Instead, please consider putting that money to causes that matter to you - helping our planet, its species or perhaps those homeless, in need of medical care or research. And if not, consider helping yourself by saving that money and buying that library, software or hardware you wanted
All the best,
Alex Vincent (Ihnoc)


----------



## AoiichiNiiSan

Thanks for sharing this.


----------



## ghandizilla

I was looking for a way to map short velocities to CC. Will try it later today. Very excited


----------



## Ihnoc

ghandizilla said:


> I was looking for a way to map short velocities to CC. Will try it later today. Very excited


You can set this in isolation - you don't need to use the track delay or trills to use it. Please keep in mind that the script requires you to use Keyswitch CC to know if you have 'shorts' selected. The reason for this is to make sure the attack of longs or legato speed are maintained.


----------



## ghandizilla

I use CC58 to switch articulations, is that right?


----------



## ghandizilla

I struggled at first before understanding it is a multiscript, and not a single script. Once correctly loaded, it worked fine. I created a line for CC58 major trills @48 in Reaticulate (articulation management system in Reaper), and it's just a cream. Thanks for sharing your work


----------



## fuzzface

Note delay is controlled by CC, CC13 by default. Set the CC 0-64 to allow for playability, then set it 65-127 to force the note types to sync to the same time

I don't understand this parts.
Can you little more specific about CC13 value on 'first note' and 'second slow,mid,fast note' ?


----------



## ghandizilla

With CC 0-64, the delays don't compensate, so it's more playable, whereas when delays are compensated to sync, you have kind of a big latency while playing.


----------



## Ihnoc

ghandizilla said:


> I struggled at first before understanding it is a multiscript, and not a single script. Once correctly loaded, it worked fine. I created a line for CC58 major trills @48 in Reaticulate (articulation management system in Reaper), and it's just a cream. Thanks for sharing your work



Correct. You can change the Keyswitch CC from 58 to whatever you like in CSS, so I made sure you can do so in the multiscript too.

I had to make a multiscript because CSS is a locked instrument, unfortunately.


----------



## Ihnoc

fuzzface said:


> Note delay is controlled by CC, CC13 by default. Set the CC 0-64 to allow for playability, then set it 65-127 to force the note types to sync to the same time
> 
> I don't understand this parts.
> Can you little more specific about CC13 value on 'first note' and 'second slow,mid,fast note' ?



By default CC13 controls whether you delay notes when you play them, which is the Delay CC. You can change this CC to something else (like CC74 or whatever is best for you). The value of this Delay CC is checked before playing any note. This is the primary function of the script and is available to allow you to say whether you want to delay notes or not:

If the value is 0-64, then notes will not be delayed
If the value is 65-127, then notes will be delayed by the amounts specified as 'Shorts', 'Slow', 'Medium' and 'Fast'. I put the defaults for these as 60ms, 300ms, 200ms and 100ms as suggested by the CSS manual but you might find better values
I personally set the Delay CC (CC13 by default) to something low when I am playing in notes, then set it high for playback.


----------



## michdb

hi
sorry but I m not much use to scrips in Kontakt and i have few basic questions
so what I did is a load this on multiscript and click on apply button
so after this should work but what I m not understand is about the setup of the scrip
I put on my channel to -300 ms delay i load a CSS instrument so when the daw playback the midi the scrip ill automate the delay ms depend on the velocity of notes?
when I using this script I cant use the key switch way I have to use the cc 58 to change articulation?
when I do playback even with the cc13 on 0 the short notes still have a delay a doesn't fit with the click only reduce the delay when I playing live?
thanks


----------



## ghandizilla

Yes, you have to use CC58 to switch articulations with this script. If you use Cubase, Reaper, or Logic, it should not be difficult to map.

To compensate the delay you have to put CC13 in the 65-127 range. You may have to nudge the first note (just the first) of a legato line, all the rest should fit.


----------



## Ihnoc

michdb said:


> hi
> sorry but I m not much use to scrips in Kontakt and i have few basic questions
> so what I did is a load this on multiscript and click on apply button
> so after this should work but what I m not understand is about the setup of the scrip
> I put on my channel to -300 ms delay i load a CSS instrument so when the daw playback the midi the scrip ill automate the delay ms depend on the velocity of notes?
> when I using this script I cant use the key switch way I have to use the cc 58 to change articulation?
> when I do playback even with the cc13 on 0 the short notes still have a delay a doesn't fit with the click only reduce the delay when I playing live?
> thanks



If you are having problems, it is most likely because I haven't explained it very well. Leaving the One Note Trills and CC Controlled Shorts to the side for the moment, there are two things to need to get a hang of:

Whether you want to delay notes (CC13)
How much notes are delayed by (CC58 and some other numbers)
*Whether you want to delay notes*
The script decides whether to delay notes or not by the 'Delay CC', which is CC13 by default:

If you set this low (0-64), notes will not be delayed
If you set this high (65-127), notes will be delayed
This Delay CC is available so you can easily turn off the Delay, if you need to play something in.

*How much notes are delayed by*
The script decides how to delay incoming notes based on the following criteria:

What the last value of CC58 was that was sent
What the velocity of the incoming note is, if CC58 is in the legato range
What the millisecond values of the Slow/Medium/Fast/Shorts delay are
This Keyswitch CC is available so the script knows which delay to use for which articulation.
*
Example*
If CC13 is 64 or below, nothing else happens. If it is 65 or above, one of the four below happens:

If CC58 is set to ranges for spiccato/staccato/sforzato/pizzicato/col legno etc., then notes after that are delayed by the Shorts delay
If CC58 is set to Marcato or Trills, those notes are delayed by the Fast delay
If CC58 is set to ranges for legato, the incoming note is checked for its velocity. Lower velocity will use the Slow delay, middle velocity will use the Medium delay and high velocity will use the Fast delay
If CC58 is set to something other than an actual articulation (like turning Con Sordino on and off), the script carries on with whatever the last articulation was


----------



## Ihnoc

Updated the script to 1.1:

Fixed an issue where notes would always overlap, causing midi events on the same note not fire
Fixed an issue where some delays would not be set properly when a note was played


----------



## Ihnoc

Updated the script to 1.2

Fixed an issue where the first note in a legato phrase would be offset – it is not offset like other long notes
Fixed an issue where some values would sometimes not be cleaned up when the transport stops
Improved the delays applied to notes when switching from shorts to legato
Get it here: http://alexjevincent.co.uk/css-control-panel/
Your feedback is appreciated as always!


----------



## axb312

Can someone provide a detailed guide on how to use this in Studio One? I don't know how to apply the script in Kontakt and/ or how to use it....


----------



## constaneum

Does this work with other DAWs as wel ?


----------



## Ihnoc

axb312 said:


> Can someone provide a detailed guide on how to use this in Studio One? I don't know how to apply the script in Kontakt and/ or how to use it....



Hey. It looks like StudioOne supports track offsets. You need version 3.5 or above to support delays over 100ms (apparently). Please understand my explanation is based on the fact that I don't use StudioOne at all so it may be condescending - my apologies

First download the nkp file. Place it in \Documents\Native Instruments\Kontakt 5\presets\Multiscripts. This is usually C:\Documents\Native Instruments\Kontakt 5\presets\Multiscripts if you're on Windows 10
Open StudioOne and create an instrument track with Kontakt on it
Set the delay on the track - select a track and press F4 to open the inspector ala 
In the delay field type '-300'
Open Kontakt itself and click the 'KSP' button in the top right. A new panel will appear
Click 'Preset' in the top left of the pane, then 'User' and then the script's name. The script should appear
You can click the 'Edit' button at the bottom to hide the code since you can just use the UI to change the parametres
Load an instance of CSS Violins on channel 1
Now you need to send some CC13 information to that instrument, either with your midi keyboard or just by drawing it in the midi editor in StudioOne. This turns the delay functionality on. Set it over 65
Play some notes and observe that those notes are now being delayed
Send some CC58 information to select the articulation you desire as per the CSS manual and the multiscript will get that as well. It will automatically set the note delay based on the articulation you select. You MUST use CC58 and not keyswitches to change the articulation
Set CC13 back down below 64 to turn off the delay and play things in
In the KSP panel again, click the second tab and then 'Preset' and 'User' and the script name as before to load another version of the script
Load Violins 2 on channel 2
In the KSP panel, change the Input Channel to channel 2
Now Violins 2 will also be delayed, but by the values on the second tab instead

That's basically it. If you decide to use a different CC to turn on the delay or change articulation, you can adjust that in the KSP panel.

Please let me know if I can help any further.


----------



## Ihnoc

constaneum said:


> Does this work with other DAWs as wel ?



Any DAW that supports a negative track delay should do it. As I know it:

Cubase
Logic
StudioOne 3.5+
Ableton Live


----------



## axb312

Ihnoc said:


> Hey. It looks like StudioOne supports track offsets. You need version 3.5 or above to support delays over 100ms (apparently). Please understand my explanation is based on the fact that I don't use StudioOne at all so it may be condescending - my apologies
> 
> First download the nkp file. Place it in \Documents\Native Instruments\Kontakt 5\presets\Multiscripts. This is usually C:\Documents\Native Instruments\Kontakt 5\presets\Multiscripts if you're on Windows 10
> Open StudioOne and create an instrument track with Kontack on it
> Set the delay on the track - select a track and press F4 to open the inspector ala
> In the delay field type '-300'
> Open Kontakt itself and click the 'KSP' button in the top right. A new panel will appear
> Click 'Preset' in the top left of the pane, then 'User' and then the script's name. The script should appear
> You can click the 'Edit' button at the bottom to hide the code since you can just use the UI to change the parametres
> Load an instance of CSS Violins on channel 1
> Now you need to send some CC13 information to that instrument, either with your midi keyboard or just by drawing it in the midi editor in StudioOne. This turns the delay functionality on. Set it over 65
> Play some notes and observe that those notes are now being delayed
> Send some CC58 information to select the articulation you desire as per the CSS manual and the multiscript will get that as well. It will automatically set the note delay based on the articulation you select. You MUST use CC58 and not keyswitches to change the articulation
> Set CC13 back down below 64 to turn off the delay and play things in
> In the KSP panel again, click the second tab and then 'Preset' and 'User' and the script name as before to load another version of the script
> Load Violins 2 on channel 2
> In the KSP panel, change the Input Channel to channel 2
> Now Violins 2 will also be delayed, but by the values on the second tab instead
> 
> That's basically it. If you decide to use a different CC to turn on the delay or change articulation, you can adjust that in the KSP panel.
> 
> Please let me know if I can help any further.




Thank you very very much.


----------



## Vadium

One note trills are not works for me (with any state of a "one note trills" button)

Also, if I apply a downloaded source script, I see a red line


----------



## Ihnoc

Vadium said:


> One note trills are not works for me (with any state of a "one note trills" button)
> 
> Also, if I apply a downloaded source script, I see a red line:



It looks like you have applied the script to an instrument. The script must be applied as a multiscript, which would explain why you are seeing script errors.

I'm not sure how you've managed to unlock CSS (resaved it or something?) but using the script on an instrument is not intended.

For curiosity, what are you using there in the middle for articulation control?


----------



## Vadium

Ihnoc said:


> For curiosity, what are you using there in the middle for articulation control?


I use a Reatiqulate in Reaper.

Later I will test same setup in Cubase


----------



## Vadium

Ihnoc said:


> but using the script on an instrument is not intended.


oh, yes - it was a cause. Now I open this script as multyscript and all is works OK! thank you!

But first legato note sounds early - not correct


----------



## Ihnoc

Vadium said:


> But first legato note sounds early - not correct



That is frustrating. I thought I had solved that issue. Could you confirm:

The track is offset by -300ms?
The CC you are using to turn on the script's delay is above 64 before the legato line starts?
What information are you sending to Kontakt to play a legato line (CC58 value, or legato on/off keyswitch, or both)?


----------



## Vadium

Ihnoc said:


> Could you confirm:


I just have tested same setup in Cubase and Reaper:

1) Yes, offset of track = -300ms
2) Yes, I use CC13 <63 for play and recording and >64 for playback
3) For advanced legato I send CC58=6 and note34 with velocity 65

in Cubase all works OK and first note is OK

in Reaper: first time I press play in fresh open project - all is OK. If after it I switch CC13 to <63 and play on the keyboard different articulations, then switch CC13 back to >64 and press Play - first note is bad. If I do same in Cubase, first note is OK


----------



## NJlo

This is an amazing solution, thanks very much! Only I have the issue in Logic Pro X, that the first note is not delayed correctly. Is there anything I can do about that?


----------



## Ihnoc

Thanks @Vadium and @NJlo, I think I have nailed this down. 1.3 is now available. Page updated.

It looks like I wasn't resetting the length of a legato phrase when playing something other than a legato note. I did 3 compositions with it in this state so I'm not sure how I missed it.


----------



## NJlo

That works perfectly, thanks a million!

For anyone else reading this.. I was having an issue with MIDI imported from a notation software that another arranger uses. The MIDI notes were somehow all on another channel, so I had Kontakt set up to receive in omni. However, this multiscript doesn't do that, so if you use it, make sure to change all notes to channel 1 (or whichever one you choose)


----------



## Ihnoc

NJlo said:


> That works perfectly, thanks a million!
> 
> For anyone else reading this.. I was having an issue with MIDI imported from a notation software that another arranger uses. The MIDI notes were somehow all on another channel, so I had Kontakt set up to receive in omni. However, this multiscript doesn't do that, so if you use it, make sure to change all notes to channel 1 (or whichever one you choose)



Allowing Omni shouldn't be hard so I will consider adding that. For curiosity, in this instance were all the notes on channel 2 and the CC or keyswitch on channel 1 or something?


----------



## NJlo

Ihnoc said:


> Allowing Omni shouldn't be hard so I will consider adding that. For curiosity, in this instance were all the notes on channel 2 and the CC or keyswitch on channel 1 or something?


Nah it was way weirder... The arrangement I got in was written out for 12 strings individually and they basically had their own midi channel for notes each, but other parameters were somehow on two totally different channels.


----------



## Ihnoc

saxmand said:


> For instance if I use Expression maps, and go from Shorts to Legato, the legato mode gets set to 0, so and I need to hit the key switch 24 (Bb0) to enable legato again for the correct delay values.



So when I want to play a legato line, I set the sustain articulation in CC58 and the legato keyswitch within the same expression map articulation. If you _don't_ set that keyswitch, I believe the script will assume a sustain delay (witch is the fast one) when switching to the sustain articulation.

Having said that, I could add some memory to whether you were in legato or not, which might help this problem.



saxmand said:


> But worse, I experience the delays to not be consistent. Especially notice it with short notes, that it's not as much on the grid as if I would either move them or just have the track set to the exact delay time (-60ms). I also experience it with legato, but of course less obvious.
> 
> Anybody else experience this. I imagine it might be the Kontakt script or engine not being precise enough...



I would much more likely blame my script than blame the precision of Kontakt itself. Certainly different short articulations and different round robins will have different attacks. They're never going to be 100% on the grid.

What I do suggest is creating a quick passage with the delay on and then bouncing the track to audio. That way you can estimate how far off different articulations are and adjust to taste in the script. Very simply though, the script does a _Slow Delay - Shorts Delay_ to decide how long to wait before playing a short note. This is calculated in milliseconds but Kontakt goes down to microseconds in delay. The execution speed is going to be so fast that, if the script works properly, the inaccuracy would be imperceptible.

If you have a case that reproduces what you're talking about as a midi file in these shorts, I'd be more than happy to take a look and try to improve things. That does sound like a pain!


----------



## saxmand

EDIT: THIS IS SOLVED. SEE MY POST FROM NOVEMBER 14. 

This is such a great idea and concept.
I've been trying a couple of times now to make it work, but get a bit different inconsistencies and problems.
So I'm in Cubase. After lots of try an error it seems that if you have the high negative track delay (like -300), notes starts to be all over the place with inconsistent timings. Very Noticeable with short articulations.
And it doesn't seem to be ExpressionMaps causing it.

Anybody else experience this?

About the script:
I found that when I use ExpressionMaps, and go from Shorts to Legato, the legato mode gets set to 0, so I need to hit the key switch 24 (Bb0) to enable legato again for the correct delay values.


----------



## saxmand

A bit further investigation has unfortunately shown that Cubase Track Delay compensation is very unreliable as soon as it gets beyond -250ms. 


Gonna report it to Steinberg if it's not already.


----------



## saxmand

Hey Ihnoc. 
Only saw your response after my last post. Had already figured out that it wasn't necessarily your script, but something spooky going on in Cubase.

Okay, so you set both key switches and CC58 on the ExpressionMap. Didn't catch that from the instruction


----------



## Ihnoc

saxmand said:


> A bit further investigation has unfortunately shown that Cubase Track Delay compensation is very unreliable as soon as it gets beyond -250ms.



This isn't my experience but I might just be missing something. I'm on 8.5 Pro, in case it helps. As a wild guess, this might improve if you increase your buffers in your ASIO drivers? If they are particularly low, that might be a reason (but I really have no idea).



saxmand said:


> Okay, so you set both key switches and CC58 on the ExpressionMap. Didn't catch that from the instruction



I will update the description. Even so, you've made me think about the legato memory. I will look into that.


----------



## saxmand

Great news. The solution was in Preference -> MIDI. 

Changing the MIDI Latency Mode to "Normal" or "High" did the trick. Mine was on "Low". 
Seems to work almost flawlessness. I think I might still hear once in a while a small shift in timing of a MIDI note or two when doing it with a very percussive sound, but it's very minimal, and I can use it now!


----------



## saxmand

Ihnoc said:


> I will update the description. Even so, you've made me think about the legato memory. I will look into that.



Awesome. Looking forward to that. Then I wouldn't have to rewrite all my ExpressionMaps


----------



## chrisphan

Not sure what I'm doing wrong, but so far I haven't been successful using the script. The main problem is that the delay compensation becomes laggy after starting a new phrase. For example, if I start a legato phrase, end it and start a new phrase (whether legato, or another articulation - using CC 58), the compensation is no longer precise. 

Could you help me troubleshoot this? Others have had success with the script so I might be doing something wrong here.


----------



## Ihnoc

Hello. Thanks to some sample MIDI from @alfredsolax, the script version has been updated to 1.4. This may be more accurate for some users and phrases, especially if you are moving around between articulations regularly or stopping the playback in the middle of phrases. Please try it out.


----------



## constaneum

I've loaded the script (i'm using FL Studio) but the script doesnt seem to do anything? Did i miss out anything or it doesnt work with FL studio ?


----------



## Ihnoc

constaneum said:


> I've loaded the script (i'm using FL Studio) but the script doesnt seem to do anything? Did i miss out anything or it doesnt work with FL studio ?



Have you got CC13 up above 64 (the delay CC)?
Are you switching articulations with CC58 (default keyswitch CC)?


----------



## Henu

I have a question as well, if anyone can answer this: Using Cubase 9.5, everything went very smoothly...except for articulation switching. 

Due to my track being now delayed negatively for that 300ms, the Kontakt script won't obviously move my _articulation switches_ when using them through the expression map I have made. I also tried with plain midi CC information, but naturally it failed as well. Using keyswitched articulations would move them according to the script, but the script isn't supporting them. 

This makes the wonderful script pretty much unusable for me, as I often tend to switch articulations quite rapidly depending on the passage. Am I missing something obvious here or how do people work around with this problem?


----------



## Ihnoc

Henu said:


> I have a question as well, if anyone can answer this: Using Cubase 9.5, everything went very smoothly...except for articulation switching.
> 
> Due to my track being now delayed negatively for that 300ms, the Kontakt script won't obviously move my _articulation switches_ when using them through the expression map I have made. I also tried with plain midi CC information, but naturally it failed as well. Using keyswitched articulations would move them according to the script, but the script isn't supporting them.
> 
> This makes the wonderful script pretty much unusable for me, as I often tend to switch articulations quite rapidly depending on the passage. Am I missing something obvious here or how do people work around with this problem?



If you are using the negative track delay in Cubase, all of the midi data, including the expression maps and the subsequent MIDI CC or notes, will also trigger earlier by that delay. The script also doesn't delay keyswitches and the keyswitch CC for music performance reasons, so I am unclear why you would stuggle with this.

However, I have been asked for Keyswitch support and it is on my list to do. Most of the work is in the UI as there are already loads of things to show in the tiny KSP window. I will see what I can do.


----------



## Henu

Yes, that is obviously true. But as you say in the instructions,



Ihnoc said:


> This requires offsetting the MIDI track by the Slow Legato speed, which is 300ms by default



...I am unclear why I'd _not_ struggle with this problem.  Or am I just being stupid now?`

If I offset the track delay using this script, all the notes are now perfectly aligned but the expression maps and all subsequent midi CC data is naturally now 300 ms ahead. Do I need then to align my articulation switching 300 ms before the actual place by hand each time, or is there another solution which I just don't understand for some reason?


----------



## Ihnoc

Henu said:


> Yes, that is obviously true. But as you say in the instructions,
> 
> 
> 
> ...I am unclear why I'd _not_ struggle with this problem.  Or am I just being stupid now?`
> 
> If I offset the track delay using this script, all the notes are now perfectly aligned but the expression maps and all subsequent midi CC data is naturally now 300 ms ahead. Do I need then to align my articulation switching 300 ms before the actual place by hand each time, or is there another solution which I just don't understand for some reason?



No stupidity. Are getting this when playing notes and keyswitches in, or just playing keyswitches in on already recorded phrases, or just playback of notes and phrases?


----------



## Henu

It happens when I assign any articulations into the recorded part with the expression maps, using midi CC58. I can hear (and also see from the Kontakt instance in question) that the articulation changes before it is marked to change.


----------



## constaneum

Ihnoc said:


> Have you got CC13 up above 64 (the delay CC)?
> Are you switching articulations with CC58 (default keyswitch CC)?



Pardon my noobness. I have to set CC13 above 64 or less than that? I'm switching articulations using keyswitch CC


----------



## Ihnoc

Henu said:


> It happens when I assign any articulations into the recorded part with the expression maps, using midi CC58. I can hear (and also see from the Kontakt instance in question) that the articulation changes before it is marked to change.



Sounds like what you want is to delay the articulation changes as well then. That's not an outrageous request and I've wondered whether it is a good idea. I will have a think about this as I adjust the script.


----------



## Ihnoc

constaneum said:


> Pardon my noobness. I have to set CC13 above 64 or less than that? I'm switching articulations using keyswitch CC



Thanks and please don't hesitate to ask.

The Delay CC (by default CC13) should be above 64 to engage the script's delay. If you are sending CC (13 and 58) to Kontakt, then the script should also be picking up those changes as well.

The best way to test whether things are working is to set CC13 to 0, set CC58 to Spicatto (11 I believe), then play some chords. The response should be immediate (the delay is bypassed). Then turn CC13 up to full and play again. The response should feel like a quarter note delay.

Also check that the MIDI channel that you are sending the CC to is set correctly in the script. The default is 1, but if your CSS instrument is on a different channel, then the script will ignore the MIDI. This is so the script only affects one channel at a time (and doesn't mess with other playback).


----------



## constaneum

Ihnoc said:


> Thanks and please don't hesitate to ask.
> 
> The Delay CC (by default CC13) should be above 64 to engage the script's delay. If you are sending CC (13 and 58) to Kontakt, then the script should also be picking up those changes as well.
> 
> The best way to test whether things are working is to set CC13 to 0, set CC58 to Spicatto (11 I believe), then play some chords. The response should be immediate (the delay is bypassed). Then turn CC13 up to full and play again. The response should feel like a quarter note delay.
> 
> Also check that the MIDI channel that you are sending the CC to is set correctly in the script. The default is 1, but if your CSS instrument is on a different channel, then the script will ignore the MIDI. This is so the script only affects one channel at a time (and doesn't mess with other playback).



Thanks man !


----------



## Ihnoc

*Update 1.5*

Script now supports keyswitches as a method of input, along with keyswitch CC or any combination. Keyswitches can be moved in octaves, set to CSS defaults or changed individually
Updated UI with tabs to provide help, add more functions (like keyswitches) and make customisation easier
Added auto-rebow feature for legato (regardless whether delay is on or not)
Further improved timing of articulation switching when seeking and on articulations that trigger at the same time as a note
See here for details


----------



## Henu

EDIT: Sorry, I was too early celebrating. :/ I thought the articulations were now also delayed at first, but then after trying out some more faster switchings, I noticed they weren't. But if you can do that- and if it's not too hard, of course- I bet I'm not the only who would be really glad about it!


----------



## Ha'Vi

Thanks for sharing this, but I'm finding it a little... temperamental. I had it up and running perfectly in a Pro Tools session this morning, but it seems to have bugged for me along the way. Now it only seems to offset by the fast speed when playing anything legato, regardless of the note velocities. The shorts all seem to work fine though.

I'm thinking that this is mostly likely some pilot error on my end, because for one glorious fleeting moment it worked beautifully. Any ideas?


----------



## Ihnoc

Ha'Vi said:


> Thanks for sharing this, but I'm finding it a little... temperamental. I had it up and running perfectly in a Pro Tools session this morning, but it seems to have bugged for me along the way. Now it only seems to offset by the fast speed when playing anything legato, regardless of the note velocities. The shorts all seem to work fine though.
> 
> I'm thinking that this is mostly likely some pilot error on my end, because for one glorious fleeting moment it worked beautifully. Any ideas?



That's literally the opposite of what 1.5 should be doing now. Are you using just keyswitches or just CC58? Also please look at the script while legato and staccato passages are playing. What does the script say it is doing?

Tempermental is certainly a word I would use for this whole script; it is more often the script thinking you are doing something else, rather than user error.


----------



## drymcore_music

I have a question: what happens with the first note in a legato line? The delay of those notes are not delayed so much as the transitions, but i guess i have to either:

- move them so they are on the grid OR
- use CC13 to disable the script for the first note, then re-enable it before the next note (now a legato transition) starts

or do i miss something here?
(did not try the script yet, but will soon)


----------



## JohannesR

drymcore_music said:


> I have a question: what happens with the first note in a legato line? The delay of those notes are not delayed so much as the transitions


+1

Would make so much more sense if the first long note is in sync with the grid!


----------



## Ha'Vi

Ihnoc said:


> That's literally the opposite of what 1.5 should be doing now. Are you using just keyswitches or just CC58? Also please look at the script while legato and staccato passages are playing. What does the script say it is doing?
> 
> Tempermental is certainly a word I would use for this whole script; it is more often the script thinking you are doing something else, rather than user error.



I've tried using both keyswitches and CC58, with both the script gives the message "Playing advanced sustain note with delay of 100 (or whatever I set the fast legato value to), legato phrase length: 0".

Staccato passage all show the same message, and appear to also use the fast legato times.

Keyswitches and CC58 both give articulation updated messages though.

I'll keep digging on my end though, and let you know if I find anything.

Edit: Just got a script warning in Kontakt that reads "SCRIPT WARNING (Line 1065, Script 0): wront time parameter in wait statement!."


----------



## Ihnoc

drymcore_music said:


> I have a question: what happens with the first note in a legato line? The delay of those notes are not delayed so much as the transitions, but i guess i have to either:
> 
> - move them so they are on the grid OR
> - use CC13 to disable the script for the first note, then re-enable it before the next note (now a legato transition) starts
> 
> or do i miss something here?
> (did not try the script yet, but will soon)



The first note in _any_ legato phrase is offset by the same amount as fast legato (and sustains/marcato/trills/harmonics) which by default is 100ms, which sounded right to my ears. As far as I can tell it just plays a sustain note at the beginning.

So the first note in legato phrases is offset relative to the slow legato, like everything else. You should not have to move the first note, and keeping CC13 up all the time will offset everything correctly.


----------



## Ihnoc

Ha'Vi said:


> Edit: Just got a script warning in Kontakt that reads "SCRIPT WARNING (Line 1065, Script 0): wront time parameter in wait statement!."



Could I ask you to PM me your script settings? While it is not impossible to get this error in theory, I have _never_ encountered it with the default settings.


----------



## Rufus Loacker

For me it has a strange behaviour:


default settings, the starting note of a phrase is on time, but the Slow (and a little, Medium) legatos are out of time.
if I change the Slow Legato time delay the starting note delay changes too!
the combination script+trackdelay sounds exactly like no track delay and no script.

I'm in Reaper, track delay compensation can be achieved with a native JS plugin, but it's the same if I nudge the MIDI item with no track delay, just for testing purposes.

I can provide screenshots and MIDI files if necessary


----------



## Ha'Vi

Ihnoc said:


> Could I ask you to PM me your script settings? While it is not impossible to get this error in theory, I have _never_ encountered it with the default settings.



Ah, don't worry about this part. It seems I misclicked and dragged in a daft value in the fast legato time box. I don't know how I did it, but putting in large values seems to reproduce that error!

It appears I've got it working again now. To solve it, I deleted everything on CC58, reset all the keyswitch values with the "CSS defaults" button (when loading the script up they default at -2 octaves), then have to send a keyswitch for both sustain and advanced legato (even if it was already on).

Now it's all running nicely. Thanks so much for this!


----------



## Ihnoc

Rufus Loacker said:


> For me it has a strange behaviour:
> 4
> 
> if I change the Slow Legato time delay the starting note delay changes too!



This is literally the point of the script. The slowest sample (slow legato) has a 300ms attack. The script delays all other articulations to play at the same amount of attack time:

300ms (slow legato delay) - 100ms (fast legato/first legato note/other longs) = 200ms. The script waits for 200ms when you play your first legato note
200ms (slow legato delay) - 100ms (fast legato et.c) = 100ms. The script waits for 100ms to play the starting note
It is done this way, because this is not cutting into samples, it is delaying the note on event of what is sent. The script does not do any delay of slow legato (on balance this is quite confusing from a UI perspective!).

A general tip for all; just leave the Slow Legato alone. If you want the medium legato speed to be faster, _increase _the medium legato delay, say in 50ms increments. If the slow legato is too slow, instead _increase _your negative track delay in the DAW.

I'll consider re-writing the UI text, because this isn't clear.


----------



## Ihnoc

Ha'Vi said:


> when loading the script up they default at -2 octaves



Good spot. That's a bug!


----------



## Ha'Vi

Ihnoc said:


> Good spot. That's a bug!



Happy to help! It also seems to have CC14 as default for the delay control rather that 13 as all the documentation says.


----------



## Ihnoc

Ha'Vi said:


> Happy to help! It also seems to have CC14 as default for the delay control rather that 13 as all the documentation says.



An updated version at the same link is now available with the correct keyswitch defaults. Turns out persistent values are saved when saving script files. This might help others who've had problems as well.


----------



## Rufus Loacker

Ihnoc said:


> This is literally the point of the script. The slowest sample (slow legato) has a 300ms attack. The script delays all other articulations to play at the same amount of attack time:
> 
> 300ms (slow legato delay) - 100ms (fast legato/first legato note/other longs) = 200ms. The script waits for 200ms when you play your first legato note
> 200ms (slow legato delay) - 100ms (fast legato et.c) = 100ms. The script waits for 100ms to play the starting note
> It is done this way, because this is not cutting into samples, it is delaying the note on event of what is sent. The script does not do any delay of slow legato (on balance this is quite confusing from a UI perspective!).
> 
> A general tip for all; just leave the Slow Legato alone. If you want the medium legato speed to be faster, _increase _the medium legato delay, say in 50ms increments. If the slow legato is too slow, instead _increase _your negative track delay in the DAW.
> 
> I'll consider re-writing the UI text, because this isn't clear.



Thanks, I actually discovered that the script didn't always trigger, even though my CC13 was above 64. The little text describing what was happening in real time was constantly stuck on "Playing advanced sustain note with delay of 100, legato phrase leght: 0" no matter what was actually being played.

I toyed with various settings and plugins in my DAW and suddenly it started to work... but only in the first patch loaded (so only on VL1 and not Vln 2, even though the settings were the same). I don't know what actually caused this and I can't replicate it now. I closed (after saving the project) and reopened Reaper and it started acting up again, still stuck on that message.

I'll test it more and report!

Edit: I didn't mention that when it worked, it was like magic! Thanks for the work


----------



## Ha'Vi

Rufus Loacker said:


> Thanks, I actually discovered that the script didn't always trigger, even though my CC13 was above 64. The little text describing what was happening in real time was constantly stuck on "Playing advanced sustain note with delay of 100, legato phrase leght: 0" no matter what was actually being played.
> 
> I toyed with various settings and plugins in my DAW and suddenly it started to work... but only in the first patch loaded (so only on VL1 and not Vln 2, even though the settings were the same). I don't know what actually caused this and I can't replicate it now. I closed (after saving the project) and reopened Reaper and it started acting up again, still stuck on that message.
> 
> I'll test it more and report!
> 
> Edit: I didn't mention that when it worked, it was like magic! Thanks for the work



I think you have the same issue that I did. Make sure you set the keyswitch values in the script to the defaults (or download the new updated version Ihnoc has provided), then keyswitch both the sustain patch on and advanced legato on (even if it looks like its already on).


----------



## Ihnoc

Rufus Loacker said:


> (so only on VL1 and not Vln 2, even though the settings were the same)


If your instruments are on different channels, you will need another instanced of the script set to a different channel. That might be it? As @Ha'Vi suggested as well, please try downloading the update; it may be a persistence issue.


----------



## Rufus Loacker

Attached, a screen of my setup + midi. 

I use two instances of the script with different inputs, but the behaviour is the same even with only one instrument. 
The CC13 is high, and the legato keyswitch sets the advanced legato at the beginning.
The info box in the script doesn't change from what is shown here.


----------



## Ha'Vi

Rufus Loacker said:


> Attached, a screen of my setup + midi.
> 
> I use two instances of the script with different inputs, but the behaviour is the same even with only one instrument.
> The CC13 is high, and the legato keyswitch sets the advanced legato at the beginning.
> The info box in the script doesn't change from what is shown here.



Put another high velocity (65+) keyswitch on the A#1 to tell the script that you are playing with advanced legato on. Kontakt knows that the advanced legato mode is on, but until you hit the keyswitch on yourself, the script doesn't.


----------



## Rufus Loacker

Ha'Vi said:


> Put another high velocity (65+) keyswitch on the A#1 to tell the script that you are playing with advanced legato on. Kontakt knows that the advanced legato mode is on, but until you hit the keyswitch on yourself, the script doesn't.



I love you! This fixed it, thank you very much! I figure while I diddled around with the CC58 I activated the legato but didn't realize 

Also, this script should work even with the Solo Strings and the Brass libraries, right? They don't have the slow legatos, but I should be able to set the Medium and Slow legato at the same delay and be good I think


----------



## Ihnoc

Rufus Loacker said:


> Also, this script should work even with the Solo Strings and the Brass libraries, right? They don't have the slow legatos, but I should be able to set the Medium and Slow legato at the same delay and be good I think



Solo Strings should work out of the box just like the Ensemble Strings does - you can thank the libraries' developers for that. Regarding brass I'm not sure as I don't own it. Some of the articulation mapping is different. Alex documented well the delay and keyswitch assignments in the manual so if I were to have it I would create a mode for the brass.


----------



## Mike McCarthy

Hi Ihnoc - thanks very much for your generosity & time in making this script.

Long time user of CSS and very keen to try your script - but my first attempt was a disaster - hopefully you can show me what I did wrong.

My slave PC is running Cubase Elements 7 as a host, plenty of RAM, etc.
Kontakt 5.8.1
Win 7 Pro

I downloaded the AVO-CSS Control Panel 1.5 nkp (but not the Source script).
I pasted it into Documents/Native Instruments/Kontakt 5/Presets/Multiscripts.
Clicked "KSP", then "Preset", then "User" and selected your script.
Then loaded CSS 1st Violins.

The CSS gui was all scrambled - with what looked like bits of your script's gui scattered across it.
Couldn't get it to load correctly - even from my backup CSS nki's.
Kontakt stand-alone was the same.
Had to reinstall Kontakt to get CSS patches to load correctly again.

I'm obviously missing something - please excuse my ignorance with multiscripts - but rather terrified of breaking my system again - any suggestions?
Thanks.


----------



## Ihnoc

Mike McCarthy said:


> The CSS gui was all scrambled - with what looked like bits of your script's gui scattered across it.
> Couldn't get it to load correctly - even from my backup CSS nki's.
> Kontakt stand-alone was the same.
> Had to reinstall Kontakt to get CSS patches to load correctly again.



Hey Mike, that does indeed sound disastrous. Having said that, there isn't anything I am aware of within my Kontakt multiscript that would cause something like that. It doesn't touch the instrument at all (nor could it). It works on pure MIDI only.

Are the symptoms like the ones in this thread?
https://vi-control.net/community/th...-missing-ir-files-after-css-1-5-update.64830/
Did you recently update the library?
Do other Kontakt multi-scripts provide this behaviour (like Factory->MIDI Filter)?


----------



## Mike McCarthy

No, no issues with other multi-scripts and no recent update of CSS.

It may have been the fact that I tried to load the script with an existing patch of CSS already loaded?

I think I called up my main template and just opened one of the CSS Instrument tracks and tried to load the script. 

Is it critical to follow a specific order? ie. blank instance of Kontakt, then load the script, then load CSS patch?

btw - the link above did not look like my scrambled GUI - so I don't think it's the same issue.

I'm willing to give it another bash - just not with a client about to walk in the door 

What is the "source script" for?


----------



## Ihnoc

Mike McCarthy said:


> No, no issues with other multi-scripts and no recent update of CSS.



Thanks Mike. Your description of how you are applying the script is fine; there's no particular order you should apply it in. Just download the nkp in the Multiscripts folder and load it in the KSP tab. You can add the script after loading patches or before or whatever; everything the script does is what the Kontakt Script Protocol provides.

Regarding the source script; this is literally the script in a text form, for people to read. You don't need it unless you're interested in seeing how it is written.

I would be astounded if there is something in the script itself that is causing this - when you have some safe time, please do try loading the Kontakt multiscript with one of the CSS patches from the library, ideally in standalone rather than within the DAW for the moment. If this reproduces, screenshots would be amazing.


----------



## Mike McCarthy

Freshly-installed Kontakt loaded the script fine - no GUI issues - but I'm having inconsistent results, unfortunately.

At first, the script just stayed at 100ms - no reaction to the Med & Slow legato velocities (with cc13 at 100 during playback) - only Fast legatos played in time. The I read an earlier poster saying that he had to nudge the Legato & Sustain keyswitches for the script to kick in - then it worked fine. But I'm using Expression maps (using the default CSS cc58 values for all the articulations), so I'm not keen on having to manually insert a keyswitch before each section that uses legato Sustains.

More problematic was the legato start notes sometimes playing back with 200ms instead of 90ms delay times - so they sounded early. Almost as if the script was not "resetting" after playing a slow legato transition (but all the other transitions in the phrase were showing the correct Slow/Med/Fast delay times during playback). This happened when I was stopping & starting a section that I was working on. Shorts worked 100% consistently - it's the legato Sustains I'm having trouble with.

Pretty sure it has something to do with my Expression Maps - no one else is reporting this issue so it must be me - will need to experiment more!


----------



## Ihnoc

Mike McCarthy said:


> ...no one else is reporting this issue so it must be me - will need to experiment more!



Hi Mike, could you send me images of your delay values and legato expression maps. Often people have had issues because they are missing a legato keyswitch when using expression maps (because Cubase only sends one value of a CC per articulation) or they misinterpret the delay values.


----------



## Mike McCarthy

Ok - have managed to clarify my issue:

(using all default delay settings and default CSS values, track set to -300ms, cc13 at 100 for playback):
Using legato Sustains, my start notes are sounding early. The info panel displays "Playing advanced slow legato/portamento note, legato phrase length 56" for the start note.

When it reaches the first legato transition, the script correctly shows the relevant delay settings of "nothing" for Slow, 200ms for Med, and 100 for Fast transitions - so the script is working correctly, except for my start notes.

I can get the start notes to play on the click, but only if I make the velocity of the start note = 101 (or higher). This forces CSS to play an aggressive fast attack. I prefer to use velocity = 64 (or less) for my start notes.

So my question is: how do I get my start notes to always trigger "Playing advanced sustain note with delay of 100", regardless of the velocity of the start note?

BTW - removing the Expression Map does not solve this issue - but I have attached it for your inspection, if you would be so kind - I'm almost there


----------



## Mike McCarthy

Update - I added note A#0 to my Expression Map for my "Advanced Legato" articulation, in addition to the cc58 value 8 that was already there (I think Expression Maps are capable of transmitting Notes & CC's simultaneously, as long as it's only one of each at a time) - and now the script is playing start notes on the clicks, regardless of velocity.

Too soon to celebrate - but it's looking promising...


----------



## jamwerks

FWIW in my experience, expression maps can become corrupt. After adding and deleting things a few times, it's better to start all over again. At a certain point, what you see in not what's really happening...


----------



## Ihnoc

Mike McCarthy said:


> I think Expression Maps are capable of transmitting Notes & CC's simultaneously, as long as it's only one of each at a time



Exactly this. I've found that, at least with Cubase, one needs to send CC58 for sustain and a keyswitch for legato, or keyswitch for sustain and CC58 for legato on, _if it is within one articulation_. I really don't understand why you can define multiples of the same note or same CC when Cubase only sends out one of them...

You shouldn't need to do this if you turn legato on and off as a separate articulation in the Expression Map (or just within the MIDI part).

What seemed to be happening was the script thought you were in legato mode already with a very large phrase length. The phrase length is what helps the script know whether you are playing the first note in a legato phrase or a continuation. I'm not sure how it would have fallen into this trap but this functionality isn't very clever, so I'll look at ways this might have happened.

I hope things continue to work for you!


----------



## Ihnoc

jamwerks said:


> FWIW in my experience, expression maps can become corrupt. After adding and deleting things a few times, it's better to start all over again. At a certain point, what you see in not what's really happening...



Wow. I've seen this a little in the editing page of expression maps, but only when the GUI clearly hasn't updated. Selecting another articulation or closing the window and opening again always fixed that for me at least.

It's worth mentioning for clarity that the script talked about here doesn't require Cubase's expression maps. It responds to MIDI data, much as CSS itself will be. If you're programming for CSS in a DAW, the script should be getting the same information before it reaches the instrument, and acting accordingly!


----------



## Mike McCarthy

I very much appreciate your time spent helping me - and your script is nothing short of miraculous - one has to wonder why this wasn't built into the CSS library in the first place 

Jamworks - thanks for the heads-up re corrupt Expression Maps - didn't know this.

I could easily add a "Legato On" articulation and insert it just before the "Sustain" articulation. But at this stage it seems as though my Exp Map is successfully transmitting both a note keyswitch and a CC58 for "Legato On" (A#0 and CC58 value 8) - and this seems to be "kick-starting" the multiscript into working correctly. Just ran out of time to experiment more.

Not quite out of the woods yet...had a few shorts that failed to play back at the correct velocities during my testing - around the 4th or 5th quaver into the sequence, after an articulation switch from legato Sustains to Spicc. But couldn't reproduce when I replayed the section - it's like a random dropout.

Should I be saving & reloading the script to "refresh" it when I've been changing values?


----------



## Mike McCarthy

[QUOTE=" The phrase length is what helps the script know whether you are playing the first note in a legato phrase or a continuation. I'm not sure how it would have fallen into this trap but this functionality isn't very clever, so I'll look at ways this might have happened.

I hope things continue to work for you![/QUOTE]

If you play one long Sustain note over several bars, before the next legato transition - will the script understand that it is a start note, despite the high phrase length value?


----------



## Ihnoc

Mike McCarthy said:


> ...Should I be saving & reloading the script to "refresh" it when I've been changing values?



No you should not need to do so. The delay values should be updated automatically, and which one to use when a note comes in will change each time you provide something that controls that (CC58 or a keyswitch). The delay values are maintained when you save and load as well, so closing the project should have no effect.

I did get issues when changing articulation on the same grid position as the note (either setting a direction at that point or with an articulation that is an attribute, I'm not sure of the analogous terms outside of Cubase) didn't update the delay immediately. This _might_ be related to buffer length, but it got so much better with tweaks I made in 1.4 I've not investigated further. This is one of the reasons why I don't delay the keyswitches and CC of the instrument.



Mike McCarthy said:


> [QUOTE=" The phrase length is what helps the script know whether you are playing the first note in a legato phrase or a continuation. I'm not sure how it would have fallen into this trap but this functionality isn't very clever, so I'll look at ways this might have happened.
> 
> I hope things continue to work for you!



If you play one long Sustain note over several bars, before the next legato transition - will the script understand that it is a start note, despite the high phrase length value?[/QUOTE]

Yes; if you are playing in sustain with the Sustain articulation in CSS and the legato switch off, the script treats this as not legato. The length of that note should not matter and the first note _after_ you select legato will be considered the first legato note. Legato phrase length is not based on time, but number of note on events vs note off events.


----------



## JohannesR

Ihnoc said:


> Yes; if you are playing in sustain with the Sustain articulation in CSS and the legato switch off, the script treats this as not legato. The length of that note should not matter and the first note _after_ you select legato will be considered the first legato note. Legato phrase length is not based on time, but number of note on events vs note off events.



It would be incredibly useful if the script, when in legato mode, understands that the first note is not a legato note per se - and sync that note accordingly.


----------



## Mike McCarthy

Putting both a Note keyswitch A#0 (to select Legato On) _and_ a CC58 value 8 (to select Sustain - Advanced Legato) on the same articulation in my Expression Map seems to kickstart the script into recognising legato start-notes correctly. Not sure why - but who cares - it works 

But another issue has emerged :(

An articulation switch from Legato to any Shorts (including Pizz) results in a velocity playback error, usually on the 3rd or 4th note into the Shorts passage.

In the attached mp3, the 3rd quaver in the Stacc passage drops out when playback includes the preceding legato phrase - 100% reproducible every time.

However, if playback is started just before the Stacc phrase, then velocities play back correctly.

Screenshot + Expression Map is also attached, if this helps.

Thanks.

[AUDIOPLUS=https://vi-control.net/community/attachments/stacc-phrase-played-from-start-of-stacc-phrase-mp3.19087/][/AUDIOPLUS]

[AUDIOPLUS=https://vi-control.net/community/attachments/stacc-phrase-with-preceding-legato-phrase-mp3.19088/][/AUDIOPLUS]


----------



## Mike McCarthy

Just discovered that it's not the 3rd or 4th note of the Shorts passage - it's whenever the _*first*_ note of a shorts passage is _*repeated*_, regardless of where in the sequence that note occurs.

If all the notes in the shorts passage are the same as the start note, then it is always the 2nd note in the sequence that drops out - thereafter they all play at correct velocities.

Hope this is helpful.


----------



## Ihnoc

JohannesR said:


> It would be incredibly useful if the script, when in legato mode, understands that the first note is not a legato note per se - and sync that note accordingly.



The first note in a legato phrase is always a sustain sample. The script does delay it correctly, as if it were a sustain note.


----------



## JohannesR

Ihnoc said:


> The first note in a legato phrase is always a sustain sample. The script does delay it correctly, as if it were a sustain note.


Fantastic!! It didn’t seem to be exactly in sync last time I tired (1.3 I think), but maybe some adjustments have been made on the latest version?

By the way, thanks so much for sharing it!


----------



## Mike McCarthy

Anyone else having this velocity issue?

Select any CSS shorts articulation - play a few shorts on the same note - the 2nd note drops out (ie. does not play at the recorded velocity).

Only happens if there is a legato phrase before the shorts phrase.


----------



## bengoss

Anyone else having issue with the script not loading? I put the file in the multiscripts folder and it shows up when I press the ksp button but nothing happens...I on a Mac
Thanks,
B


----------



## Mike McCarthy

Is CC13 up above 65 when you are playing back your midi data?

This activates the script.


----------



## bengoss

Mike McCarthy said:


> Is CC13 up above 65 when you are playing back your midi data?
> 
> This activates the script.


Yes it is. The problem I have is when I select the script in the drop down menu nothing loads, it still says empty.


----------



## Philip Walker

Hi! I tried this out the other day and had a few questions about my experience. I tried this in the default Advanced Legato Sustain Patch for Violin I in CSS. 

Playing around on default settings without touching volume, expression, or vibrato controls worked like a charm. There was zero noticeable input lag and CSS was finally playing how I'd always hoped it would. 

I then tried using the mod wheel to change vibrato and expression as I played, and once I did this, the samples would delay again and it was basically like I hadn't used the control panel script at all. Is this a limitation of CSS Control Panel or did I do something incorrectly?


----------



## Ihnoc

Philip Walker said:


> I then tried using the mod wheel to change vibrato and expression as I played, and once I did this, the samples would delay again and it was basically like I hadn't used the control panel script at all. Is this a limitation of CSS Control Panel or did I do something incorrectly?



It's possible the script was reset when you started the transport? The script should say 'Advanced Legato' in the Kontakt window if it is set correctly and it will tell you the speed. Either;

The delay CC (CC13) isn't up
The script hasn't got a legato keyswitch and articulation (you need to send the legato keyswitch and CC58 set to 6-10)
The script doesn't care about the CC11 or CC21 values. It only cares about CC1 if you have the option to control shorts dynamics with that, and even then that is not related to the delay.


----------



## Philip Walker

Ihnoc said:


> 2. The script hasn't got a legato keyswitch and articulation (you need to send the legato keyswitch and CC58 set to 6-10)



Thanks for the quick reply! It's possible that the script got reset yesterday, but more likely it was because of the second point you stated. I did change CC58 between 6-10, however, I did not send the legato keyswitch note to the piano roll! I gave this another go and sent the keyswitch note - this time, even while adjusting Velocity X-fade and Vibrato it worked like a charm.

Thank you so much!!!


----------



## saxmand

Amazing work Alex. Happy to see you updated the script (tried v1.3), cause now it works very well here also.
An observation, I noticed while playing without the script creating delay, that I was still experiencing a delay. So I did a couple of test with two tracks and phase inverse. I believe the Kontakt script introduces 10.66ms delay, bit random number, but it seemed to be the value that closest do a complete phase cancelling between the two tracks, where one track would play through the script but without delay and the other track without the script at all.
So I ended up modifying the script so instead of going through all the cases and options, it's just ignores the script right after the DelayCC value in case it's <64.
You might consider that, but of course you're loosing the info on the panel, what type of articulation etc.
I also added a keyswitch for the DelayCC. I've attached it if you want it. But messed up/changed some of your names.

Again thanks a lot for sharing. Super awesome!


----------



## NYC Composer

Hi-I'm using a very old version Of Cubase-6.02, in El Capitan on Mac. I am not seeing the script code in Cubase although the name does show up. Is my Cubase just too old? Does the script work on Mac? Thanks!


----------



## Ihnoc

NYC Composer said:


> Hi-I'm using a very old version Of Cubase-6.02, in El Capitan on Mac. I am not seeing the script code in Cubase although the name does show up. Is my Cubase just too old? Does the script work on Mac? Thanks!



This is intended to be DAW agnostic, just a Kontakt Multi Script, so you should be able to use it as long as you're using a version of Kontakt that is somewhat recent; 5.6.8 is ideal but the script will probably work on earlier versions of Kontakt 5 too.


----------



## NYC Composer

Yes, I installed it in the folder you specified, but I see no code. I have CC13 set up, I’m minus 300 milliseconds but there’s no effect. 
I’m not experienced with scripts but the name comes up in Kontakt-with no data. My version of Kontakt is 5.7.1


----------



## NYC Composer




----------



## Ihnoc

NYC Composer said:


>


I did hide the code itself (so the panel is easier to read). However, you should see the following when you select the script from that dropdown:


----------



## NYC Composer

Unfortunately, when I release the button, it's just an empty space.


----------



## NYC Composer

Here's my path:


----------



## Ihnoc

NYC Composer said:


> Here's my path:



Could you try loading one of the Factory scripts? Do those work? Also, have you tried loading the script in Kontakt Standalone? Does the script and Factory scripts work then?


----------



## NYC Composer

Yep, the factory scripts work in standalone and within Cubase, but the CSS one doesn't show except for the name. The multiscript slot stays empty.

Sorry to be such a pain!


----------



## Robert_G

Just out of curiosity....if I just wanted to move the notes over to the left to get 0 delay....how many milliseconds do they need to be moved?
Edit...im not using this script.....just using css out of the box


----------



## Land of Missing Parts

Robert_G said:


> Just out of curiosity....if I just wanted to move the notes over to the left to get 0 delay....how many milliseconds do they need to be moved?
> Edit...im not using this script.....just using css out of the box


Check out the manual, page three.


----------



## Robert_G

Land of Missing Parts said:


> Check out the manual, page three.



Thanks....and the first note is as normal?


----------



## Land of Missing Parts

Robert_G said:


> Thanks....and the first note is as normal?


Not sure. It's been a while since I've used it without script.

Also (you probably are already aware of this but just in case) the classic legato patches are the same thing as the normal ones, except the legato is short enough that there's no real delay. I use classic legato to play in parts, then switch over to scripted when I'm done performing. The script (NoamL's in my case) preserves the timings. Just FYI.


----------



## ContrapunctusXV

I'm using reaper and track delay is not really native to reaper but a simple JavaScript plugin will fix it. Is it still usable?


----------



## Ihnoc

ContrapunctusXV said:


> I'm using reaper and track delay is not really native to reaper but a simple JavaScript plugin will fix it. Is it still usable?



Note that the track delay talked about for the script delays the MIDI data sent to Kontakt. If the plugin in Reaper does that, then yes you can use it.


----------



## Vadium

If I set -300 ms in track and 300 in the slow legato slot in the script, a combination of spiccato and legato notes play not rhythmically. If I set -333 ms in track and 333 (as in CSS manual), all notes play better, but previous spiccato notes before legato play as legato too... Same result in Cubase and Reaper with MIDI Time Ajustment plugin. Is there way to get good results?


----------



## Vadium

For now, in Reaper, for correct last spiccato notes in 333ms mode I need to shift a Sustain keyswitch to right as in pic.


----------



## ContrapunctusXV

Vadium said:


> For now, in Reaper, for correct last spiccato notes in 333ms mode I need to shift a Sustain keyswitch to right as in pic.


So you need to do manual offsets? Time adjustment delay isn't right?


----------



## Vadium

ContrapunctusXV said:


> So you need to do manual offsets? Time adjustment delay isn't right?


I made this picture with already inserted MIDI time adjustment delay


----------



## Ihnoc

Vadium said:


> For now, in Reaper, for correct last spiccato notes in 333ms mode I need to shift a Sustain keyswitch to right as in pic.


So I've noticed this myself in Cubase. If I raise the delay to 333 and the track offset to -333, the maths in the _script_ still work out but I'm getting the results you are.

I have wondered if this is, perhaps, buffer based. Could you tell me what your sample buffer is?


----------



## Vadium

Ihnoc said:


> Could you tell me what your sample buffer is?


256 in Reaper and 256/384 in Cubase. As noticed Tack, in his Reaper script (that make same purposes as AVO), it's necessary to leave a bit of headroom between the negative delay limit and the largest delayed group. So it can be useful to set -375 there instead of -333. - May be for AVO also it needs to set different values in track delay and in the script?


----------



## Henu

@Vadium and @Ihnoc : Isn't this the exact same problem I was having (and still haven't figured out a workaround) in page 3 of this thread?

Meaning that the articulations just aren't following the delay set by the script, but are constantly playing that 300ms in advance?


----------



## Vadium

Henu said:


> Isn't this the exact same problem


Oh yeah. apparently, I have long read the beginning of this thread and managed to forget about this problem..

for cubase see a recent video 

My current idea for Reaper is:

Script on a tracks: customized delay for 1 midi ch = -333, for 2 midi ch = 250, etc.
Kontakt: 1ch: Adv legato selected and all other purged, 2ch: legato std, etc.


----------



## tcb

Thanks for your sharing. It sounds great. I am checking it.


----------



## ContrapunctusXV

Vadium said:


> I made this picture with already inserted MIDI time adjustment delay


But isn't Time adjustment delay offsetting sound going out from Kontakt i.e not delaying Midi in? Since adding this plugin to a MIDI track doesn't make a difference I don't really know how to get a MIDI delay.


----------



## ContrapunctusXV

Vadium said:


> Oh yeah. apparently, I have long read the beginning of this thread and managed to forget about this problem..
> 
> for cubase see a recent video
> 
> My current idea for Reaper is:
> 
> Script on a tracks: customized delay for 1 midi ch = -333, for 2 midi ch = 250, etc.
> Kontakt: 1ch: Adv legato selected and all other purged, 2ch: legato std, etc.



What script are Reaper users using?


----------



## Vadium

ContrapunctusXV said:


> What script are Reaper users using?


There isn't really useful script for Reaper, as I know.

Now I test my Bidule patch for it (see att.pic), but it introduces own strange bugs - first note of notes with higher velocity diapason after low velocity notes sounds with accents, and I don't know why..



Ihnoc said:


> I have wondered if this is, perhaps, buffer based.


Idea! May be it based on missing delay for CC controls and keyswitches?
A think, additional slider needs for keyswitches (both CC58 and notes) personal delay. If a track delay set to -333, what delay have keyswitches in script 1.5? And what delay has messages like CC1 and CC1? As I think, all keyswitch for now is -333. So, shifted to -333ms legato keyswitch in my example as fact affects to previous staccato note. If I insert delay only for keyswitches, transitions between staccato and legato starts to be ok (strange, but with values not exactly 333, but, for example, 200ms)


----------



## Vadium

yes, it works. Ihnoc, just add to script next options: delay for keyswitches (CC/key), delay for all other messages/cc


----------



## ContrapunctusXV

Vadium said:


> There isn't really useful script for Reaper, as I know.
> 
> Now I test my Bidule patch for it (see att.pic), but it introduces own strange bugs - first note of notes with higher velocity diapason after low velocity notes sounds with accents, and I don't know why..
> 
> 
> Idea! May be it based on missing delay for CC controls and keyswitches?
> A think, additional slider needs for keyswitches (both CC58 and notes) personal delay. If a track delay set to -333, what delay have keyswitches in script 1.5? And what delay has messages like CC1 and CC1? As I think, all keyswitch for now is -333. So, shifted to -333ms legato keyswitch in my example as fact affects to previous staccato note. If I insert delay only for keyswitches, transitions between staccato and legato starts to be ok (strange, but with values not exactly 333, but, for example, 200ms)


Then essentially the control panel is useless in Reaper?


----------



## Vadium

ContrapunctusXV said:


> Then essentially the control panel is useless in Reaper?



I thought you were asking about a solution built entirely with Reaper, without AVO script (control panel) - by JS or lua scripting

This JS MIDI Delay on your picture can be used as an overall miditrack delay - as a pair for AVO script (control panel) in Kontakt.

But in Reaper 2 bugs still present:
1)with 1st note (in Cubase all is ok, but in Reaper it still be)
2)delay of keyswitches


----------



## alfredsolax

Just want to thanks Alex once again for this wonderful script! Working like a charm on my VEP7 template + ComposerToolsPro (I'm dealing with the delay CC13 there!).






Here below a track where I've used mostly CSS (aside from the real violin and the Spitfire Symphonic Strings Evolutions in the first part). Enjoy!


----------



## Vadium

Patrick de Caumette said:


> i cannot use a lower velocity for a warmer timber.


in such instruments, timbre (or layers of samples) controlled not by velocity, but CC1, isn't it?
The velocity data used only for articulation selection in this case, not for timbre, as I understand


----------



## Patrick de Caumette

Vadium said:


> in such instruments, timbre (or layers of samples) controlled not by velocity, but CC1, isn't it?
> The velocity data used only for articulation selection in this case, not for timbre, as I understand


actually, timbre is determined by both, but i just checked and CC1 overrides velocities in this case, so we are all good!
Thank you again!


----------



## chrisr

alfredsolax said:


> Here below a track where I've used mostly CSS (aside from the real violin and the Spitfire Symphonic Strings Evolutions in the first part). Enjoy!




Lovely work


----------



## Mrted

Hi Where do I place this script on a Mac ? Can't find Kontakt user script folder....
Are there other existings scripts especially made for Logic X ? Thank you


----------



## Ihnoc

Mrted said:


> Hi Where do I place this script on a Mac ? Can't find Kontakt user script folder....
> Are there other existings scripts especially made for Logic X ? Thank you


Apologies; I don't use a Mac so can't comment exactly where this would be. However, if you try to save your own script, the folder that is used will open. You should be able use that filepath.


----------



## Mrted

Perfect I could load the multi script. Sorry for the newbie question, I'm totally new with scripts. 
Is there a tutorial somewhere ?
1) The script is for controling keyswitch with control change ? For ex tremolo KS is assigned to 25, when I turn my keyboard (Komplete Kontrol S61) controller knob number 25 it should switch to Tremolo ? (Not working here
2) The delay: what's the aim of it ?


----------



## Ihnoc

Mrted said:


> Perfect I could load the multi script. Sorry for the newbie question, I'm totally new with scripts.
> Is there a tutorial somewhere ?
> 1) The script is for controling keyswitch with control change ? For ex tremolo KS is assigned to 25, when I turn my keyboard (Komplete Kontrol S61) controller knob number 25 it should switch to Tremolo ? (Not working here
> 2) The delay: what's the aim of it ?



No this script does not enable keyswitch changes via CC. Use CC58 as in Cinematic Studio Strings to do that. Check that library's manual for more details. The delay aligns all the articulations within that library to compensate for the long legato transitions. If you don't find the library's transitions a problem for you, it won't be very useful!


----------



## Mrted

What I don't get is 
- if on a track I have various legato speed, I need to change track delay each time legato speed (velocity) change ? by using delay control cc 13 ?


----------



## Ihnoc

Mrted said:


> What I don't get is
> - if on a track I have various legato speed, I need to change track delay each time legato speed (velocity) change ? by using delay control cc 13 ?



You should not need to set CC13 (or whatever controller number you want) above 64 more than once, if you want the script to work all the time. The idea is that you set the track delay in your DAW to the longest delay in the script (which is 300ms by default for the slowest legato transition, so set the track delay to -300ms).

The script then subtracts the other delays below in the UI so they land on the beat if you quantise.

The delay CC (13 by default) is there to turn the script off quickly for live recording, and back on for rendering and polish.

In the next version, there will be an always on option if you want to use another library for sketching and drag it onto CSS.


----------



## sathyva

@Ihnoc

thanks a lot for your wonderful script ! It works really great !
I only have one question :
I'm currently using the 1.5 version and I still have a timing issue with the first note of a legato phrase, I mean there is still an offset on it :(
I checked the version history and that issue was supposed to be gone with version 1.2.
I've already read this entire thread ( just in case... ) but still didn't find a good solution for me except re-offsetting the first notes by hand 

Any idea someone ?
Thanks to all
cheers


----------



## sbarrettmusic

Thanks for creating this script!

I am testing this in Logic and having some issues. I set up 3 different tracks, 1 that uses Logic's articulation set for articulation switching, 1 that uses SkiSwitcher for articulation switching, and another with key switches played in manually. Each track has different issues.

The track with SkiSwitcher - Some of the articulations don't switch correctly. If I set a note to sFz or Spiccato, CSS will switch to Measured Trem instead for some reason. If I bypass the script, then the the articulations switch correctly. No issues with any other articulations, only sFz and Spiccato.

- Also, legatos play back reliably on the grid as long as notes are overlapping and triggering legato transitions, but if there is a space between notes, the next start note is triggered early even if it is over a measure later.

The other two tracks both are showing the same results - legato sustains do not play back reliably at all. Note delays seem to be all over the place. Other legatos (tremolo and marcato) do play back on the grid, but there is an audible gap between notes, which leads me to believe the legato transitions are not playing for some reason...

I'm guessing the different behavior between the tracks has something to do with the way the keyswitches are being sent, but I'm not sure. I do see a difference in the readout on the script as is plays back. On the track with SkiSwitcher (which mostly plays back legatos correctly on the grid), the script says "legato phrase length: 0" for the first note that plays, then all of the following notes say "legato phrase length: 1" until a new phrase starts. On the other two tracks, it starts at 0 and keeps going up 1, 2, 3, 4, etc. for each note that overlaps.

Any one else experiencing this behavior, or using this script successfully in Logic?


----------



## Ihnoc

Script updated to 1.6.

Added option to toggle the delay on all of the time, if you never want to turn it off. The option to enable or disable delay by CC is still available
Added option to delay all CC data sent to the instrument as well as the keyswitch CC and notes. CC data is delayed by the same amount as the articulation playing. This results in better sync between things like modulation and notes
Updated the default delay speeds to match the documentation better: 330ms for slow legato/portamento, 250ms for medium legato, 100ms for fast legato/longs, 60ms for shorts


----------



## Ha'Vi

Ihnoc said:


> Script updated to 1.6.
> 
> Added option to toggle the delay on all of the time, if you never want to turn it off. The option to enable or disable delay by CC is still available
> Added option to delay all CC data sent to the instrument as well as the keyswitch CC and notes. CC data is delayed by the same amount as the articulation playing. This results in better sync between things like modulation and notes
> Updated the default delay speeds to match the documentation better: 330ms for slow legato/portamento, 250ms for medium legato, 100ms for fast legato/longs, 60ms for shorts



Once again, thankyou so much for this! I cannot imagine using CSS without this script. I llok forward to trying out the new version.


----------



## Vadium

Ihnoc said:


> Script updated to 1.6.


Thanks a lot! but.. hmm.. still not works for me in Cubase/Reaper, strange.. overall rhythm isn't equal


----------



## Gingerbread

This is a wonderful script...BUT....for a tech-noob like me who barely knows how to turn on my computer, it was a bit frustrating trying to figure out how to install and run it. I did figure it out, and am sharing it here---perhaps in case I myself need to re-install it in the future!



*INSTALL INSTRUCTIONS FOR TECH-DUMMIES LIKE ME* (Mac only):


1. Download the script found on page 1 of this thread, to your Downloads folder. It will be a .nkp file.

2. This file, which is a script, needs to be moved to a folder, which is found at:

*[Mac volume] > Users > [User name] > Documents > Native Instruments > Kontakt [current version] > presets > Multiscripts*


3. Put the file in the Multiscripts folder

4. Ensure DAW and Kontakt are closed. Then open DAW, and an instance of Kontakt with a CSS patch.

5. In Kontakt, click the KSP button (upper right corner, underneath the exclamation-point)

6. In the KSP gui, click on 'Preset' and select User > "AVO - CSS Control Panel"


NOTE: Since I don't have Windows, I can only assume the file path to the Multiscript folder on a Windows PC is the same starting at the Documents folder.


----------



## renochew

sathyva said:


> @Ihnoc
> 
> thanks a lot for your wonderful script ! It works really great !
> I only have one question :
> I'm currently using the 1.5 version and I still have a timing issue with the first note of a legato phrase, I mean there is still an offset on it :(
> I checked the version history and that issue was supposed to be gone with version 1.2.
> I've already read this entire thread ( just in case... ) but still didn't find a good solution for me except re-offsetting the first notes by hand
> 
> Any idea someone ?
> Thanks to all
> cheers



Yes, I have the same problem. I am on Reaper.

I am not sure if it is related, but the "phrase length" count won't reset after playback stop, meaning the phrase count will keep adding and go over hundreds. I am guessing if the script assume the phrase is not ended yet. They don't know it is actually the first note of a phrase? 

Thanks.


----------



## sathyva

renochew said:


> Yes, I have the same problem. I am on Reaper.
> 
> I am not sure if it is related, but the "phrase length" count won't reset after playback stop, meaning the phrase count will keep adding and go over hundreds. I am guessing if the script assume the phrase is not ended yet. They don't know it is actually the first note of a phrase?
> 
> Thanks.



I'll try the 1.6 version to see if it helps...

Thanks


----------



## Ihnoc

renochew said:


> Yes, I have the same problem. I am on Reaper.
> 
> I am not sure if it is related, but the "phrase length" count won't reset after playback stop, meaning the phrase count will keep adding and go over hundreds. I am guessing if the script assume the phrase is not ended yet. They don't know it is actually the first note of a phrase?
> 
> Thanks.



That's really fascinating and might highlight where these issues are coming from. As a test, could you try adding the Midi Monitor multiscript (its in the Factory folder) to a Kontakt instance and tell me what Reaper sends to Kontakt on start and stop of the transport?

In Cubase CC123 seems to call a 'All Notes Stop' but its possible other DAWs don't do this and I need to catch some other case or deal with the problem in a different way.


----------



## renochew

Ihnoc said:


> That's really fascinating and might highlight where these issues are coming from. As a test, could you try adding the Midi Monitor multiscript (its in the Factory folder) to a Kontakt instance and tell me what Reaper sends to Kontakt on start and stop of the transport?
> 
> In Cubase CC123 seems to call a 'All Notes Stop' but its possible other DAWs don't do this and I need to catch some other case or deal with the problem in a different way.



Hi Ihnoc, I created a dummy test scene with your script set up, this is what it come out from the midi monitor.






As far as I can see, I don't think there is any extra midi message beside what I have set in the midi editor. I actually tried this on Cubase too, I don't see any extra cc message either, may be I am misunderstanding you?

Thanks.


----------



## holing

Gingerbread said:


> This is a wonderful script...BUT....for a tech-noob like me who barely knows how to turn on my computer, it was a bit frustrating trying to figure out how to install and run it. I did figure it out, and am sharing it here---perhaps in case I myself need to re-install it in the future!
> 
> 
> 
> *INSTALL INSTRUCTIONS FOR TECH-DUMMIES LIKE ME* (Mac only):
> 
> 
> 1. Download the script found on page 1 of this thread, to your Downloads folder. It will be a .nkp file.
> 
> 2. This file, which is a script, needs to be moved to a folder, which is found at:
> 
> *[Mac volume] > Users > [User name] > Documents > Native Instruments > Kontakt [current version] > presets > Multiscripts*
> 
> 
> 3. Put the file in the Multiscripts folder
> 
> 4. Ensure DAW and Kontakt are closed. Then open DAW, and an instance of Kontakt with a CSS patch.
> 
> 5. In Kontakt, click the KSP button (upper right corner, underneath the exclamation-point)
> 
> 6. In the KSP gui, click on 'Preset' and select User > "AVO - CSS Control Panel"
> 
> 
> NOTE: Since I don't have Windows, I can only assume the file path to the Multiscript folder on a Windows PC is the same starting at the Documents folder.



I had been searching for this....THANK YOU!!!


----------



## filipjonathan

Wait, does this work in Cubase or not?


----------



## Ihnoc

filipjonathan said:


> Wait, does this work in Cubase or not?



It is a Kontakt Multiscript. It works in any DAW as it is hosted within Kontakt.


----------



## filipjonathan

Ihnoc said:


> It is a Kontakt Multiscript. It works in any DAW as it is hosted within Kontakt.


Oh wow. Great! Thank you! I've seen similar scripts or whatnot for CSS in this forum but they weren't for Cubase, that's why I asked.


----------



## filipjonathan

@Ihnoc So let me just clarify this, I must use CC58 to switch between arts, can't use default CC's?

The track offset is still -300, not 330?

I don't understand the _Delay non-KS CC_ and _Delay KS/KS CC. _The first one was on by default. Is that how it should be?


----------



## Ihnoc

CC58 is the default CC to change articulations in the Cinematic Studio Series instruments. If you have changed it from this, you can set the script to the same CC as what you have set in CSS.

You can also use keyswitches, and these will work too. The default keyswitches are set as the default keyswitches in the script. Everything is set to work out of the box with no tweaking. The only question really is whether you want the delay on all the time or toggled via the "Delay CC", which is CC13 by default.

"Delay non-KS CC" delays _any CC data_ that _is not_ the keyswitch CC and I recommend this being on as it will delay your CC1 modulation for example. "Delay KS/KS CC" delays the keyswitch CC and keyswitches. I was asked to add this, but don't think it is particularly useful.

The default delay is set to the slowest legato transition speed. I made the mistake in writing this as 300ms originally but it is defined as 330ms in the manual. I strongly recommend anyone using the script to find the numbers that suit them though; I've personally found the shorts delay for basses to be too slow, for example.


----------



## filipjonathan

Ihnoc said:


> CC58 is the default CC to change articulations in the Cinematic Studio Series instruments. If you have changed it from this, you can set the script to the same CC as what you have set in CSS.
> 
> You can also use keyswitches, and these will work too. The default keyswitches are set as the default keyswitches in the script. Everything is set to work out of the box with no tweaking. The only question really is whether you want the delay on all the time or toggled via the "Delay CC", which is CC13 by default.
> 
> "Delay non-KS CC" delays _any CC data_ that _is not_ the keyswitch CC and I recommend this being on as it will delay your CC1 modulation for example. "Delay KS/KS CC" delays the keyswitch CC and keyswitches. I was asked to add this, but don't think it is particularly useful.
> 
> The default delay is set to the slowest legato transition speed. I made the mistake in writing this as 300ms originally but it is defined as 330ms in the manual. I strongly recommend anyone using the script to find the numbers that suit them though; I've personally found the shorts delay for basses to be too slow, for example.


Thanks man!!! I really appreciate it!


----------



## Jeremy Gillam

Hi everyone, I'm just now taking a look at this fabulous script, and I'm curious if anyone has this working with Cinematic Studio Brass in addition addition to the string libraries?


----------



## Ihnoc

I have a prototype working for Cinematic Studio Brass thanks to a composer who got in contact.

However there are a couple of things I want to improve before releasing it. Stay tuned!


----------



## Jeremy Gillam

Ihnoc said:


> I have a prototype working for Cinematic Studio Brass thanks to a composer who got in contact.
> 
> However there are a couple of things I want to improve before releasing it. Stay tuned!


Fabulous, I’ll look forward to that. I appreciate your work on this, thank you!


----------



## muziksculp

Hi,

Any Videos showing this script in action ?

I use Studio One Pro 5, and have CSS, and CSB, will this Kontakt Script work for CSB as well ?

What about track latency settings in the DAW, does this script need the user to adjust the track latency settings ? or once you have the script installed, it does all that automatically ? so I should not have any track latency values (keep is at zero latency), let the script do the job ?

I'm also wondering how the developer of these libraries Alex, intended us to use them without this helper script ? 

Basically if this script didn't exist, I would say this is a big weakness of CSS and CSB as far as practical usage is concerned. or am I wrong here ?

Hope I didn't overdo the questions.

Thanks.


----------



## muziksculp

Hello,

Anyone knows what this Kontakt Script actually does ? 

Thanks.


----------



## filipjonathan

Hey @Ihnoc , another question. I created expression maps for CSS but when I try using your script with it, it doesn't work. Am I doing something wrong? The expression maps use the default keyswitches, not cc58 though, could this be the issue? I also have 3 different instances of CSS per Kontakt with the different midi channels (legatos, longs and shorts). Maybe that's the problem?

*EDIT* I just tried creating an expression map where everything is in one instance of CSS and it worked although when I have shorts, then legato notes after that, the first legato note starts a bit early so it needs to be manually moved.


----------



## Ihnoc

filipjonathan said:


> Hey @Ihnoc , another question. I created expression maps for CSS but when I try using your script with it, it doesn't work. Am I doing something wrong? The expression maps use the default keyswitches, not cc58 though, could this be the issue? I also have 3 different instances of CSS per Kontakt with the different midi channels (legatos, longs and shorts). Maybe that's the problem?
> 
> *EDIT* I just tried creating an expression map where everything is in one instance of CSS and it worked although when I have shorts, then legato notes after that, the first legato note starts a bit early so it needs to be manually moved.



The script should react the exact same way for keyswitches. Do double check that you have your Delay CC on (CC13 by default), or set it the delay to Always On. Dynamics CC Shorts and One Note Trills are not dependant on the delay being on. The script will tell you what it is doing as you play in its status bar.


----------



## Dan Light

Been using this script, thank you @Ihnoc

Having an issue I can't seem to solve though. The delay offset for legato notes is ALWAYS 100ms. No matter the note velocity. Is there something I'm missing here?

When I keyswitch to shorts, it changes accordingly to the 60ms. It's just that the legato notes aren't adapting to the velocity.

I'm on Cubase btw.


----------



## erikradbo

Many thanks @Ihnoc both for the script and you active replies in this thread.

I was using the really nifty Thanos solution by @NoamL up until now, but was hoping this built in version would make it even easier, and also allowed me to used art conductor art sets in parallell.

I have been reading this thread thoroughly, and using version 1.6 in Logic 10.5.1 I have the same issue that many had before: the first note in a phrase is played too early, unless I make it velocity >100. Regardless of velocity the legato phrase length keeps counting up when restarting the phrase, so as you pointed out earlier it seems as if it doesn't recognise it having a fresh start.

Did others have this issue in Logic, and are Cubase users doing the solution earlier in this thread? Or am I just missing something that could be easily fixed?

EDIT: This doesn't occur when starting up the project and playing the track för the first time, which would be expected, since everything is reseted from start.


----------



## jason3.14

Dan Light said:


> Been using this script, thank you @Ihnoc
> 
> Having an issue I can't seem to solve though. The delay offset for legato notes is ALWAYS 100ms. No matter the note velocity. Is there something I'm missing here?
> 
> When I keyswitch to shorts, it changes accordingly to the 60ms. It's just that the legato notes aren't adapting to the velocity.
> 
> I'm on Cubase btw.



I'm having the exact same issue! Trying to use script version 1.6, in Kontakt 6.4.1 within Reaper. What's interesting is that earlier today it seemed like the delay time was adjusting appropriately, but now it's not... not sure what changed.


----------



## muziksculp

Looking forward to see an updated CSS that offers a great legato functionality using only one negative track delay compensation value. Hopefully soon. 

According to Alex.W , It will be released after CSW is out, which will hopefully be out soon, maybe next month ? we shall see. He is surely taking his time to release CSW.


----------



## siglr

Since I use one track and Kontakt/CSS instance per articulation, can I set the offset for each track based on the selected articulation instead? I'm not finding the suggested values for each articulation. What are the default ones used in the script for example?


----------



## Ihnoc

siglr said:


> Since I use one track and Kontakt/CSS instance per articulation, can I set the offset for each track based on the selected articulation instead? I'm not finding the suggested values for each articulation. What are the default ones used in the script for example?



You can use the defaults from the script sure, but probably better to use the documentation in the manual (which is what I used).


----------



## Dewdman42

can anyone explain to me what the legato issue is, WITHOUT using any script to correct anything...what does CSS do with legato timing that is a problem?


----------



## Symfoniq

Dewdman42 said:


> can anyone explain to me what the legato issue is, WITHOUT using any script to correct anything...what does CSS do with legato timing that is a problem?



I don't consider it an "issue" so much as a "workflow preference."

CSS has multiple legato transition speeds, and they have differing latencies. So if you quantize notes to the bar when using CSS, you'll hear them slightly after the beat. People like me just adjust the note-on positions manually, because the results are _worth it_.


----------



## Dewdman42

I understand already that different articulations have different latencies...but I am wanting to understand exactly the specific problem with the legatos...like there is something where the first note has one latency and the secondary notes have a different latency?


----------



## Ihnoc

Dewdman42 said:


> I understand already that different articulations have different latencies...but I am wanting to understand exactly the specific problem with the legatos...like there is something where the first note has one latency and the secondary notes have a different latency?



Yes, and yes.

In Cinematic Studio Strings, legato notes have (as far as I can tell) the same attack as their sustains (makes sense, as you'd be applying the legato transitions on the transition and not the first note's start). The attack of subsequent notes are different lengths based on velocity of the note as documented in its manual. Simply:

First note in a legato phrase has roughly 100ms attack
Fast legato transitions have 100ms attack
Medium legato transitions have 250ms attack
Slow legato transitions have a 333ms attack
The "problem" is that the standard practice of just adding a negative track delay to more closely align the notes to the grid becomes further inconsistent when you use different legato velocity.

This is a feature of the library though. Depending on tempo and emotion for the moment, that slow legato transition sounds wonderful, awful for fast runs etc. It's no different than the attack time between a staccato and a portamento in any other library - the time to the note sounding is different. The great thing is that Alex (the developer) _documented this_ so rather than offsetting notes by guesswork, one can move the notes around with macros or scripts.

Cinematic Studio Brass also has this.


----------



## Symfoniq

Dewdman42 said:


> I understand already that different articulations have different latencies...but I am wanting to understand exactly the specific problem with the legatos...like there is something where the first note has one latency and the secondary notes have a different latency?



No. I think the "issue" people are working around is that there are three legato transition speeds depending on velocity. So you can't move all notes the same distance before the beat to account for the latency, since it varies depending whether it's a fast, medium, or slow transition.

EDIT: @lhnoc explained it better.


----------



## CATDAD

Dewdman42 said:


> I understand already that different articulations have different latencies...but I am wanting to understand exactly the specific problem with the legatos...like there is something where the first note has one latency and the secondary notes have a different latency?



The first unconnected note does have less latency than the rest but that's not that uncommon for legato articulations. The challenge with latency management for CSS is that a single legato articulation patch can have several significantly different latencies depending on the velocity of the note, and they can get _quite delayed_. Lighter velocities produces slower, more luxurious transitions that require a longer delay while harder velocities produce faster ones. The slowest ones in the advanced legato patches go up to ~333ms making live playability challenging for many (though of course they sound fantastic when you want some romance in your strings!) and programming can be tedious with each note potentially having a different latency in finessed passages. Obviously this delay is a natural trade-off for such a versatile library but people would like some extra tech to ease the pain a little bit.

They do include more versatile-use "classic" patches that have less variable latency for those who prefer them or want to use them to play-in and massage in to their "advanced" patches after though.

Edit: @Ihnoc beat me to the draw!


----------



## Dewdman42

Ihnoc said:


> The "problem" is that the standard practice of just adding a negative track delay to more closely align the notes to the grid becomes further inconsistent when you use different legato velocity.



Thanks for that explanation. Your KSP script adjusts legato notes based on velocity? I'm assuming it listens to the keyswitches to keep track of what articulation is currently in effect...then if it happens to be the advanced legato, also takes velocity into consideration. yea?


----------



## David Kudell

Took me a while to learn, but the trick on CSS delay is to play your line in, then afterwards just paint the velocities in to be the same, whether that's fast (set velocity to a higher amount and use 100ms or medium (set velocity to medium number and use delay 250ms). Quantize, then set your track delay to 100 or 250. Done.


----------



## Robert_G

Ihnoc said:


> First note in a legato phrase has roughly 100ms attack



Not sure where you get this, but the first note has no delay....at least not that I've ever noticed, nor is it in the manual where the delay is discussed.


----------



## Ihnoc

Dewdman42 said:


> Thanks for that explanation. Your KSP script adjusts legato notes based on velocity? I'm assuming it listens to the keyswitches to keep track of what articulation is currently in effect...then if it happens to be the advanced legato, also takes velocity into consideration. yea?



Listens to keyswitches and keyswitch CC that CSS uses yeah. That was the large part of the work, emulating keyswitching as closely as possible and writing the UI to allow the user to match the settings they have in CSS. Unfortunately because the library is locked it wasn't possible to introduce it on the instrument level. Ultimately, if Alex is looking to add his own support for this kind of thing (as AudioBro has done for Genesis), I can hit delete on this whole script.

Alex did an amazing job on the consistency of this library and retain such musicality.



Robert_G said:


> Not sure where you get this, but the first note has no delay....at least not that I've ever noticed, nor is it in the manual where the delay is discussed.



Considering that the shorts have a 60ms attack before hitting the note fully, I'd think the sustains would have a similar value at the least (bow wind up). I've found 100ms to be about the right value for me, but I've exposed this assumption in the latest version of the script (which I'll eventually release once I've confirmed I've not introduced a new issue) - more interested in writing music and setting up Black Friday purchases right now.


----------



## muziksculp

David Kudell said:


> Took me a while to learn, but the trick on CSS delay is to play your line in, then afterwards just paint the velocities in to be the same, whether that's fast (set velocity to a higher amount and use 100ms or medium (set velocity to medium number and use delay 250ms). Quantize, then set your track delay to 100 or 250. Done.



Yes, that's one way to deal with the multiple delays that is the easiest to implement. But then this defeats the whole concept of having three different delays. 

I think Alex W. has something new that he will introduce in the next update of CSS, and possibly CSB, and CSSS, he mentioned it in an email reply to me a few months ago, that there will be some legato functionality related improvement, change, or addition via an update after CSW is released.


----------



## Symfoniq

muziksculp said:


> I think Alex W. has something new that he will introduce in the next update of CSS, and possibly CSB, and CSSS, he mentioned it in an email reply to me a few months ago, that there will be some legato functionality related improvement, change, or addition via an update after CSW is released.



I wouldn’t mind seeing an approach similar to the one Audio Imperia took in Nucleus, where a knob can be used to turn the legato delay down or off while playing the line. When finished, turn the knob up, and add track delay to taste. It’s about the only thing that would make CSS better for me (that and single-articulation patches a la Spitfire).

Yes, those are both nitpicks.


----------



## RMH

Ihnoc said:


> *Update 1.6*
> 
> Added option to toggle the delay on all of the time, if you never want to turn it off. The option to enable or disable delay by CC is still available
> Added option to delay all CC data sent to the instrument as well as the keyswitch CC and notes. CC data is delayed by the same amount as the articulation playing. This results in better sync between things like modulation and notes
> Updated the default delay speeds to match the documentation better: 330ms for slow legato/portamento, 250ms for medium legato, 100ms for fast legato/longs, 60ms for shorts


Thank you!
And when do update?


----------



## Rufus Loacker

Do I understand correctly that I can use this same script, tweaking the delay times, also on Cinematic Studio Brass, right? The underlining engine should work the same


----------



## Supremo

I have come up with a nice and smooth workaround on Reaper by using a built-in note-hold JS plugin with some slight script adjustment.
Works like a charm for me. No more delay tweakings whatsoever. No Kontakt multiscripts needed.
I simply insert it as an input plugin on tracks with Cinematic Series instruments and play straight away without having any annoying delays because the input plugin prohibits legato transitions between the notes during performing. After I finish recording, I then trigger my own custom action that makes all notes legato in the recorded midi and voila!

God I love Reaper!


----------



## Rufus Loacker

Supremo said:


> I have come up with a nice and smooth workaround on Reaper by using a built-in note-hold JS plugin with some slight script adjustment.
> Works like a charm for me. No more delay tweakings whatsoever. No Kontakt multiscripts needed.
> I simply insert it as an input plugin on tracks with Cinematic Series instruments and play straight away without having any annoying delays because the input plugin prohibits legato transitions between the notes during performing. After I finish recording, I then trigger my own custom action that makes all notes legato in the recorded midi and voila!
> 
> God I love Reaper!



Even with that, you still have to tweak the different legato speeds, and the result will not be aligned to the grid, no?


----------



## jason3.14

Supremo said:


> I have come up with a nice and smooth workaround on Reaper by using a built-in note-hold JS plugin with some slight script adjustment.
> Works like a charm for me. No more delay tweakings whatsoever. No Kontakt multiscripts needed.
> I simply insert it as an input plugin on tracks with Cinematic Series instruments and play straight away without having any annoying delays because the input plugin prohibits legato transitions between the notes during performing. After I finish recording, I then trigger my own custom action that makes all notes legato in the recorded midi and voila!
> 
> God I love Reaper!



Really interested in these details as well! Could you elaborate further on which JS plugin you use, and how the custom script works?


----------



## Supremo

Rufus Loacker said:


> Even with that, you still have to tweak the different legato speeds, and the result will not be aligned to the grid, no?


It will be perfectly aligned to the grid if I activate midi input quantization before I start playing. But even without that it’s sufficient to follow the click while playing, provided the CSS tracks delay compensation is set at -250.


----------



## Supremo

jason3.14 said:


> Really interested in these details as well! Could you elaborate further on which JS plugin you use, and how the custom script works?


I can make a video tomorrow with the step by step guide to illustrate how it works.

The JS plugin I refer to is called “Legato Control”. It’s a built-in Reaper plugin.
I don’t use its Legato function but it also has a “Note Hold” feature with On/Off mode which you can assign to the Sustain pedal and control the notes length as if you were using a real sustain while playing. What it does actually, it doesn’t act as an ordinary sustain that would trigger legato transitions, and hence causing delays, but keep the note pressed until the next note is played and will send a Note-Off message killing the previous note and thus not allowing a legato during playing. So you just press your sustain pedal and play smoothly without any legato delays.


----------



## Ihnoc

Supremo said:


> I have come up with a nice and smooth workaround on Reaper by using a built-in note-hold JS plugin with some slight script adjustment.
> Works like a charm for me. No more delay tweakings whatsoever. No Kontakt multiscripts needed.
> I simply insert it as an input plugin on tracks with Cinematic Series instruments and play straight away without having any annoying delays because the input plugin prohibits legato transitions between the notes during performing. After I finish recording, I then trigger my own custom action that makes all notes legato in the recorded midi and voila!
> 
> God I love Reaper!



Personally despise the Reaper experience, but I'm glad you've found a solution that works better in that DAW. It sounds like though this only works for a legato line, not for all the other articulations that also have a varied level of attack? Interested in your video.


----------



## Rufus Loacker

Yeah, my problem with that kind of workflow is that the fast legatos and short notes are then ahead of the beat, so midi tweaking is still required and especially cleanup is required for midi exporting


----------



## Paul Jelfs

Hi Alex (Sorry if i have got that wrong)

I tried to use this in Windows 10, Cubase, and like earlier posters said, everything was getting delayed 100ms only - I would love to be able to use this tool, and it is probably me getting something wrong ! 

I installed it in to the scripts , user in Kontakt, and then loaded it up in Kontakt , in my Daw, with the Violins 1 with advanced legato. 

Is there a walkthrough for windows users, or am I hitting a known Issue ? Any help would be great  

There is a fair few buttons on the 1.6 release, so maybe I am not setting it up right? 🤷‍♂️

Thank you

PJ


----------



## Rufus Loacker

Paul Jelfs said:


> Hi Alex (Sorry if i have got that wrong)
> 
> I tried to use this in Windows 10, Cubase, and like earlier posters said, everything was getting delayed 100ms only - I would love to be able to use this tool, and it is probably me getting something wrong !
> 
> I installed it in to the scripts , user in Kontakt, and then loaded it up in Kontakt , in my Daw, with the Violins 1 with advanced legato.
> 
> Is there a walkthrough for windows users, or am I hitting a known Issue ? Any help would be great
> 
> There is a fair few buttons on the 1.6 release, so maybe I am not setting it up right? 🤷‍♂️
> 
> Thank you
> 
> PJ




CC13 is the "on-off" script controller. You activate it (put it at 127) when playing what you wrote, and deactivate it when you're recording, so the midi data doesn't get delayed.


----------



## Paul Jelfs

Ah I knew about CC13 being the script controller -But perhaps I left it on while i played the part through - and then listening back to was a mess! 

Need to check again , turn it off , play piece in , and activate via cc13. Any quantizing or just leave alone and move any notes that are off due to dodgy playing ?


----------



## Supremo

Here is the video on how I deal with CSS legato on Reaper.

1. The CSS midi track has an input plugin inserted, which allows to trigger the note hold. I have it assigned to my sustain pedal, and everytime I press the pedal, it gets ON. Once I release the pedal, it turns OFF.

2. The CSS track with long arts has a delay compensation set at -150.

3. I also have a custom action/script (the one in the bottom of the screen). 

So that's it. I simply play on a keyboard and use my pedal to keep notes pressed and sustained, whenever needed. That sort of sustain (note-hold), however, prevents legato transitions by sending a note-off message to the previously pressed note(s). 

Once I finish recording, I just press that CSS button, which is my custom action, and all notes in the Midi item become legato.


----------



## Paul Jelfs

Thank you for the video - It helped me understand - a little more ! 

So you do not even use the 1.6 legato fix plugin if I am following you right? - Just an Input plugin for sustain or note hold and a custom script to turn them in to legato ? 

Cheers

Pj


----------



## Supremo

Paul Jelfs said:


> Thank you for the video - It helped me understand - a little more !
> 
> So you do not even use the 1.6 legato fix plugin if I am following you right? - Just an Input plugin for sustain or note hold and a custom script to turn them in to legato ?
> 
> Cheers
> 
> Pj


Yes, exactly.


----------



## jason3.14

Ihnoc said:


> I have a prototype working for Cinematic Studio Brass thanks to a composer who got in contact.
> 
> However there are a couple of things I want to improve before releasing it. Stay tuned!



Hi, any updates on this?  Looking forward to it!


----------



## jason3.14

Supremo said:


> Here is the video on how I deal with CSS legato on Reaper.
> 
> 1. The CSS midi track has an input plugin inserted, which allows to trigger the note hold. I have it assigned to my sustain pedal, and everytime I press the pedal, it gets ON. Once I release the pedal, it turns OFF.
> 
> 2. The CSS track with long arts has a delay compensation set at -150.
> 
> 3. I also have a custom action/script (the one in the bottom of the screen).
> 
> So that's it. I simply play on a keyboard and use my pedal to keep notes pressed and sustained, whenever needed. That sort of sustain (note-hold), however, prevents legato transitions by sending a note-off message to the previously pressed note(s).
> 
> Once I finish recording, I just press that CSS button, which is my custom action, and all notes in the Midi item become legato.



Thanks for the details - sorry could you clarify this in more detail (pretty noob here). I got ReaPack and downloaded the JS plugins to include Legato Control. I see that if I put Legato Control before CSS and manually set Note Hold to on, it has the effect of not allowing the legato transitions to take place like you mentioned. However, I don't know how to set it to work with the sustain pedal, or know how your custom action works exactly.


----------



## Supremo

jason3.14 said:


> Thanks for the details - sorry could you clarify this in more detail (pretty noob here). I got ReaPack and downloaded the JS plugins to include Legato Control. I see that if I put Legato Control before CSS and manually set Note Hold to on, it has the effect of not allowing the legato transitions to take place like you mentioned. However, I don't know how to set it to work with the sustain pedal, or know how your custom action works exactly.



Later today I will send you my custom CSS script and a modified version of the Legato Control plugin. I made a couple minor adjustments in the plugin code to behave in a proper way.


----------



## jason3.14

Supremo said:


> Later today I will send you my custom CSS script and a modified version of the Legato Control plugin. I made a couple minor adjustments in the plugin code to behave in a proper way.



Sounds great thanks!


----------



## Rufus Loacker

Supremo said:


> Here is the video on how I deal with CSS legato on Reaper.
> 
> 1. The CSS midi track has an input plugin inserted, which allows to trigger the note hold. I have it assigned to my sustain pedal, and everytime I press the pedal, it gets ON. Once I release the pedal, it turns OFF.
> 
> 2. The CSS track with long arts has a delay compensation set at -150.
> 
> 3. I also have a custom action/script (the one in the bottom of the screen).
> 
> So that's it. I simply play on a keyboard and use my pedal to keep notes pressed and sustained, whenever needed. That sort of sustain (note-hold), however, prevents legato transitions by sending a note-off message to the previously pressed note(s).
> 
> Once I finish recording, I just press that CSS button, which is my custom action, and all notes in the Midi item become legato.



I don't want to sound too critical, but I feel that example is still quite not on time, and it's not due to it being played in live. I would still tweak the midi to make it on time, and it wouldn't still be on the grid (which I realise not everyone cares about that, but I much prefer it since I import from and export the midi file to score editors)


----------



## Supremo

jason3.14 said:


> Thanks for the details - sorry could you clarify this in more detail (pretty noob here). I got ReaPack and downloaded the JS plugins to include Legato Control. I see that if I put Legato Control before CSS and manually set Note Hold to on, it has the effect of not allowing the legato transitions to take place like you mentioned. However, I don't know how to set it to work with the sustain pedal, or know how your custom action works exactly.



1. Attached is the modified JS Plugin code. Copy the content of the text file, then select the 'Legato Control' plugin as your input fx on one of the tracks, press "Edit" button inside that JS plugin and paste / replace the copied code. 

2. Insert the JS "MIDI CC Mapper X" plugin before the "Legato Control" plugin as an input fx. Do as shown in the attached video.

Once you have inserted the Legato Control plugin as an input fx, drag the slider below the 'Note Hold' all the way to the left to -2. This is a 'Learn' mode. And then press your sustain pedal. The 'On/Off' switch should work now. 


The second attached text file (AKS CSS Legato) is my custom script. First change the file extension from *.txt* to *.lua *

Then put it in the Reaper/Scripts folder and refresh your Action list. Press the "New Action", choose "Load Reascript" and select this script. You may also want to add it to your toolbar.


----------



## jason3.14

Thanks! Will give it a shot.



Supremo said:


> 1. Attached is the modified JS Plugin code. Copy the content of the text file, then select the 'Legato Control' plugin as your input fx on one of the tracks, press "Edit" button inside that JS plugin and paste / replace the copied code.
> 
> 2. Insert the JS "MIDI CC Mapper X" plugin before the "Legato Control" plugin as an input fx. Do as shown in the attached video.
> 
> Once you have inserted the Legato Control plugin as an input fx, drag the slider below the 'Note Hold' all the way to the left to -2. This is a 'Learn' mode. And then press your sustain pedal. The 'On/Off' switch should work now.
> 
> 
> The second attached text file (AKS CSS Legato) is my custom script. First change the file extension from *.txt* to *.lua *
> 
> Then put it in the Reaper/Scripts folder and refresh your Action list. Press the "New Action", choose "Load Reascript" and select this script. You may also want to add it to your toolbar.


----------



## zazambor

erikradbo said:


> Many thanks @Ihnoc both for the script and you active replies in this thread.
> 
> I was using the really nifty Thanos solution by @NoamL up until now, but was hoping this built in version would make it even easier, and also allowed me to used art conductor art sets in parallell.
> 
> I have been reading this thread thoroughly, and using version 1.6 in Logic 10.5.1 I have the same issue that many had before: the first note in a phrase is played too early, unless I make it velocity >100. Regardless of velocity the legato phrase length keeps counting up when restarting the phrase, so as you pointed out earlier it seems as if it doesn't recognise it having a fresh start.
> 
> Did others have this issue in Logic, and are Cubase users doing the solution earlier in this thread? Or am I just missing something that could be easily fixed?
> 
> EDIT: This doesn't occur when starting up the project and playing the track för the first time, which would be expected, since everything is reseted from start.


Hi!

I was having the same problem (or almost the same), if the velocity for the first note of a legato phrase was higher than 64, that note would come too early. 

I took a look at the code (I have almost no experience in coding for kontakt) and managed to make a dirty fix for the problem: 







It might not be the most elegant solution, but it works with my dorico + VEPro setup. I added 60 ms to every velocity, but you can experiment with your own numbers!

Attached is the source code, it can be pasted to replace the original script!

Many thanks for the OP for sharing this wonderful solution!


----------



## zazambor

Hello!

I'm having a very strange problem with the AVO - CSS control panel script:

I have one note played two times in a row (CSS, violin 1). But the second note plays back octave higher and then returns to the correct pitch. This problem disappears when a disable the AVO - script. If I take off the legato, the problem disappears as well.

For the second note, there is no key pressed on the "keyboard" of kontakt but for the first one there is. The tempo is very slow, so each note lasts about 3-4 seconds.

This problem is so bizarre that I have no clue how to resolve it! Any ideas where I should look for the fix?


----------



## Ihnoc

zazambor said:


> Hello!
> 
> I'm having a very strange problem with the AVO - CSS control panel script:
> 
> I have one note played two times in a row (CSS, violin 1). But the second note plays back octave higher and then returns to the correct pitch. This problem disappears when a disable the AVO - script. If I take off the legato, the problem disappears as well.
> 
> For the second note, there is no key pressed on the "keyboard" of kontakt but for the first one there is. The tempo is very slow, so each note lasts about 3-4 seconds.
> 
> This problem is so bizarre that I have no clue how to resolve it! Any ideas where I should look for the fix?


I have occasionally run into this, then it goes away. Are you using the auto-rebow feature in the script? Does it disappear if you turn it off and use CC64 in your MIDI instead?


----------



## zazambor

Ihnoc said:


> I have occasionally run into this, then it goes away. Are you using the auto-rebow feature in the script? Does it disappear if you turn it off and use CC64 in your MIDI instead?


Hi! 

Good to know that I'm not alone with this! 

If I take the autorebow off, I only get the high pitch and the sound cuts off after that. 

If I add pedal, the problem goes away. But this is a bit tricky to do for every repeated note (I'm on Dorico). 

I don't understand where the note octave higher comes from, is there something like that in the script?


----------



## Ihnoc

zazambor said:


> Hi!
> 
> Good to know that I'm not alone with this!
> 
> If I take the autorebow off, I only get the high pitch and the sound cuts off after that.
> 
> If I add pedal, the problem goes away. But this is a bit tricky to do for every repeated note (I'm on Dorico).
> 
> I don't understand where the note octave higher comes from, is there something like that in the script?


Ok, I have managed to replicate this behaviour without the script being engaged. The issue is in CSS itself as far as I can tell.

Steps to reproduce:

Load CSS 1st Violins Patch (not the classic legato patch)
Set the instrument to sustains, legato on (standard or advanced, doesn't matter)
Create a 3 note phrase on the same note, ensuring that the notes overlap (I used 1/16 at 120bpm)
Create another 3 note phrase after the first one, but a note different to the first, again ensuring the notes overlap in the same way
Play the phrase
Observe that the second note in each phrase jumps in octave
Observe no legato transition between the third note in the first phrase and the first note in the second phrase (treated as disconnected)
Other observations:

Note that using CC64 to create a rebow removes this effect
This effect can also be replicated by making several 3 note phrases on the same note, and using Cubase's expression map to elongate notes by 101%
Negative track delay has no effect on this happening
Version 1.5.0 exhibits this behaviour
I've confirmed this by removing my script, and also wrapping the script in the MIDI monitor scripts to ensure the notes aren't wrong coming out of mine


----------



## Ihnoc

*Update 1.7*

Added option to set the delay on the first note in a legato phrase. The default is 100ms, as with other long notes
Added options to set the script into Brass mode or Strings mode. In the Brass mode, the script will react assuming the instrument is from Cinematic Studio Brass instead. Default delays for Trumpets and the rest of the Brass, as defined in the manual, are available
Added an element that informs the user what track offset to set in the DAW in the top right


----------



## zazambor

Ihnoc said:


> Ok, I have managed to replicate this behaviour without the script being engaged. The issue is in CSS itself as far as I can tell.
> 
> Steps to reproduce:
> 
> Load CSS 1st Violins Patch (not the classic legato patch)
> Set the instrument to sustains, legato on (standard or advanced, doesn't matter)
> Create a 3 note phrase on the same note, ensuring that the notes overlap (I used 1/16 at 120bpm)
> Create another 3 note phrase after the first one, but a note different to the first, again ensuring the notes overlap in the same way
> Play the phrase
> Observe that the second note in each phrase jumps in octave
> Observe no legato transition between the third note in the first phrase and the first note in the second phrase (treated as disconnected)
> Other observations:
> 
> Note that using CC64 to create a rebow removes this effect
> This effect can also be replicated by making several 3 note phrases on the same note, and using Cubase's expression map to elongate notes by 101%
> Negative track delay has no effect on this happening
> Version 1.5.0 exhibits this behaviour
> I've confirmed this by removing my script, and also wrapping the script in the MIDI monitor scripts to ensure the notes aren't wrong coming out of mine


Thank you for taking the time to figure this out! Should this be reported to Alex Wallbank (in case there is a update or a new script by them coming)? 

I managed to solve the problem by adding CC64 to the default entry for slow legato in Dorico expression maps.


----------



## zazambor

Ihnoc said:


> *Update 1.7*
> 
> Added option to set the delay on the first note in a legato phrase. The default is 100ms, as with other long notes
> Added options to set the script into Brass mode or Strings mode. In the Brass mode, the script will react assuming the instrument is from Cinematic Studio Brass instead. Default delays for Trumpets and the rest of the Brass, as defined in the manual, are available
> Added an element that informs the user what track offset to set in the DAW in the top right


Thanks for this update! 

In my own version, I delay the dynamic_CC always 330ms - that made the most sense for Dorico. 

I also managed to edit the script so that harmonics play back in sounding register (not one octave higher). This is to make them play back correctly with dorico. These are the edits I made (after one hour of pondering): 

if ($keyswitchNote = $harmonicsKeyswitch)
{Harmonics Longs} 
$noteMode := 6

{NOTE ON}
{Harmonics}
case 6
$legatoNoteCount := 0

$legatoMode := 0
if (($lastDelayCCValue > 64 and $delayMode = 0) or ($delayMode = 1))
wait (($slowLegatoDelay - $fastLegatoDelay) * 1000)
$lastDelay := $fastLegatoDelay
else
$lastDelay := 0
end if

set_text($statusLabel,"Harmonic " & $MIDI_BYTE_1 & " with delay of " & $lastDelay)
set_midi($inputChannel,$MIDI_COMMAND_NOTE_ON,$MIDI_BYTE_1-12,$MIDI_BYTE_2)

{NOTE OFF}
select ($noteMode)
case 0
set_midi($inputChannel,$MIDI_COMMAND_NOTE_OFF,$MIDI_BYTE_1,$MIDI_BYTE_2)
case 1
set_midi($inputChannel,$MIDI_COMMAND_NOTE_OFF,$MIDI_BYTE_1,$MIDI_BYTE_2)
case 2
set_midi($inputChannel,$MIDI_COMMAND_NOTE_OFF,$MIDI_BYTE_1,$MIDI_BYTE_2)
case 3
set_midi($inputChannel,$MIDI_COMMAND_NOTE_OFF,$MIDI_BYTE_1,$MIDI_BYTE_2)
case 4 
set_midi($inputChannel,$MIDI_COMMAND_NOTE_OFF,$MIDI_BYTE_1,$MIDI_BYTE_2)
case 5 
set_midi($inputChannel,$MIDI_COMMAND_NOTE_OFF,$MIDI_BYTE_1,$MIDI_BYTE_2)
case 6
set_midi($inputChannel,$MIDI_COMMAND_NOTE_OFF,$MIDI_BYTE_1-12,$MIDI_BYTE_2)
end select



It's maybe not the most elegant way, but it works! I've learned a lot by studying your script, thanks for that!


----------



## zazambor

Ihnoc said:


> *Update 1.7*
> 
> Added option to set the delay on the first note in a legato phrase. The default is 100ms, as with other long notes
> Added options to set the script into Brass mode or Strings mode. In the Brass mode, the script will react assuming the instrument is from Cinematic Studio Brass instead. Default delays for Trumpets and the rest of the Brass, as defined in the manual, are available
> Added an element that informs the user what track offset to set in the DAW in the top right


Hi! I'm having a problem that I haven't been able to solve even after one hour of work:

If you have *tremolo note *that is imidiately followed with *legato note* (on a different pitch), autorebow and legato stop working. If there are repeated notes after that, those won't play back at all. 

If however, the tremolo note is followed by the same note in legato, the script works correctly.

This is where I have the problem:






In that example, all of the notes that are not tremolo, are played with a legato keyswitch pressed. 

For some reason, the script thinks all of the notes in the green zones as "first of a legato phrase" and in the red zone it works correctly. 

If I start playback from the second page, it works correctly. It's switching from tremolo makes the script stop working correctly. 

If you can think of anything that could help me solve the problem, that would be very much appreciated!


----------



## zazambor

zazambor said:


> Hi! I'm having a problem that I haven't been able to solve even after one hour of work:
> 
> If you have *tremolo note *that is imidiately followed with *legato note* (on a different pitch), autorebow and legato stop working. If there are repeated notes after that, those won't play back at all.
> 
> If however, the tremolo note is followed by the same note in legato, the script works correctly.
> 
> This is where I have the problem:
> 
> 
> 
> 
> 
> 
> In that example, all of the notes that are not tremolo, are played with a legato keyswitch pressed.
> 
> For some reason, the script thinks all of the notes in the green zones as "first of a legato phrase" and in the red zone it works correctly.
> 
> If I start playback from the second page, it works correctly. It's switching from tremolo makes the script stop working correctly.
> 
> If you can think of anything that could help me solve the problem, that would be very much appreciated!





Ihnoc said:


> *Update 1.7*
> 
> Added option to set the delay on the first note in a legato phrase. The default is 100ms, as with other long notes
> Added options to set the script into Brass mode or Strings mode. In the Brass mode, the script will react assuming the instrument is from Cinematic Studio Brass instead. Default delays for Trumpets and the rest of the Brass, as defined in the manual, are available
> Added an element that informs the user what track offset to set in the DAW in the top right


Hi! 

If you are planning to expand this script for the CSW, would it be possible let the user select the track delay (instead of it being the longest transition?) 

I'm using the script with dorico, which has no negative track delay. So my solution has been to delay everything _else_ by 330ms.. I can also make it to work with CSB (because it uses only two legato transitions) but it is not possible with CSW unless the script is modified. 

Thank you for considering this!


----------



## Paul Jelfs

Is there a youtube video walkthrough of this excellent solution ? I find i take in info much better that way


----------



## eli0s

Has anyone tried the script in Cakewalk (sonar)? I can't get it to work at all!!!


----------



## dormusic

This is something I've been dreaming about for a long time, but sadly I don't have CSS. Any plans on making this a universally compatible script?


----------



## zazambor

dormusic said:


> This is something I've been dreaming about for a long time, but sadly I don't have CSS. Any plans on making this a universally compatible script?


You can try to customize it to work with any library I think!


----------



## zazambor

eli0s said:


> Has anyone tried the script in Cakewalk (sonar)? I can't get it to work at all!!!


I don't see any reason why the script wouldn't work with any daw (or even notation program) as it's a kontakt multiscript. Have you checked that your CC13 is over 64 or that property is disabled from the settings?


----------



## eli0s

zazambor said:


> I don't see any reason why the script wouldn't work with any daw (or even notation program) as it's a kontakt multiscript. Have you checked that your CC13 is over 64 or that property is disabled from the settings?


Thank you for your reply!
Well, unfortunately, it doesn't work for some reason... No matter what I do, I get different transition times for each transition speed. The script does affect the initial delay by an amount but the notes after that keep having the shifted timings of the default CSS delay values.

I wonder if this is some Cakewalk-Kontakt related issue because Cakewalk doesn't have a track delay input in ms, but rather in musical values or ticks per quarter notes.
Also, the clock source (within Cakewalk) for some reason in my machine can't be set to Internal or SMPTE/MTC, and perhaps this is crucial for the correct timings between DAW and the Kontakt script.

That is why I ask if anyone using Cakewalk has the same issue or not.


----------



## Dewdman42

dormusic said:


> This is something I've been dreaming about for a long time, but sadly I don't have CSS. Any plans on making this a universally compatible script?



I started to work on a universal solution, that runs as a midi plugin. Its a long ways from being finished. If and when it is finished I will make an announcement.

In the meantime, the CSS Control panel is a brilliant approach for Kontakt instruments, and more convenient then using a separate midi plugin too! However, the GUI facilities of Kontakt KSP are a bit limiting, so I think it would be difficult to make a general universal solution with it. 

You can try to modify this script for other Kontakt instruments, I haven't tried yet, but plan to eventually. I don't know enough about KSP yet really to even try.

One thing I would like to know is what instruments floating around out there are particularly problematic for this issue? We know Cinematic Studios stuff is, but what else? I can tell you the problem exists in some of my Kirk Hunter instruments also, but I hardly ever use it anyway, and I think few people do. So it doesn't warrant a dedicated solution.


----------



## ALittleNightMusic

I only get 100ms delay no matter which velocity I've set to. I'm thinking this could be due to key switches? I'm not sure what the KS values in this panel refer to though. For example legato = 34. Is that CC58 value or is that referring to the note number? Even when changing CC58 to advanced legato, the script says "legato phrase length 0"


----------



## Ihnoc

ALittleNightMusic said:


> I only get 100ms delay no matter which velocity I've set to. I'm thinking this could be due to key switches? I'm not sure what the KS values in this panel refer to though. For example legato = 34. Is that CC58 value or is that referring to the note number? Even when changing CC58 to advanced legato, the script says "legato phrase length 0"


Note number. This is called out in the release notes.


----------



## Ihnoc

dormusic said:


> This is something I've been dreaming about for a long time, but sadly I don't have CSS. Any plans on making this a universally compatible script?


This is something I have pondered for a while but, what does "universal" mean? A delay per channel and/or on note values like velocity is easy to implement. A delay based on the fact you made a program change or sent a key switch is harder and not so robust (see the messages here of people who can't get this script working despite it being on it's 8th version).

I am curious what people generally would use. For me, as I am using largely Berlin series as either articulation or a multi full of shorts per channel, channel delay is enough. In this case, my shorts on channel 2 might have a 60ms attack, the longs on the other channels have a 100ms attack. The track offset would be -100ms and the delay to MIDI on channel 2 would be 40ms.


----------



## filipjonathan

Hey @Ihnoc, any chance of you making a screen cast of setting this up? I think it would help a lot of people. Sorry if it's already been mentioned.


----------



## Dewdman42

I think a generalized per channel multi script could be useful for a lot of cases. It wouldn’t ALWAYS work but I think it could probably work in a lot of cases. 

Keyswitch processing should work, but unless you define your own simple key switches it will get complicated. What I mean is that trying to “intercept” switches meant for the instrument will depend so much from instrument to instrument. Also many times expressionmaps and articulation sets don’t always send keyswitches for every single note if they perceive it was already sent and doesn’t need to be sent again, etc, so the script has to keep track of the LAST KNOWN running value, etc if you try to use instrument keyswitches; it’s easy for users to get confused about how they need to setup their expressionmap or articulation set.

Kontakt also has bugs handling CC switches


----------



## NYC Composer

filipjonathan said:


> Hey @Ihnoc, any chance of you making a screen cast of setting this up? I think it would help a lot of people. Sorry if it's already been mentioned.


man, that would really be appreciated as I took a few shots and gave up.


----------



## filipjonathan

NYC Composer said:


> man, that would really be appreciated as I took a few shots and gave up.


Yeah, I tried doing it once but I'm pretty sure I was doing something wrong as I never got it to work.


----------



## ZeeCount

Is anyone else finding that this script is causing hanging notes? I've got a piece that I've been working on, but when I added the control panel, I find that quick changes in articulations cause tremelos and marcatos to to hang. I'm not using the auto rebow feature. I don't get these hanging notes if I disable it.


----------



## VivianaSings

NYC Composer said:


> man, that would really be appreciated as I took a few shots and gave up.





filipjonathan said:


> Yeah, I tried doing it once but I'm pretty sure I was doing something wrong as I never got it to work.


Lol I thought I was the only one. Everything looked right but it never worked. I gave up as well.


----------



## filipjonathan

VivianaSings said:


> Lol I thought I was the only one. Everything looked right but it never worked. I gave up as well.


Definitely not the only one 😅


----------



## Craig Allen

Wow, thank you for all the effort.
Looking forward to giving this a whirl tomorrow.

Can you confirm if everything should work fine in Logic running CSS-Kontakt within Komplete Kontrol?


----------



## Ihnoc

ZeeCount said:


> Is anyone else finding that this script is causing hanging notes? I've got a piece that I've been working on, but when I added the control panel, I find that quick changes in articulations cause tremelos and marcatos to to hang. I'm not using the auto rebow feature. I don't get these hanging notes if I disable it.


As mentioned previously I have managed to get this behaviour to happen with my script removed completely. Something in the way CC64 is being captured. This is why auto rebow adds this problem as it basically sends a CC64 message if the note played is the same pitch as the one last played (excluding keyswitches). I will attest that there may be other reasons notes hang (such as the DAW not sending CC123 for all notes off) as well sloppiness on my part.


----------



## Ihnoc

filipjonathan said:


> Hey @Ihnoc, any chance of you making a screen cast of setting this up? I think it would help a lot of people. Sorry if it's already been mentioned.


It is on the list, behind a bunch of personal work.


----------



## dko22

ZeeCount said:


> Is anyone else finding that this script is causing hanging notes? I've got a piece that I've been working on, but when I added the control panel, I find that quick changes in articulations cause tremelos and marcatos to to hang. I'm not using the auto rebow feature. I don't get these hanging notes if I disable it.


yes, this can happen and it's at its worst when you try to set CC13, 0 temporarily to get rid of other issues. The key is quick articulation changes which sometimes work and sometimes don't. The pattern is too complex for me to yet decipher with certainly but I've come across a number of occasions where a return to the default legato is ignored -- certainly, as mentioned earlier, tremolos can be particularly problematical. Shortening notes or relocating the keyswitches to somewhere other than when you want them to actually take effect.

In general slower music works very nicely and for this reason, despite the issues which obviously a number of others are also having, I continue to use it.


----------



## jason3.14

Given that Cinematic Studio Woodwinds came out, anyone know if Alex is working on making the variable legato transition times more user friendly? Would be amazing...


----------



## ALittleNightMusic

ALittleNightMusic said:


> I only get 100ms delay no matter which velocity I've set to. I'm thinking this could be due to key switches? I'm not sure what the KS values in this panel refer to though. For example legato = 34. Is that CC58 value or is that referring to the note number? Even when changing CC58 to advanced legato, the script says "legato phrase length 0"


In case others had the same issue I did, here's what fixed it for me:
- Either use CC13 to turn on delay (or like me, you can select the option for Delay Always On)
- Enable advance legato using CC58 = 6
- Set an additional keyswitch based on the keyswitches tab in the script which corresponds to MIDI note number (so for legato, you need to trigger A#0 by default).
- Most importantly, does not matter what the instrument UI is set to - you still need to trigger the above items to get the script to work

Make sure to set the track delay in your DAW to -330ms.


----------



## hdsmile

thanks for the script, but unfortunately it doesn't work for me as expected using Slave (macOS) + Logic Pro X 10.6.1 + css/csb, so I decided to go back to original version with some personal fixes and now everything just working much more naturally.


----------



## rlundv

Any news or tips on how to use this for CSW? Is it in the making, or can the script already handle all four libraries?


----------



## Peter Satera

Can I ask a quick side question to those on Windows? Just when someone has the time.

What are the exact folder sizes of:

CSSS, CSB and CSW?
I decided to pick them up to accompany CSS, and noticed the spec's file size due to bit allocation of 1024/1000... Just to make sure it downloads the full lib. 

_(If my download ever finishes...it's really crawling, with CSSS expected to take 8 hours... )_


----------



## Ihnoc

beyd770 said:


> Any news or tips on how to use this for CSW? Is it in the making, or can the script already handle all four libraries?


I've worked on this today. Want to mull on it and do some of my regular testing on it before releasing.


----------



## zazambor

Ihnoc said:


> I've worked on this today. Want to mull on it and do some of my regular testing on it before releasing.


Hi! 

I have been trying to use the CC13 -control with your latest script, but for some reason my notes are hanging when CC13=0. Hanging stops when I press and release the pedal. Do you have an idea where the problem might be?


----------



## dko22

exactly, this is why I am very wary of using CC13,0 because -although it reduces issues I had with patch switching, it caused frequent hangs making only very limited use for short periods possible. If that could be eliminated, it's potentially a great feature.


----------



## dko22

just to confirm zazanbor. When you play with any patch using CC to control, the last key you press in a sequence will hang. This doesn't apply to articulations with velocity control like the pizz and stacc. groups. You can stop it by switching playback on or switching to another patch but obviously it's easier just to send a CC64 or press pedal if live so perhaps the script could automate this.

There are a few other things with CC13,0 but sorting that out would certainly be helpful to see where we stand overall in DAW playback.


----------



## Ihnoc

zazambor said:


> Hi!
> 
> I have been trying to use the CC13 -control with your latest script, but for some reason my notes are hanging when CC13=0. Hanging stops when I press and release the pedal. Do you have an idea where the problem might be?


Some questions:

Which articulations produce this effect?
Are you using the Auto Rebow feature?
Do the notes hang at the end of phrases while the transport is still playing or only when you stop it playing?
If they hang while the transport is playing, do the notes stop when the transport stops?
Worth noting that CC13 (Delay CC) is not designed to be turned on and off during a recorded phrase. I've seen some people doing that and might explain the hanging notes. Not that I haven't had them and I'm keen to identify the problem here. The point of the CC is to allow you to _record _with the delay compensation off, then turn it on once you've done your edits. Additionally the functionality of delay compensation is the same when using the 'Delay Always On' option - the Delay CC is a toggle.

As far as I can figure it, this issue comes about because Note Off events don't reach the instrument. I currently delay Note Off events for the same amount of time as the last Note On event. So if you play a fast legato note, the end of the note is delayed by the same amount too. When you start toggling between the delay being on or off, the Note Off might not get sent when it is expected to. Equally, some interactions between articulations and some other cases might not send this.

The other instance I have considered is that DAWs aren't sending the Note Off events anyway (such as stopping in the middle of a note). The Kontakt script functions available in multiscripts are incredibly limiting compared to the instrument scripts which makes it difficult to know certain things.

However, I never _don't_ send this event. If the script gets a Note Off event from the sequencer, it always gets sent to the instrument, it is just how much time it takes for that to happen. If people have reproducible MIDI cases of this, I'd love to give them a try to dissect what is going on.


----------



## zazambor

Ihnoc said:


> Some questions:
> 
> Which articulations produce this effect?
> Are you using the Auto Rebow feature?
> Do the notes hang at the end of phrases while the transport is still playing or only when you stop it playing?
> If they hang while the transport is playing, do the notes stop when the transport stops?
> Worth noting that CC13 (Delay CC) is not designed to be turned on and off during a recorded phrase. I've seen some people doing that and might explain the hanging notes. Not that I haven't had them and I'm keen to identify the problem here. The point of the CC is to allow you to _record _with the delay compensation off, then turn it on once you've done your edits. Additionally the functionality of delay compensation is the same when using the 'Delay Always On' option - the Delay CC is a toggle.
> 
> As far as I can figure it, this issue comes about because Note Off events don't reach the instrument. I currently delay Note Off events for the same amount of time as the last Note On event. So if you play a fast legato note, the end of the note is delayed by the same amount too. When you start toggling between the delay being on or off, the Note Off might not get sent when it is expected to. Equally, some interactions between articulations and some other cases might not send this.
> 
> The other instance I have considered is that DAWs aren't sending the Note Off events anyway (such as stopping in the middle of a note). The Kontakt script functions available in multiscripts are incredibly limiting compared to the instrument scripts which makes it difficult to know certain things.
> 
> However, I never _don't_ send this event. If the script gets a Note Off event from the sequencer, it always gets sent to the instrument, it is just how much time it takes for that to happen. If people have reproducible MIDI cases of this, I'd love to give them a try to dissect what is going on.


Hi and thanks for getting back!

I will investigate this further tomorrow, but here are short answers to your questions:

-Auto-rebow was on
-articulation was sustain, advanced legato
-instrument was CSW, alto flute (but I remember the same happening with CSS)
-CC13 control was toggled on and value CC13=0 sent to the instrument
-playback was stopped, I just wanted to play with the instrument without the added delay from the script
-legato phrase length counter was going wild, increasing by 2 with every new note
-as mentioned, pressing and releasing sustain pedal would stop the note

I’m suspecting that the problem is with the combination of auto-rebow on and CC13=0.

One more thing, I added one line that sets CC13 to 0 when the script receives ”stop all notes” message (CC123). This happens when I stop the playback in dorico. I’ve also set my expression maps so that dorico sends CC13=127 when I start the playback.

But if I remember correctly, this same hanging behaviour happened also when I was controlling CC13 with a external controller. I will confirm this tomorrow.


----------



## ZeeCount

Ihnoc said:


> As mentioned previously I have managed to get this behaviour to happen with my script removed completely. Something in the way CC64 is being captured. This is why auto rebow adds this problem as it basically sends a CC64 message if the note played is the same pitch as the one last played (excluding keyswitches). I will attest that there may be other reasons notes hang (such as the DAW not sending CC123 for all notes off) as well sloppiness on my part.


Did a bit more experimenting and I realised I didn't have "delay ks/ks CC" enabled. Turning this on seems to have removed most of the hanging notes I was getting.


----------



## Ihnoc

zazambor said:


> Hi and thanks for getting back!
> 
> I will investigate this further tomorrow, but here are short answers to your questions:
> 
> -Auto-rebow was on
> -articulation was sustain, advanced legato
> -instrument was CSW, alto flute (but I remember the same happening with CSS)
> -CC13 control was toggled on and value CC13=0 sent to the instrument
> -playback was stopped, I just wanted to play with the instrument without the added delay from the script
> -legato phrase length counter was going wild, increasing by 2 with every new note
> -as mentioned, pressing and releasing sustain pedal would stop the note
> 
> I’m suspecting that the problem is with the combination of auto-rebow on and CC13=0.
> 
> One more thing, I added one line that sets CC13 to 0 when the script receives ”stop all notes” message (CC123). This happens when I stop the playback in dorico. I’ve also set my expression maps so that dorico sends CC13=127 when I start the playback.
> 
> But if I remember correctly, this same hanging behaviour happened also when I was controlling CC13 with a external controller. I will confirm this tomorrow.


Interesting. One other user has highlighted some erratic legato counter issues. If you can share at all a snipped section of the midi that causes this (don't worry about the expression maps) I can see what might be happening.

FYI, glad you're using it with CSW - in principle my update just adds a 'if CSW then always advanced legato' - the rest is all UI bunf to support the different modes.

Also having to set CC127 in all your maps sounds like a faff. A thought occurred to me that rather than delay on/off CC or always on, a mode of 'only on when transport running' would be ideal. Noodling with some scripting over the weekend, this should be quite trivial to add. Hopefully this would save some time for those like you not wanting to have to program a bunch of expression maps manually to take advantage of it, and is more intuitive for the 'I just want to play while not recording' interaction.


----------



## Ihnoc

ZeeCount said:


> Did a bit more experimenting and I realised I didn't have "delay ks/ks CC" enabled. Turning this on seems to have removed most of the hanging notes I was getting.


Interesting. I was asked for this addition but felt it was quite pointless at the time. Perhaps I was wrong. I will have a think about it.


----------



## ZeeCount

Ihnoc said:


> Interesting. I was asked for this addition but felt it was quite pointless at the time. Perhaps I was wrong. I will have a think about it.


It may be because I'm using expression maps in cubase to do the keyswitching.


----------



## zazambor

Ihnoc said:


> Interesting. One other user has highlighted some erratic legato counter issues. If you can share at all a snipped section of the midi that causes this (don't worry about the expression maps) I can see what might be happening.
> 
> FYI, glad you're using it with CSW - in principle my update just adds a 'if CSW then always advanced legato' - the rest is all UI bunf to support the different modes.
> 
> Also having to set CC127 in all your maps sounds like a faff. A thought occurred to me that rather than delay on/off CC or always on, a mode of 'only on when transport running' would be ideal. Noodling with some scripting over the weekend, this should be quite trivial to add. Hopefully this would save some time for those like you not wanting to have to program a bunch of expression maps manually to take advantage of it, and is more intuitive for the 'I just want to play while not recording' interaction.


Hi! I studied a bit further the script and I think the problems might be in these places: 

It seems that the script does not set the legatonotecount to 0 if CC13=0. Shouldn't that be added there? 






If the legatonotecount is higher than 0, the script goes here. I was thinking that should the autorebow have a condition for CC13 as well, just to be sure?






For me it's absolutely no problem to add CC13=127 in my expression maps. Dorico has a dedicated entry for on init, which activates whenever the playback is started. 

The current version of dorico does not send any tempo information to the VST instruments, so I'm suspicious that it would send any information about starting or stopping playback either. But I might be also wrong about that. But if you could keep the CC13 implementation as an option, that would be safe thing for dorico users. 

Like I mentioned earlier, it would be great if the user could decide the track delay value instead of it being automatically the longest transition. I would imagine it being handy also for DAWs, as you could just have the same track delay for every track. I already modified my own version of the script so that it's always 330 ms, but even even better would be to have a dedicated variable to it. Of course some users might try too short values, so maybe thats a problem then?

I'll try later today if those assumptions above fix the legato + autorebow + CC13=0 behaviour or not.


----------



## zazambor

I can now confirm that adding "$legatoNoteCount := 0" to the MIDI NOTE OFF fixes the problem with hanging notes with legato + autorebow + CC13=0. The added line is right at the bottom of the screenshot.


----------



## zazambor

Ihnoc said:


> Interesting. One other user has highlighted some erratic legato counter issues. If you can share at all a snipped section of the midi that causes this (don't worry about the expression maps) I can see what might be happening.
> 
> FYI, glad you're using it with CSW - in principle my update just adds a 'if CSW then always advanced legato' - the rest is all UI bunf to support the different modes.
> 
> Also having to set CC127 in all your maps sounds like a faff. A thought occurred to me that rather than delay on/off CC or always on, a mode of 'only on when transport running' would be ideal. Noodling with some scripting over the weekend, this should be quite trivial to add. Hopefully this would save some time for those like you not wanting to have to program a bunch of expression maps manually to take advantage of it, and is more intuitive for the 'I just want to play while not recording' interaction.


Would it be possible for you to write a very simple script that does only these things:

-When CC13 > 64, delay everything (on every channel) by 330ms (or user defined delay)

-When receiving CC123 "all notes of", set CC13 to 0

That would solve the problem for all the other instruments in my template. Now they have a fixed delay, which is not very nice if you want to just play with them. I basically did the same thing (for a single channel) by modifying your script, but it's a huge mess and full of buttons that don’t do anything


----------



## Ihnoc

zazambor said:


> Hi! I studied a bit further the script and I think the problems might be in these places:
> 
> It seems that the script does not set the legatonotecount to 0 if CC13=0. Shouldn't that be added there?
> 
> 
> 
> 
> 
> 
> If the legatonotecount is higher than 0, the script goes here. I was thinking that should the autorebow have a condition for CC13 as well, just to be sure?
> 
> 
> 
> 
> 
> 
> For me it's absolutely no problem to add CC13=127 in my expression maps. Dorico has a dedicated entry for on init, which activates whenever the playback is started.
> 
> The current version of dorico does not send any tempo information to the VST instruments, so I'm suspicious that it would send any information about starting or stopping playback either. But I might be also wrong about that. But if you could keep the CC13 implementation as an option, that would be safe thing for dorico users.
> 
> Like I mentioned earlier, it would be great if the user could decide the track delay value instead of it being automatically the longest transition. I would imagine it being handy also for DAWs, as you could just have the same track delay for every track. I already modified my own version of the script so that it's always 330 ms, but even even better would be to have a dedicated variable to it. Of course some users might try too short values, so maybe thats a problem then?
> 
> I'll try later today if those assumptions above fix the legato + autorebow + CC13=0 behaviour or not.


Not sure this is 100% what should be happening. The script is intended to be a bit more modular. Auto rebow, the one note trills or CC based shorts shouldn't rely on the delay happening.

I think you're onto something though and will take a look soon. If the modifications are working for you though, great!


----------



## Ihnoc

zazambor said:


> Would it be possible for you to write a very simple script that does only these things:
> 
> -When CC13 > 64, delay everything (on every channel) by 330ms (or user defined delay)
> 
> -When receiving CC123 "all notes of", set CC13 to 0
> 
> That would solve the problem for all the other instruments in my template. Now they have a fixed delay, which is not very nice if you want to just play with them. I basically did the same thing (for a single channel) by modifying your script, but it's a huge mess and full of buttons that don’t do anything


Though this overlaps with a question I was asking about how people would want to delay things for other libraries, I think you can probably figure this one out! Ignore basically everything that is in _on init_ and any of the functions in my script. Just take a look at the _on midi _section of the script, and focus on the _ignore_midi_, _wait _and _set_midi_ lines. Declare some variables in _on init _(you won't even need them) and that should give you everything you need.

See the Kontakt script documentation if you're confused:


https://www.native-instruments.com/fileadmin/ni_media/downloads/manuals/KSP_5.7_Reference_Manual_0917.pdf


----------



## zazambor

Ihnoc said:


> Though this overlaps with a question I was asking about how people would want to delay things for other libraries, I think you can probably figure this one out! Ignore basically everything that is in _on init_ and any of the functions in my script. Just take a look at the _on midi _section of the script, and focus on the _ignore_midi_, _wait _and _set_midi_ lines. Declare some variables in _on init _(you won't even need them) and that should give you everything you need.
> 
> See the Kontakt script documentation if you're confused:
> 
> 
> https://www.native-instruments.com/fileadmin/ni_media/downloads/manuals/KSP_5.7_Reference_Manual_0917.pdf


Thank you for that documentation! I'm still a bit confused that if I try to search for example for "set_midi" I don't find anything in the documentation. On the other hand, your script doesn't use these "NOTE_EVENT"s at all, which the documentation seems to suggest as a primary way. 

But no worries, I have my delay working for other instruments as well just by editing your script. It just looks a bit messy, that's all.


----------



## yiph2

Hey! Just wanted to know if the CSW update is on it's way? 
The script works good for me!


----------



## BasariStudios

Only if i knew what all these Abbreviations mean:
(CSS, BSS, LSS, MSS VSS, TSS, ABS, ABC, XYZ e tc...)


----------



## yiph2

BasariStudios said:


> Only if i knew what all these Abbreviations mean:
> (CSS, BSS, LSS, MSS VSS, TSS, ABS, ABC, XYZ e tc...)


You missed the most important one... (ASS)


----------



## BasariStudios

yiph2 said:


> You missed the most important one... (ASS)


I was gonna get to that one.


----------



## ALittleNightMusic

Is there an ETA for CSW support? Love using this panel in Cubase.


----------



## Gingerbread

Sorry if this has already been asked elsewhere in the thread...by default, the one-note trill function accesses half-step trills. Is there a way to also make whole-step trills with the one-note feature?


----------



## dko22

eh!? Where do you get that from? If you're referring specifically to Cubase then that may be the case but the whole note trill works fine in Dorico.


----------



## Gingerbread

dko22 said:


> eh!? Where do you get that from? If you're referring specifically to Cubase then that may be the case but the whole note trill works fine in Dorico.


Maybe I'm not asking my question right (or there's something basic I'm not understanding). How are you getting whole-step trills with the one-button-trill button in Control Panel enabled? With the button on, I'm only getting half-step trills, and I don't see anything in the Panel to switch to whole-step.

(I'm using Logic, if that makes a difference.)


----------



## dko22

Perhaps I'm not 100% sure if you're talking about playing live or recording in Cubase (or another DAW) but I was assuming the latter. In my example of Dorico, the PLAY mode settings panel includes an option of setting what sort of trill you want and if you programme both trills the same in the Expression Map, it doesn't matter as there you differentiate between them there. If in Cubase, for instance, there is no way to differentiate the two because they're both covered by the one keyswitch (or CC58, 46-50), then unfortunately I don't have the answer but someone here must have tried it and can help?

CSS really ought to provide two keyswitches or CC's of course --it's an ingenuous solution they have for playing live but is unnecessarily irritating for programming.


----------



## Gingerbread

dko22 said:


> Perhaps I'm not 100% sure if you're talking about playing live or recording in Cubase (or another DAW) but I was assuming the latter. In my example of Dorico, the PLAY mode settings panel includes an option of setting what sort of trill you want and if you programme both trills the same in the Expression Map, it doesn't matter as there you differentiate between them there. If in Cubase, for instance, there is no way to differentiate the two because they're both covered by the one keyswitch (or CC58, 46-50), then unfortunately I don't have the answer but someone here must have tried it and can help?
> 
> CSS really ought to provide two keyswitches or CC's of course --it's an ingenuous solution they have for playing live but is unnecessarily irritating for programming.


Thanks for your answer, but I think we're talking about two different things, which is my fault for not being clear in my original question.

I'm not referring to the GUI that comes standard with CSS, or the usual way to get trills in CSS. My question refers to a specific recently-added feature in the Control Panel multiscript which this thread is about.

In CSS Control Panel (the multiscript), there is a button for 'One Note Trills', so that a trill can be created by pressing only one note (instead of the default two notes in regular CSS). But when I use this feature, the only trills I get are half-step trills, when pressing one note. I don't see an obvious or apparent way to get whole-step trills, when this 'One Note Trills' button is engaged.

Is there a way to get whole-step trills, with the 'One Note Trills' button pressed?


----------



## dko22

no, we're talking about the same thing. I'm using the script as well! I don't see how it can work playing live, though -- if it can then I'd also be interested in how.


----------



## Gingerbread

dko22 said:


> no, we're talking about the same thing. I'm using the script as well! I don't see how it can work playing live, though -- if it can then I'd also be interested in how.


Ah, got it, I see what you're saying now. Yeah, it doesn't appear there's a solution for playing a whole-step trill live with that feature then. Ah well. Thanks!


----------



## dko22

Sorry I can't be of more help but perhaps someone else knows something.


----------



## zazambor

Gingerbread said:


> Ah, got it, I see what you're saying now. Yeah, it doesn't appear there's a solution for playing a whole-step trill live with that feature then. Ah well. Thanks!





Gingerbread said:


> Ah, got it, I see what you're saying now. Yeah, it doesn't appear there's a solution for playing a whole-step trill live with that feature then. Ah well. Thanks!


Are you using a keyswitch to trigger one note trills? In that case it is the velocity of the keyswitch that determines if it’s minor or major second. So I guess try pressing the trill keyswitch harder!


----------



## dko22

that's interesting! In the CSS manual, trills are simply marked CC58,46-50 without distinguishing between major and minor so is this something the script brings in or have I missed something?


----------



## zazambor

That is correct, because originally CSS supports trills only by pressing two notes at once. But Alex's Script has the possibility to do this for you, as it says in the documentation: 






CSS Control Panel – Alex John Ernest Vincent







alexjevincent.co.uk





So there is a script inside CSS to produce correct trills when two keys are pressed and an external multiscript to press correct two keys depending on the keyswitch velocity or CC58 value. It's a bit funny when you think about it, but seems to work at least for me!


----------



## dko22

you're right -- actually I must have read the Script manual as I have half tone set to 46 and whole to 50 in the expression map. Dorico normally defaults to the trill which makes harmonic sense in the context (of course in notation software you chose a trill symbol to activate it and only then does it try to work out which kind with the ability to override). But of course a DAW will have no inbuilt intelligence for trills and you'll normally just be selecting the keyswitch or CC directly.


----------



## ScrltPumpernickel

Hello. Am I the only one, who's getting a very strange script behavior in Brass mode on repeating sustained notes (Sustained/Legato articulation, not connected EDIT: not overlapping). Sometimes it sounds as if the script only plays the release portion of the next note. This doesn't happen in strings mode. And it doesn't happen with the script bypassed.

In case it's important, I'm using Reaper on Win10 and the script (1.7) is set to constant delay.

Please do not consider this as a complaint, I'm in no position to criticize.


----------



## Tama

filipjonathan said:


> Hey @Ihnoc , another question. I created expression maps for CSS but when I try using your script with it, it doesn't work. Am I doing something wrong? The expression maps use the default keyswitches, not cc58 though, could this be the issue? I also have 3 different instances of CSS per Kontakt with the different midi channels (legatos, longs and shorts). Maybe that's the problem?
> 
> *EDIT* I just tried creating an expression map where everything is in one instance of CSS and it worked although when I have shorts, then legato notes after that, the first legato note starts a bit early so it needs to be manually moved.


I have a similar problem with Expression Maps. The script works great except for the "Delay non Ks/CC" function. After some test, it seems that no matter if I send CC58 or Keyswitches via expression map, this funtion stop working and stay bugged. In order to make it work again I have to disable expression map and load the script again. Does anyone have the same problem? (Cubase 10 here) And thanks for sharing this! @Ihnoc

*Edit* "Delay non Ks/CC" Function work fine with CC11 (using expression map). But CC1 and expression map changes are not compensated and follow the track delay.

*Edit 2* The problem only happens when Legato/Sustain articulation is triggered. So I decided to have a exclusive track for Legatos without expression maps.


----------



## Getsumen

Hey,

I was having a bit of an issue with the script and I was wondering if someone could help me clarify a few issues.

The script doesn't pick up on my the legato delay properly (Stuck at 100 ms, phrase length 0) and I read that placing a keyswitch to trigger the legato button would fix it, and it does. However if I swap to a different articulation (using cc58 for me) then back to sustains it doesn't recognize it.

Should I just be placing the enable legato keyswitch every time I move back to the sustains articulation?


----------



## Ihnoc

Getsumen said:


> Hey,
> 
> I was having a bit of an issue with the script and I was wondering if someone could help me clarify a few issues.
> 
> The script doesn't pick up on my the legato delay properly (Stuck at 100 ms, phrase length 0) and I read that placing a keyswitch to trigger the legato button would fix it, and it does. However if I swap to a different articulation (using cc58 for me) then back to sustains it doesn't recognize it.
> 
> Should I just be placing the enable legato keyswitch every time I move back to the sustains articulation?


Yes - this is because of the way CSS and the other libraries use legato - you can't 'set' legato outside of sustains/marcato etc. If you want legato sustains, as mentioned in the script limitations, I recommend setting CC58 _and _setting the legato keyswitch in the same articulation. Then things will work.

If you're not using an articulation manager, set both on the same point, or set the CC58 for sustains then CC58 for legato (the script does react to both).


----------



## aka70

Tama said:


> I have a similar problem with Expression Maps. The script works great except for the "Delay non Ks/CC" function. After some test, it seems that no matter if I send CC58 or Keyswitches via expression map, this funtion stop working and stay bugged. In order to make it work again I have to disable expression map and load the script again. Does anyone have the same problem? (Cubase 10 here) And thanks for sharing this! @Ihnoc
> 
> *Edit* "Delay non Ks/CC" Function work fine with CC11 (using expression map). But CC1 and expression map changes are not compensated and follow the track delay.
> 
> *Edit 2* The problem only happens when Legato/Sustain articulation is triggered. So I decided to have a exclusive track for Legatos without expression maps.


I have the same problem with CC data. 
CC1 seems to not work but CC11 is working fine. Everything is delayed by the same amount when you use cc11. 

Maybe is there any quick fix to this??


----------



## ALittleNightMusic

ALittleNightMusic said:


> Is there an ETA for CSW support? Love using this panel in Cubase.


Just bumping this question for @Ihnoc


----------



## aka70

Everything I did for the woodwinds was just changing the delays. It works fine.

Edit: The version I use is from page 5 in this thread (the last comment)


----------



## aka70




----------



## ALittleNightMusic

aka70 said:


>


Are you using Strings mode or Brass mode?


----------



## aka70

ALittleNightMusic said:


> Are you using Strings mode or Brass mode?


String mode. 
This is an older version 1.5 I think. It works fine with CSW and CSB 

The official 1.7 doesn't work for me, maybe I'm doing something wrong. The shorts are very bad, it's like messing with the velocity or something. It works with delaying CC11 but not CC1 

This older version is very smooth for me, but it hasn't the delay cc data!


----------



## ALittleNightMusic

aka70 said:


> String mode.
> This is an older version 1.5 I think. It works fine with CSW and CSB
> 
> The official 1.7 doesn't work for me, maybe I'm doing something wrong. The shorts are very bad, it's like messing with the velocity or something. It works with delaying CC11 but not CC1
> 
> This older version is very smooth for me, but it hasn't the delay cc data!


Yeah for some reason with 1.7, I don't think it is acknowledging my legato even with the new Art Conductor Sound Variation in S1 (says legato length of 0 always). It recognizes the shorts though.


----------



## yellow_lupine

Has anyone noticed that with the script enabled (v1.7), all marcato notes seems to be played with a shorter duration?
Please take a listen at the attached examples.


----------



## Getsumen

aka70 said:


> String mode.
> This is an older version 1.5 I think. It works fine with CSW and CSB
> 
> The official 1.7 doesn't work for me, maybe I'm doing something wrong. The shorts are very bad, it's like messing with the velocity or something. It works with delaying CC11 but not CC1
> 
> This older version is very smooth for me, but it hasn't the delay cc data!


Oh? Yeah I had an issue with rapid shorts as well where if you repeat the same note too quickly then it seems to skip notes.

If it works fine with 1.5 I might just downgrade then.


----------



## Ihnoc

aka70 said:


> I have the same problem with CC data.
> CC1 seems to not work but CC11 is working fine. Everything is delayed by the same amount when you use cc11.
> 
> Maybe is there any quick fix to this??


Do you have any MIDI data for this you could share (or even better a Cubase project)? A lot of the reports I get don't come with hard artefacts to test with - if you have this it is easier for me to reproduce.

With this specific issue have you tried setting "Delay non-KS CC" to off and see whether it helps? With this on, the script does something similar to the note delay for the Dynamics CC (which by default is CC1), basically setting the delay on CC1 to be whatever the delay of the last detected articulation is. All other controllers (by default, not CC1, CC58, CC13 or CC123) are delayed by roughly the Slow Legato delay.

I will admit this isn't clear and would probably be better to split out into a different button, resulting in:

Delay non-KS CC
Delay KS/KS CC
Delay Dynamics CC (new)
I'd then probably have to question whether another button of 'delay CCs by a flat amount or dynamically' is necessary. One of the reasons this functionality exists is to allow the short note velocity to be controlled by Dynamics CC.


----------



## Ihnoc

yellow_lupine said:


> Has anyone noticed that with the script enabled (v1.7), all marcato notes seems to be played with a shorter duration?
> Please take a listen at the attached examples.


Have you got some MIDI or a Cubase project you can send that will demonstrate? This isn't something I've heard before or expect the script to do.


----------



## yellow_lupine

Ihnoc said:


> Have you got some MIDI or a Cubase project you can send that will demonstrate? This isn't something I've heard before or expect the script to do.


Here you can find a very brief Cubase project. I have set the track delay to -330, added a few overlapped notes and set CSS articulation to Marcato directly from Kontakt to keep it as simple as possible (no expression map, keyswitch or CC58).
With the script activated you can hear the notes playing disconnected and quite truncated, while if you bypass it you can hear them correctly.
Hope you can help.
Thanks


----------



## img

Hi,
Here is AVO – CSS Control Panel 1.7 by Alex Vincent updated to 2.0

What's new:
- multi channel
- preset menu on first screen (CSS & CSSS, CSB, CSW)
- trumpets pair channel (trumpets have different delay)
- keyswitches are now notes, not numbers

Thank you Alex!

All the best,
Nenad Siskov


----------



## G.Poncelet

Logic users, is the script working for you ? 
I can’t get it right. Thx !


----------



## img

G.Poncelet said:


> Logic users, is the script working for you ?
> I can’t get it right.


For legato:
CSS:
track delay -330 ms
legato CC58=6
KS Legato = A#0 127 velocity
see PDF manual...

CSB:
track delay=-230
CC58=1
KS Legato = A#0 127 velocity
trumpetsChPair=Channels for trumpets (solo, ensemble)

CSW:
track delay=-220
CC58=6
KS Legato G#0 127 velocity


----------



## ALittleNightMusic

img said:


> Hi,
> Here is AVO – CSS Control Panel 1.7 by Alex Vincent updated to 2.0
> 
> What's new:
> - multi channel
> - preset menu on first screen (CSS & CSSS, CSB, CSW)
> - trumpets pair channel (trumpets have different delay)
> - keyswitches are now notes, not numbers
> 
> Thank you Alex!
> 
> All the best,
> Nenad Siskov


Who updated this? Alex’s site still says 1.7.


----------



## img

ALittleNightMusic said:


> Who updated this? Alex’s site still says 1.7.


I updated to 2.0 and sent Alex a message a couple of weeks ago.


----------



## ka00

img said:


> I updated to 2.0 and sent Alex a message a couple of weeks ago.


Thank you, Nenad! I haven't tested "version 2" yet, but multichannel support was something I was hoping for.

My guess would be that this was an open source project, but just checking if this has Alex's blessing?

I'm grateful to anyone who freely shares their time and knowledge to create and release such helpful tools as this. Thanks to both of you!


----------



## img

Hi,

Here is AVO – CSS Control Panel 1.7 by Alex Vincent updated to v2.1

What's new:
2.0
- multi channel
- preset menu on first screen (CSS & CSSS, CSB, CSW)
- trumpets pair channel (trumpets have different delay)
- keyswitches are now notes, not numbers

2.1
- midi filter (disable/enable script processing)
- track delay on first screen

Thank you Alex!

All the best,
Nenad Siskov


----------



## ALittleNightMusic

img said:


> Hi,
> 
> Here is AVO – CSS Control Panel 1.7 by Alex Vincent updated to v2.1
> 
> What's new:
> 2.0
> - multi channel
> - preset menu on first screen (CSS & CSSS, CSB, CSW)
> - trumpets pair channel (trumpets have different delay)
> - keyswitches are now notes, not numbers
> 
> 2.1
> - midi filter (disable/enable script processing)
> - track delay on first screen
> 
> Thank you Alex!
> 
> All the best,
> Nenad Siskov


Was there a reason you removed the status bar? That provided good feedback to confirm the script was working properly or not. Also, I noticed with this version that (at least for CSW) a final note in a phrase with the slowest legato was not delayed properly. Works properly in 1.7.


----------



## img

ALittleNightMusic said:


> Was there a reason you removed the status bar? That provided good feedback to confirm the script was working properly or not. Also, I noticed with this version that (at least for CSW) a final note in a phrase with the slowest legato was not delayed properly. Works properly in 1.7.


Please send me a midi file...
Status bar per channel is on first screen.


----------



## aka70

Thank you Nenad for helping with this script. 

I have the same problem as before with v1.7 
Just play the midi with short articulation (spiccato) and maybe you will have the same behavior as I have. 

If you play at the correct tempo (210bpm at 9/8) it's not playing correctly. It's messing all the midi information. And as soon as you lower the tempo ex. 190 things get a little more cleared and at 180 it's finally playing ok. 

I have tried with half the tempo 110bpm, but with double the note length to achieve the triplet speed but it's the same problem. 

I'm using Studio one.


----------



## img

aka70 said:


> Thank you Nenad for helping with this script.
> 
> I have the same problem as before with v1.7
> Just play the midi with short articulation (spiccato) and maybe you will have the same behavior as I have.
> 
> If you play at the correct tempo (210bpm at 9/8) it's not playing correctly. It's messing all the midi information. And as soon as you lower the tempo ex. 190 things get a little more cleared and at 180 it's finally playing ok.
> 
> I have tried with half the tempo 110bpm, but with double the note length to achieve the triplet speed but it's the same problem.
> 
> I'm using Studio one.


Thanks for the example.
You're right, there's a big problem.
I'm going to deal with...


----------



## img

aka70 said:


> Thank you Nenad for helping with this script.
> 
> I have the same problem as before with v1.7
> Just play the midi with short articulation (spiccato) and maybe you will have the same behavior as I have.
> 
> If you play at the correct tempo (210bpm at 9/8) it's not playing correctly. It's messing all the midi information. And as soon as you lower the tempo ex. 190 things get a little more cleared and at 180 it's finally playing ok.
> 
> I have tried with half the tempo 110bpm, but with double the note length to achieve the triplet speed but it's the same problem.
> 
> I'm using Studio one.


I found a bug.
Here is the beta version and mp3 of your example midi file.
P.S.
You must enter CC58 = 11 or note F0 for spiccato in your tracks.


----------



## aka70

Thaaaat was quick and amazing. Now It's working perfectly on all of my problematic examples before.
Everything is working as supposed.

Thank you, thank you, thank you


----------



## aka70

I think there is a mistake with the fast legato for the Brass.
M = 230
F = 100

And maybe you can solve the problem with Delay Non-Ks CC1 (modulation) which is not delayed property by the amount. It's ok with CC11 but not CC1. 

I found a work-around with CCs Delay script but it would be great if that was fixed too.

I've tested the woodwinds. They are ok. 

For those who work in Studio one 5.2 with the Sound Variations, I would suggest to uncheck the Delay KS/KS CC, because I think that the articulations in Studio One are already being delayed by the sound variations, so it would be a double delay I suppose.


----------



## aka70

It was rocket science for me but I think I did it 
It was only a matter of changing the
%fastLegatoDelay[$_i] := $mediumLegatoDelay_Brass
to
%fastLegatoDelay[$_i] := $fastLegatoDelay_General

Anyway, @img, you should check it because maybe I did something wrong.
The trumpets for example I can't make them to work
Thank you again


----------



## img

aka70 said:


> I think there is a mistake with the fast legato for the Brass.
> M = 230
> F = 100
> 
> And maybe you can solve the problem with Delay Non-Ks CC1 (modulation) which is not delayed property by the amount. It's ok with CC11 but not CC1.
> 
> I found a work-around with CCs Delay script but it would be great if that was fixed too.
> 
> I've tested the woodwinds. They are ok.
> 
> For those who work in Studio one 5.2 with the Sound Variations, I would suggest to uncheck the Delay KS/KS CC, because I think that the articulations in Studio One are already being delayed by the sound variations, so it would be a double delay I suppose.


I know about the brass problem and I’m working on it.
Trumpets (medium and slow legato) and 2 Trombones (fast legato) have different latencies.
As you can see in version 2.2 beta each channel will have its own latencies. (Slow, Medium, Fast)


----------



## img

aka70 said:


> Thaaaat was quick and amazing. Now It's working perfectly on all of my problematic examples before.
> Everything is working as supposed.
> 
> Thank you, thank you, thank you


I'm glad I helped.


----------



## img

aka70 said:


> It was rocket science for me but I think I did it
> It was only a matter of changing the
> %fastLegatoDelay[$_i] := $mediumLegatoDelay_Brass
> to
> %fastLegatoDelay[$_i] := $fastLegatoDelay_General
> 
> Anyway, @img, you should check it because maybe I did something wrong.
> The trumpets for example I can't make them to work
> Thank you again


Thank you! This is an obvious mistake


----------



## Ihnoc

ka00 said:


> My guess would be that this was an open source project, but just checking if this has Alex's blessing?
> 
> I'm grateful to anyone who freely shares their time and knowledge to create and release such helpful tools as this. Thanks to both of you!


It doesn't but this is why I left the script freely available to be edited so people could tinker, improve or adjust.

I will look over @img changes, but I have yet to make any update beyond 1.7 public, mainly due to time. I want to investigate some of the supplied projects and these changes suggested.


----------



## img

Ihnoc said:


> It doesn't but this is why I left the script freely available to be edited so people could tinker, improve or adjust.
> 
> I will look over @img changes, but I have yet to make any update beyond 1.7 public, mainly due to time. I want to investigate some of the supplied projects and these changes suggested.


Dear Alex,
Thanks for sharing script ♥.


----------



## Ihnoc

aka70 said:


> Thank you Nenad for helping with this script.
> 
> I have the same problem as before with v1.7
> Just play the midi with short articulation (spiccato) and maybe you will have the same behavior as I have.
> 
> If you play at the correct tempo (210bpm at 9/8) it's not playing correctly. It's messing all the midi information. And as soon as you lower the tempo ex. 190 things get a little more cleared and at 180 it's finally playing ok.
> 
> I have tried with half the tempo 110bpm, but with double the note length to achieve the triplet speed but it's the same problem.
> 
> I'm using Studio one.


Sorry for the slow response here. I can reproduce what you're talking about. Really helpful and I have only occasionally come across this myself and it was not something I could get consistently.

Fun little riff by the way!


----------



## aka70

Happy to help you with. It's the minimal I can do! 
Thank you @Ihnoc for making my life easier with this script and the same to you @img 

I write mostly classical stuff and changing articulations it's essential to me and CSS seems to do that very nice.


----------



## img

AVO - CSCP 2.2 BETA2





What's new:
- delay per midi channel
- marcato with overlay now working
- spiccato corrected
- 🛠️

@aka70 please test (especially brass)...


----------



## aka70

Hello @img
I can't seem to trigger the legato properly, so the script isn't actually working.
There is something wrong maybe, or changing too many scripts make kontakt confused .

Edit: Maybe is the keyswitch for the woodwind. As soon as I switch to the woodwinds the legato delay stops working. 

The legato for the woodwinds is G#0, different from the Strings and Brass La#. Maybe this is the problem. 

Everything else seems good to me, but I have to test a little bit more. 
The only thing missing is yet the Delay Non-Ks CC for modulation.


----------



## img

aka70 said:


> Hello @img
> I can't seem to trigger the legato properly, so the script isn't actually working.
> There is something wrong maybe, or changing too many scripts make kontakt confused .
> 
> Edit: Maybe is the keyswitch for the woodwind. As soon as I switch to the woodwinds the legato delay stops working.
> 
> The legato for the woodwinds is G#0, different from the Strings and Brass La#. Maybe this is the problem.
> 
> Everything else seems good to me, but I have to test a little bit more.
> The only thing missing is yet the Delay Non-Ks CC for modulation.


Please, I need midi example with inscribed articulation...
Here is Beta3: Last spiccato note before adv. legato now working.
"The legato for the woodwinds is G#0", strange, but it's CS default for the woodwinds


----------



## aka70

@img Now I've put some tests today.
I can see now Non-Ks CC delay is working properly. This is it. Finallyyy

Now for the Brass
Brass Legato Velocity (small bug from the way CSB was programmed)
in the manual it says:
Medium 0-64 but in fact is 0-63
Fast 64-127 but in fact is 63-127
I think you should change that in the script

Woodwinds Legato Velocity (as by the manual)
slow 0-64
medium 65-100
fast 101-127

Now the problem is that the script when you select Woodwinds mode reacts as it was Advanced mode for strings I think or maybe it's only missing some velocity triggers for the slow transitions.

There is a difference about velocity 20 and 21 which for the woodwinds shouldn't effect anything because slow should be 0-64

velocity 0-20 trigger ? its unclear (not really sure what the script does)
velocity 21 trigger medium transitions when it should delay for 220 instead.

21-64 medium
65-127 fast
SLOW is missing

Other than that?? I think it's working flawlessly.


----------



## Ihnoc

*Update 1.8*

Added support for Winds mode. Default delays for this mode are supplied as with Strings and Brass modes
Added a colour bar to indicate which mode the script it is in. It illuminates when the delay is active
Slightly re-arranged the UI to make it easier to understand
Fixed an issue where short notes at very fast tempo speeds would cut into the next note
Please also consider taking a look at @img 's version of the script that supports multiple channels.


----------



## img

aka70 said:


> @img Now I've put some tests today.
> I can see now Non-Ks CC delay is working properly. This is it. Finallyyy
> 
> Now for the Brass
> Brass Legato Velocity (small bug from the way CSB was programmed)
> in the manual it says:
> Medium 0-64 but in fact is 0-63
> Fast 64-127 but in fact is 63-127
> I think you should change that in the script
> 
> Woodwinds Legato Velocity (as by the manual)
> slow 0-64
> medium 65-100
> fast 101-127
> 
> Now the problem is that the script when you select Woodwinds mode reacts as it was Advanced mode for strings I think or maybe it's only missing some velocity triggers for the slow transitions.
> 
> There is a difference about velocity 20 and 21 which for the woodwinds shouldn't effect anything because slow should be 0-64
> 
> velocity 0-20 trigger ? its unclear (not really sure what the script does)
> velocity 21 trigger medium transitions when it should delay for 220 instead.
> 
> 21-64 medium
> 65-127 fast
> SLOW is missing
> 
> Other than that?? I think it's working flawlessly.


Very detailed, thank you!


----------



## img

aka70 said:


> @img Now I've put some tests today.
> I can see now Non-Ks CC delay is working properly. This is it. Finallyyy
> 
> Now for the Brass
> Brass Legato Velocity (small bug from the way CSB was programmed)
> in the manual it says:
> Medium 0-64 but in fact is 0-63
> Fast 64-127 but in fact is 63-127
> I think you should change that in the script
> 
> Woodwinds Legato Velocity (as by the manual)
> slow 0-64
> medium 65-100
> fast 101-127
> 
> Now the problem is that the script when you select Woodwinds mode reacts as it was Advanced mode for strings I think or maybe it's only missing some velocity triggers for the slow transitions.
> 
> There is a difference about velocity 20 and 21 which for the woodwinds shouldn't effect anything because slow should be 0-64
> 
> velocity 0-20 trigger ? its unclear (not really sure what the script does)
> velocity 21 trigger medium transitions when it should delay for 220 instead.
> 
> 21-64 medium
> 65-127 fast
> SLOW is missing
> 
> Other than that?? I think it's working flawlessly.


"Now for the Brass
Brass Legato Velocity (small bug from the way CSB was programmed)
in the manual it says:
Medium 0-64 but in fact is 0-63
Fast 64-127 but in fact is 63-127
I think you should change that in the script"

It doesn't matter, the latency is the same.
============================================
"Woodwinds Legato Velocity (as by the manual)
slow 0-64
medium 65-100
fast 101-127

Now the problem is that the script when you select Woodwinds mode reacts as it was Advanced mode for strings I think or maybe it's only missing some velocity triggers for the slow transitions.

There is a difference about velocity 20 and 21 which for the woodwinds shouldn't effect anything because slow should be 0-64

velocity 0-20 trigger ? its unclear (not really sure what the script does)
velocity 21 trigger medium transitions when it should delay for 220 instead."

Please, try BETA 4...


----------



## Sunny Schramm

While so many people enjoy this fix - isnt CS interested in implementing it officially in their libraries?


----------



## Sarah Mancuso

It'd be nice, though implementing a variable-delay note buffer within an instrument script itself seems to be a much more complicated affair than doing so as a multi script. A number of developers have figured out how to do it, but it seems somewhat like they're all keeping their methods a secret...


----------



## Dewdman42

which instruments are already doing it?


----------



## ALittleNightMusic

Ihnoc said:


> *Update 1.8*
> 
> Added support for Winds mode. Default delays for this mode are supplied as with Strings and Brass modes
> Added a colour bar to indicate which mode the script it is in. It illuminates when the delay is active
> Slightly re-arranged the UI to make it easier to understand
> Fixed an issue where short notes at very fast tempo speeds would cut into the next note
> Please also consider taking a look at @img 's version of the script that supports multiple channels.


Not sure if this is a known issue, but if I switch to different modes on the Basics tab, it doesn't change the delay on the Delay tab. I have to go click another button on that tab for the delays to update.


----------



## aka70

img said:


> "Now for the Brass
> Brass Legato Velocity (small bug from the way CSB was programmed)
> in the manual it says:
> Medium 0-64 but in fact is 0-63
> Fast 64-127 but in fact is 63-127
> I think you should change that in the script"
> 
> It doesn't matter, the latency is the same.
> ============================================
> "Woodwinds Legato Velocity (as by the manual)
> slow 0-64
> medium 65-100
> fast 101-127
> 
> Now the problem is that the script when you select Woodwinds mode reacts as it was Advanced mode for strings I think or maybe it's only missing some velocity triggers for the slow transitions.
> 
> There is a difference about velocity 20 and 21 which for the woodwinds shouldn't effect anything because slow should be 0-64
> 
> velocity 0-20 trigger ? its unclear (not really sure what the script does)
> velocity 21 trigger medium transitions when it should delay for 220 instead."
> 
> Please, try BETA 4...


I think is still the same! No changes unfortunately. Thank you for doing this


----------



## Ihnoc

ALittleNightMusic said:


> Not sure if this is a known issue, but if I switch to different modes on the Basics tab, it doesn't change the delay on the Delay tab. I have to go click another button on that tab for the delays to update.


Somewhat deliberate. I did think about forcing the delays to the defaults when doing this but I didn't want to override delay settings set by the user. It's a fair point though from a usability point of view that I will think about.


----------



## Ihnoc

Sarah Mancuso said:


> It'd be nice, though implementing a variable-delay note buffer within an instrument script itself seems to be a much more complicated affair than doing so as a multi script. A number of developers have figured out how to do it, but it seems somewhat like they're all keeping their methods a secret...


Possibly. Having not made any instruments beyond one shot samples, I can't talk for the incredibly complicated process of making instruments. That said multi scripts are very limited. There are reams of code I could simplify if I had access to the instruments' behaviour directly as well as the extra functions and processes instrument scripts get that multi scripts weirdly don't.


----------



## img

aka70 said:


> I think is still the same! No changes unfortunately. Thank you for doing this


Woodwinds are similar to Strings with a different delay and an "invisible" advanced legato.
slow: 0-64
medium: 65-100
fast: 101-127

If this is not the case with you, please send me a midi with the articulation entered.


----------



## img

AVO - CSCP 2.2.1
- trifles


----------



## Leandro Gardini

How much I wish this script worked in my system. I've read almost everything written here, and it seems this miraculous script is working only for some people.
Is there any full-fledged alternative out there?


----------



## Dewdman42

why doesn't it work for you?


----------



## Leandro Gardini

Dewdman42 said:


> why doesn't it work for you?


The script diminishes the amount of delay but doesn't eliminate it. 
CC13 is 127, the track delay is -330 and I am switching articulations on CC58, but I can't figure out what's wrong.


----------



## Sarah Mancuso

The delay is a feature, the script isn't supposed to eliminate it. You can't have CSS legato without the delay unless you invent time travel to send the pre-note performance back in time before you press the key.


----------



## Dewdman42

As Sarah said, the script cannot eliminate the delay...but this script is supposed to pad everything out...so once you set the delay times, you use the max delay time as the negative track delay on your recorded midi track..then it should all work out. But there is no way to eliminate delay while playing in the part.

I haven't used this version of this script yet, I was using the previous 1.6 version which is a bit different so I will check this out later in more detail...

I'm not sure why CC13 is related here?

I don't know why this script insists on using the CC58 keyswitches, Kontakt has known problems when using CC instrument switches and I strongly recommend against them. It comes up in rare situations like if you have a chord on the same midi tick and some notes are using different CC58 switch then other notes on the same chord. Unusual, but possible. In that case, Kontakt can't handle it, but Kontakt could handle it if the pitch-based keyswitches are used. I really think everyone using Kontakt should standardize on either PC or NoteOn keyswitches for that reason. Or NoteOn velocity would be good also so that you only need to use up one pitch on the keyboard for it.

but I digress....


----------



## Casiquire

Are there clear step by step instructions? I'm having trouble getting things working. It seems like the delay compensation in the script is stuck at 100 ms regardless of velocity, which means that I'm facing the same inconsistent delay that i would without the script.


----------



## Dewdman42

The script cannot tell if and when you click on the CSS instrument GUI buttons to change articulations. It has to "respond" to incoming keyswitches to change the articulation. When you send keyswitches to Kontakt...first it will go to the multi-script...which will then keep track that you are in "staccato" mode for example....and of course the keyswitch will change the instrument too.


----------



## Casiquire

Dewdman42 said:


> The script cannot tell if and when you click on the CSS instrument GUI buttons to change articulations. It has to "respond" to incoming keyswitches to change the articulation. When you send keyswitches to Kontakt...first it will go to the multi-script...which will then keep track that you are in "staccato" mode for example....and of course the keyswitch will change the instrument too.


Were you replying to me? My understanding of the script is that it brings everything to the same level of delay that way everything is consistent, can be played on the grid, and all you do is nudge the track back 330ms. I'm not seeing that happen though. Different legato speeds seem to still have different delays, and the script reads out 100ms regardless of the legato speed I'm playing


----------



## Dewdman42

yes I was replying to you. I will be testing it more thoroughly, but how did you determine that its only reading out 100ms? If you are looking at the buttons on the GUI that show the pitch number along with the delay amount..then again..I say...did you send keyswitches to change articulations?


----------



## Casiquire

Dewdman42 said:


> yes I was replying to you. I will test it more thoroughly, but how did you determine that its only reading out 100ms? If you are looking at the buttons on the GUI that show the pitch number along with the delay amount..then again..I say...did you send keyswitches to change articulations?


There is a little readout in the script every time you play a note, and it says "100ms" no matter what. I am not using keyswitches, I'm just trying to get the basics, just a couple simple monophonic legato notes. Certainly the faster notes should shouldn't be delayed the same amount as the slower ones?


----------



## ALittleNightMusic

Casiquire said:


> There is a little readout in the script every time you play a note, and it says "100ms" no matter what. I am not using keyswitches, I'm just trying to get the basics, just a couple simple monophonic legato notes. Certainly the faster notes should shouldn't be delayed the same amount as the slower ones?


This happened to me until I properly was using the expected key switches to switch between arts. The script needs that it seems, even for legato only.


----------



## Dewdman42

The readouts work correctly for me also. Most likely you are sending the wrong keyswitches @Casiquire , I agree.


----------



## Casiquire

ALittleNightMusic said:


> This happened to me until I properly was using the expected key switches to switch between arts. The script needs that it seems, even for legato only.


So hit the keyswitches first? I'll try it out, thanks!


----------



## Dewdman42

A nice improvement for this script would be to display a message on those buttons when keyswitches come in also. Maybe I'll add that later if the second author Nenod doesn't.


----------



## Leandro Gardini

Dewdman42 said:


> As Sarah said, the script cannot eliminate the delay...but this script is supposed to pad everything out...so once you set the delay times, you use the max delay time as the negative track delay on your recorded midi track..then it should all work out. But there is no way to eliminate delay while playing in the part.
> 
> I haven't used this version of this script yet, I was using the previous 1.6 version which is a bit different so I will check this out later in more detail...
> 
> I'm not sure why CC13 is related here?
> 
> I don't know why this script insists on using the CC58 keyswitches, Kontakt has known problems when using CC instrument switches and I strongly recommend against them. It comes up in rare situations like if you have a chord on the same midi tick and some notes are using different CC58 switch then other notes on the same chord. Unusual, but possible. In that case, Kontakt can't handle it, but Kontakt could handle it if the pitch-based keyswitches are used. I really think everyone using Kontakt should standardize on either PC or NoteOn keyswitches for that reason. Or NoteOn velocity would be good also so that you only need to use up one pitch on the keyboard for it.
> 
> but I digress....


I didn't use the best word. I meant that the delay is blatant with the script. The strings are out of sinc with the rest of the orchestra. Sometimes when starting to playback from the middle of the project it seems the script is increasing the amount of delay. Totally crazy!
Do you recommend I use KS instead?


----------



## Dewdman42

That sounds like it could be a problem in the script honestly, I need to do some testing of my own..I was going to write a script like this myself but I have decided to instead put this one through rigorous testing and analysis to see if there are any timing problems that need to be fixed and maybe I'll just tweak this one, as it looks quite comprehensive already. 

If you start something in the middle are you sure you're not starting after a non-chased keyswitch or something?

anyway, I can't really say more until I dig into it more deeply I just wanted to see what specific problem you're having and make sure its not something obvious, thanks for the feedback.

In answer to your question, I avoid CC instrument switches like the plague. But that's just me. Kontakt internals are not well suited for using CC instrument switches, none of the instrument makers should be doing it.


----------



## ALittleNightMusic

leogardini said:


> I didn't use the best word. I meant that the delay is blatant with the script. The strings are out of sinc with the rest of the orchestra. Sometimes when starting to playback from the middle of the project it seems the script is increasing the amount of delay. Totally crazy!
> Do you recommend I use KS instead?


I think you may not be using the script correctly. When I use it, everything is exactly in time with the click.


----------



## Ihnoc

Dewdman42 said:


> That sounds like it could be a problem in the script honestly, I need to do some testing of my own..I was going to write a script like this myself but I have decided to instead put this one through rigorous testing and analysis to see if there are any timing problems that need to be fixed and maybe I'll just tweak this one, as it looks quite comprehensive already.
> 
> If you start something in the middle are you sure you're not starting after a non-chased keyswitch or something?
> 
> anyway, I can't really say more until I dig into it more deeply I just wanted to see what specific problem you're having and make sure its not something obvious, thanks for the feedback.
> 
> In answer to your question, I avoid CC instrument switches like the plague. But that's just me. Kontakt internals are not well suited for using CC instrument switches, none of the instrument makers should be doing it.


I would certainly value any criticism you have!


----------



## Gingerbread

Would it be possible for someone to make a video tutorial demonstrating the install, and use of the features of CSS Control Panel? It's possible some of the questions people have would be answered effectively if they could see it in action, so their expectations would be based on how it actually performs.


----------



## Craig Allen

Gingerbread said:


> Would it be possible for someone to make a video tutorial demonstrating the install, and use of the features of CSS Control Panel? It's possible some of the questions people have would be answered effectively if they could see it in action, so their expectations would be based on how it actually performs.


Would LOVE this.


----------



## Mattia Chiappa

Any kind soul willing to help me? It doesn't seem to do much for me. Is there anything else I need to do beyond hit start and delay the track in my DAW by -330ms? The script doesn't seem to do anything for me, I must surely be missing something. The display confirms indeed that the notes are not being delayed. I've read the whole thread looking for some answers but did not understand much of it.


----------



## gst98

Mattia Chiappa said:


> Any kind soul willing to help me? It doesn't seem to do much for me. Is there anything else I need to do beyond hit start and delay the track in my DAW by -330ms? The script doesn't seem to do anything for me, I must surely be missing something. The display confirms indeed that the notes are not being delayed. I've read the whole thread looking for some answers but did not understand much of it.


Are you switching with both keyswitches and CC58?


----------



## Mattia Chiappa

gst98 said:


> Are you switching with both keyswitches and CC58?


You see I'm not really sure what that means. I've left it as default. I just figured out if I "enable delay always on" it does seam to react to different velocities. I still cannot seem to use all the other functions though cause I don't really understand how it all works.


----------



## Mattia Chiappa

actually delay always on only displays a delay of 100ms regardless of the velocity value. is this supposed to happen?


----------



## muk

Mattia Chiappa said:


> actually delay always on only displays a delay of 100ms regardless of the velocity value. is this supposed to happen?



Yes. This is the 'recording mode', where everything is delayed by the same amount. When finished recording a track, set cc13 to 126. That is the switch to 'playback/rendering mode', where notes have various delays depending on note velocity. And switch on 'Advanced legato' in the CSS GUI.

So it is cc13 at a low value and standard legato in CSS = same delay for every note. cc13 at high value and advanced legato in CSS = delay according to note velocity.


----------



## Mattia Chiappa

muk said:


> set cc13 to 126. That is the switch to 'playback/rendering mode', where notes have various delays depending on note velocity


yes thank you! but how do I do that?


----------



## gst98

Mattia Chiappa said:


> You see I'm not really sure what that means. I've left it as default. I just figured out if I "enable delay always on" it does seam to react to different velocities. I still cannot seem to use all the other functions though cause I don't really understand how it all works.


Are you doing this by setting up articulation sets? it's really the only way to use this effectively. The script picks up on CC58 to change delay timings.


Mattia Chiappa said:


> yes thank you! but how do I do that?


I set a fader on my controller to be cc13, I slide it down when I play in live for low latency, and then slide it up to have the timed delays from the script. You can assign it to whatever you want though.


----------



## muk

Mattia Chiappa said:


> yes thank you! but how do I do that?



You do it exactly the same way as you add cc1 (modulation). Either set a fader to control cc13 as @gst98 wrote. Or open the lane in your daw where your cc1 data is, in the dropdown menu select cc13 instead, and write in the data with the pencil tool.


----------



## Mattia Chiappa

gst98 said:


> Are you doing this by setting up articulation sets? it's really the only way to use this effectively. The script picks up on CC58 to change delay timings.
> 
> I set a fader on my controller to be cc13, I slide it down when I play in live for low latency, and then slide it up to have the timed delays from the script. You can assign it to whatever you want though.


Thanks for trying to help. I've tried to set this up in logic, I don't want to mess with my controller at the moment, nothing changed doing what you recommended but it must be me. It would be great if someday could make a quick video on how to set this up. I'm sure many people could benefit from it.


----------



## Casiquire

Mattia Chiappa said:


> Thanks for trying to help. I've tried to set this up in logic, I don't want to mess with my controller at the moment, nothing changed doing what you recommended but it must be me. It would be great if someday could make a quick video on how to set this up. I'm sure many people could benefit from it.


I agree. It's very confusing to figure the script out without more detailed documentation.


----------



## muk

It's intimidating at first, but it's actually very simple to use once you wrapped your head around it.

Download the script (nkp-file) and put it in the Kontakt presets folder. On Windows, it is in this path by default I think:

C:\Users\yourpcname\Documents\Native Instruments\Kontakt 5\presets\Multiscripts

Adjust accordingly if you have Kontakt 6 obviously, or if you are using a custom preset location.

1. Load the script in Kontakt






2. Now your Kontakt instance will look like this. In the CSS GUI, set legato mode to 'Standard':






3. In your DAW, set track delay to -330ms:






Also, set cc13 to a value of 1 (see step 6. for picture)

4. Record your track. The delay will be the same for every note, so you can record with the same timing for everything.

5. When you've finished recording, in the CSS GUI set Legato mode to 'Advanced':






6. In your DAW, set cc 13 to the value 127:







Done. Your track will now play back with various legato speeds depending on note velocity. All delays are automatically compensated by the script.

You can do this once and then save everything as a template. Next time you load up the template, the script, delay, and cc13 will be set already. All you have to do is record. After that switch on advanced legato in CSS, and increase the value of cc13 from 1 to 127.


----------



## muk

Step 1b, to make the process even clearer.

If you put the nkp-file in the right folder, it will show up under presets - user. That's where you can load the script in Konakt after pressing the 'NKP'-button (step 1):


----------



## Casiquire

muk said:


> It's intimidating at first, but it's actually very simple to use once you wrapped your head around it.
> 
> Download the script (nkp-file) and put it in the Kontakt presets folder. On Windows, it is in this path by default I think:
> 
> C:\Users\yourpcname\Documents\Native Instruments\Kontakt 5\presets\Multiscripts
> 
> Adjust accordingly if you have Kontakt 6 obviously, or if you are using a custom preset location.
> 
> 1. Load the script in Kontakt
> 
> 
> 
> 
> 
> 
> 2. Now your Kontakt instance will look like this. In the CSS GUI, set legato mode to 'Standard':
> 
> 
> 
> 
> 
> 
> 3. In your DAW, set track delay to -330ms:
> 
> 
> 
> 
> 
> 
> Also, set cc13 to a value of 1 (see step 6. for picture)
> 
> 4. Record your track. The delay will be the same for every note, so you can record with the same timing for everything.
> 
> 5. When you've finished recording, in the CSS GUI set Legato mode to 'Advanced':
> 
> 
> 
> 
> 
> 
> 6. In your DAW, set cc 13 to the value 127:
> 
> 
> 
> 
> 
> 
> 
> Done. Your track will now play back with various legato speeds depending on note velocity. All delays are automatically compensated by the script.
> 
> You can do this once and then save everything as a template. Next time you load up the template, the script, delay, and cc13 will be set already. All you have to do is record. After that switch on advanced legato in CSS, and increase the value of cc13 from 1 to 127.


Thanks for that, and something like that needs to be on the website. But it doesn't quite cover everything. I was doing exactly this, and everything was still only delaying by 100ms. Commenters here said that the issue was i needed to use a keyswitch to kick things off. I haven't been able to test this much since then.


----------



## Craig Allen

Thank you, guys!
Eager to try.


----------



## Saxer

I tried in Logic and somehow the CC13 is reset when I hit start or rec in Logic. So with the CC13 fader up there's the full 330ms delay. If I move the CC13 fader down I can play in realtime but as far as I hit record the delay is back again. Not possible to record something this way. If I move the fader down after starting the recording it works but then it records the CC13 too. So I have to remove the CC13 after each recording.
Maybe that behavior is part of my Logic template (something strange in there). Have to figure out. Did that happen elsewhere too?


----------



## Ihnoc

Casiquire said:


> Thanks for that, and something like that needs to be on the website. But it doesn't quite cover everything. I was doing exactly this, and everything was still only delaying by 100ms. Commenters here said that the issue was i needed to use a keyswitch to kick things off. I haven't been able to test this much since then.


I will rewrite the documentation at some point, but everything you need to know is written on the page and repeated in the script in the help tab. I have done my best to explain things in the UI itself, within the limitations of the ghastly UI options for Kontakt Multi Scripts. I am glad @muk wrote this out in such a way though - hopefully it will help you here too!

It is worth reminding people that this is not a commercial venture or service by any means - there should not be an expectation that it is flawless or will hold your hand. It is a quick fix I made for myself that I have shared with others.

I hope you understand.


----------



## Casiquire

Ihnoc said:


> I will rewrite the documentation at some point, but everything you need to know is written on the page and repeated in the script in the help tab. I have done my best to explain things in the UI itself, within the limitations of the ghastly UI options for Kontakt Multi Scripts. I am glad @muk wrote this out in such a way though - hopefully it will help you here too!
> 
> It is worth reminding people that this is not a commercial venture or service by any means - there should not be an expectation that it is flawless or will hold your hand. It is a quick fix I made for myself that I have shared with others.
> 
> I hope you understand.


Of course, i do appreciate your work very much and if i sound frustrated it's only because of just how massively helpful the tool looks like it will be when it's set up properly! Thank you


----------



## dko22

I've been very impressed by the sound quality of the CSS solo strings and am planning to build out my collection from Cinematic Studio. There is one thing that I just discovered which doesn't directly relate to the script but perhaps someone can confirm anyway. If you use the Steinberg MonoDelay (in Cubase or Dorico) to synch with other libraries, it generally does a good job with Alex's script. However, when I try it with a CS instrument, every note sounds twice -- at both the unadjusted and delayed time. So the CS piano, for instance, which has no inbuilt delay, is unusable in this context. Does anyone know what's the reason for this behaviour and how to get rid of it?


----------



## Ihnoc

dko22 said:


> I've been very impressed by the sound quality of the CSS solo strings and am planning to build out my collection from Cinematic Studio. There is one thing that I just discovered which doesn't directly relate to the script but perhaps someone can confirm anyway. If you use the Steinberg MonoDelay (in Cubase or Dorico) to synch with other libraries, it generally does a good job with Alex's script. However, when I try it with a CS instrument, every note sounds twice -- at both the unadjusted and delayed time. So the CS piano, for instance, which has no inbuilt delay, is unusable in this context. Does anyone know what's the reason for this behaviour and how to get rid of it?


MonoDelay is an Audio _insert effect_. You can certainly do things this way but it seems a bit counterintuitive to me. The script, and even the Cinematic Studio series developer, refer to track delay, which is set on your MIDI/Instrument _tracks _(exists for Audio tracks too).

If you're getting doubled notes, it sounds like that's because you are using a delay insert effect in the way it is intended?


----------



## dko22

I was using MonoDelay as someone had suggested it as a good solution in this context and indeed can work when synching with other libraries though I had come to suspect, as you say, that it's not always ideal. Track delay has not yet been implemented in Dorico (it's on the roadmap) though you can get the same effect by applying a global offset to all notes so I'm able to work my way around.

Of course Dorico is not officially supported by CS and there are features in e.g Cubase --- like track delay --which can make working with it a bit more straightforward but overall Dorico has a number of advantages like an already much more advanced and easier to use Expression maps system and I'll likely be sticking with it as my primary composition tool.


----------



## Casiquire

Has anybody else been able to get this to work in Reaper, and also happens to have the patience to talk me through some of it? Much appreciated


----------



## Casiquire

In case anyone else is struggling, I've figured one thing out, and things are *almost* working perfectly. I'm pretty excited about getting this figured out. In case anyone's wondering what part of my struggle was, i thought that C1 was the legato keyswitch because it's all I've used to get legato. For the sake of the script though, the keyswitch it's looking for is A#1. With that correction everything lines up perfectly with the grid plus 330ms, EXCEPT for those first notes in a legato phrase. Those are still coming in way early, and it seems unaffected by what I select for the first note delay under the delay tab. Any ideas? Thanks!


----------



## dko22

C1 (or C0 with Kontakt's mapping) is always sustain - whether legato is switched on or off has nothing to do with this switch. For legato you can also use determine the type through C58, 1-10. If you the lower half of the range which eliminates the slow legato, you may find the timing to be less problematic.


----------



## Casiquire

dko22 said:


> C1 (or C0 with Kontakt's mapping) is always sustain - whether legato is switched on or off has nothing to do with this switch. For legato you can also use determine the type through C58, 1-10. If you the lower half of the range which eliminates the slow legato, you may find the timing to be less problematic.


How about getting the first note to line up though? The slower legato sounds better and it's lining up with the beat just fine


----------



## Getsumen

Casiquire said:


> How about getting the first note to line up though? The slower legato sounds better and it's lining up with the beat just fine


The first note should line up fine. Can you check the script's output (the little bar) and see what the value outputted is, and what the legato phrase length is?

It should make it so the first note of every legato phrase is set to -100. If the legato phrase length isn't increasing, and the first note isn't 100ms something is off


----------



## Casiquire

Getsumen said:


> The first note should line up fine. Can you check the script's output (the little bar) and see what the value outputted is, and what the legato phrase length is?
> 
> It should make it so the first note of every legato phrase is set to -100. If the legato phrase length isn't increasing, and the first note isn't 100ms something is off


That's what i mean. The output shows slow legato like I'd expect, but the sound is coming early on the first note. It's set to -100 in the delay tab like i believe it should be, but changing that number doesn't seem to do anything at all which makes me think something is not connecting. Imagine it sees the first note onset no differently than a legato transition, so the script is compensating for 330ms on the starting note instead of just 100.

I'm not sure if it's related but the legato phrase length just keeps increasing even aftera phrase has finished. It feels to me like that might have something to do with it? I'm so close to having this working, and i really appreciate everyone's help


----------



## Casiquire

ka00 said:


> It’s not in front of me right now, but you could try adjusting the delay correction to be on always on instead of triggered by CC13. On a tab relating to the delay settings, you’ll see a button that says delay always on or something to that effect. Give that a try in case it’s related. The alternative method for enabling the delay is to write CC13 data on your track to turn the delay correction on or off, which helps when playing in lines vs playing them back.


I do have it always on, but i guess i could try switching to CC13 just to see what happens. Thanks!


----------



## Getsumen

Casiquire said:


> That's what i mean. The output shows slow legato like I'd expect, but the sound is coming early on the first note. It's set to -100 in the delay tab like i believe it should be, but changing that number doesn't seem to do anything at all which makes me think something is not connecting. Imagine it sees the first note onset no differently than a legato transition, so the script is compensating for 330ms on the starting note instead of just 100.
> 
> I'm not sure if it's related but the legato phrase length just keeps increasing even aftera phrase has finished. It feels to me like that might have something to do with it? I'm so close to having this working, and i really appreciate everyone's help


Yeah, the legato phrase should reset to 0 after a phrase ends.
Actually, I'm not sure if it's semi bugged because the count for the phrase length doesn't always change correctly, but for me at least it'll always reset to 0 after I stop playing a note. 

I'm wondering if it might possibly be a sustain pedal bug to make it think the note is constantly held? Then again if the note isn't actually playing I'm not sure. Might be worth a shot to give it a wiggle and see if it does anything. (I doubt it but worth a shot)


----------



## chapbot

I'd use CSS more if it wasn't such a pain in the ass and required a complicated software fix that I'm too stupid to understand lol


----------



## Ihnoc

Casiquire said:


> I'm not sure if it's related but the legato phrase length just keeps increasing even aftera phrase has finished. It feels to me like that might have something to do with it? I'm so close to having this working, and i really appreciate everyone's help


Yes, this is the problem - thank you for mentioning this detail specifically. The script only does first note delay when that phrase length is 0. If not reset, it will continue as though it is a continuing phrase.

If you have a midi file you can share, even just the few bars that trigger this behaviour and I will take a look. Generally this seems to work fine for me, but I am keen to root out this issue.


----------



## Casiquire

Ihnoc said:


> Yes, this is the problem - thank you for mentioning this detail specifically. The script only does first note delay when that phrase length is 0. If not reset, it will continue as though it is a continuing phrase.
> 
> If you have a midi file you can share, even just the few bars that trigger this behaviour and I will take a look. Generally this seems to work fine for me, but I am keen to root out this issue.


Thanks! I may not have much opportunity to share midi for the next day or so, but from memory i leave all the defaults in the script, hit "start", enable delay always on, and hit a high velocity keyswitch on the low C for sustain and the A# above it for advanced legato. That should be everything i do.


----------



## teammwrp

Casiquire said:


> Thanks! I may not have much opportunity to share midi for the next day or so, but from memory i leave all the defaults in the script, hit "start", enable delay always on, and hit a high velocity keyswitch on the low C for sustain and the A# above it for advanced legato. That should be everything i do.


Hey there, I'm running into the same issue. For some reason the legato phrase length won't reset in between phrases. It'll still detect whether it's fast, medium, or slow legato. But it just continues the legato phrase length.


----------



## Ihnoc

teammwrp said:


> Hey there, I'm running into the same issue. For some reason the legato phrase length won't reset in between phrases. It'll still detect whether it's fast, medium, or slow legato. But it just continues the legato phrase length.


Again, if you'd be happy to send a midi file that shows this, it would help a lot.


----------



## Casiquire

Ihnoc said:


> Again, if you'd be happy to send a midi file that shows this, it would help a lot.


Just pulled this directly from a counterpoint text so it's not anything interesting, but the issue happens no matter what I'm playing.


----------



## aka70

Hi @Ihnoc, is this updated with the 1.3 update of CSW? 

The only problem for me remaining is the CC Delayed. So when you write some CC 1 data, you can clearly hear that is not delayed properly.


----------



## lucor

Is the script currently broken in regards to CCs? I've tried all possible settings regarding delaying CCs, but my CC1 modwheel data is never in sync, no matter what. Or am I missing something?


----------



## aka70

Casiquire said:


> Just pulled this directly from a counterpoint text so it's not anything interesting, but the issue happens no matter what I'm playing.


It seems to me that you are not using CC13 to activate the scripting


----------



## aka70

lucor said:


> Is the script currently broken in regards to CCs? I've tried all possible settings regarding delaying CCs, but my CC1 modwheel data is never in sync, no matter what. Or am I missing something?


Try the script from @img  post #327, page 17. That's the only one working for me with CC data.


----------



## Casiquire

aka70 said:


> It seems to me that you are not using CC13 to activate the scripting


Is that necessary whole using the always-on button?


----------



## aka70

Casiquire said:


> Is that necessary whole using the always-on button?


That's the point, if you want to hear the music in tempo synced you have to put it higher than 65. Set CC13 to 127, that's all. 

If you want to play the music from your keyboard then you should use cc13 from value 0-64 to deactivate the script, otherwise you would hear the delay and it would be very hard to play


----------



## aka70

Hello @Ihnoc, and @img can this scenario be fixed??

In the midi below you will find that the last note it's not playing! You can replicate it anytime if you just put 2 "fast" notes in succession with the first (fast velocity) and the second (slow velocity).

The problem seems to be the fact that the script delays the first note by 100ms and the second one trying to delay it by 330ms, which seems to overlap and not playing at all!

Variant one has the problem, variant 2 has also the same problem.
Variant 3 it's playing correctly because I think the script has "time" to play first the fast, then medium and lastly the slow legato, so it doesn't overlap 

TEMPO for MIDI = 70BPM


----------



## Casiquire

aka70 said:


> That's the point, if you want to hear the music in tempo synced you have to put it higher than 65. Set CC13 to 127, that's all.
> 
> If you want to play the music from your keyboard then you should use cc13 from value 0-64 to deactivate the script, otherwise you would hear the delay and it would be very hard to play


I'm not following. What's the difference between the always on switch being activated and not being activated?


----------



## aka70

Casiquire said:


> I'm not following. What's the difference between the always on switch being activated and not being activated?


I misread your post! Sometimes the script doesn't activate by himself, so maybe try to move the cc13 before your notes start

I was having the same problem but as soon as I did the Sound variations (Studio One) to CSS and selected the Legato "keyswitch" the script did it's job!


----------



## JohannesR

I ran into the same problem with the script not being able to detect the first note of a legato passage, and delay the note accordingly.

I double checked, and it seems Kontakt 6 breaks the script - I tried with 6.6.1. It works flawlessly in the latest Kontakt 5 version (5.8.1).

@Ihnoc I know this isn't a commercial script in any way, but I'd be happy to drop some coin if you updated it. That would be well-deserved, it's a very nice tool you've created!

Edit: Now I got it to work in Kontakt 6. Not exactly sure what's going on, and why I had the same problem as @Casiquire earlier today. I'll see how everything plays out!


----------



## Oldsicord

Hello,
If you successfully use this script in Logic pro X, it would be very useful to make a video tutorial, screenshots to show for example how you handle the settings for CC 13 and CC 58 in Logic.
I'm not sure if I've optimized my settings for the best results. I have the impression that with me it turns out moderately well, and that it could give much better results.
So thank you in advance for sharing your successful experience, your advice, your observations,and some documents that might help.


----------



## Oldsicord

The Ihnoc's script is a great solution for the delay of legatos. He gave the maximum amount of help... I read the whole discussion. Lots of contribution and mutual aid arent for Reaper, Cubase etc...If people using this script with LOgic could share their experience with others, that would be great. For my part, I am not sure I know how to manage the recommended settings for CC13 and CC58 with the right Logic tools.


----------



## Go To 11

@Ihnoc Hi there and thank you again for this brilliant script. Do you have any plans to update it for Cinematic Studio Woodwinds 1.3, with its two legato types? Cheers!


----------



## mohsohsenshi

Anybody in Logic Pro using VEP with this brilliant script?

In Logic Pro VEP tracks are "Aux" instead of normal inst tracks, so the track delay offset is unavailable.
I use the region delay but it vary at different project tempo, in other word you can't make any tempo change during playback or it will mess up with your CSS track.

Need help and thank you in advance!


----------



## Saxer

mohsohsenshi said:


> In Logic Pro VEP tracks are "Aux" instead of normal inst tracks, so the track delay offset is unavailable.


I think since Logic 10.6 this restriction is gone


----------



## shireen

Hello all, I need some help with this script - I have ut loaded in my kontakt instruments but whenever I close my template and re-open it, the script is disabled and I have to activate it on each instrument all over again (which gets annoying). Any way around this? thank you

EDIT - screenshot of the how it looks when the project is loaded.


----------



## ScrltPumpernickel

shireen said:


> Hello all, I need some help with this script - I have ut loaded in my kontakt instruments but whenever I close my template and re-open it, the script is disabled and I have to activate it on each instrument all over again (which gets annoying). Any way around this? thank you
> 
> EDIT - screenshot of the how it looks when the project is loaded.


It behaves the same for me as well, but I always assumed, that's how Kontakt works.


----------



## Nando Florestan

What sequencer are you guys using? I use Reaper and it just works. Your problem is very strange...


----------



## ScrltPumpernickel

Nando Florestan said:


> What sequencer are you guys using? I use Reaper and it just works. Your problem is very strange...


I also use Reaper and I have to start the script(s) every time I load a project. (Kontakt 6.6.1 VST3).


----------



## sathyva

Hi guys
i have some problems with the 1.8 version ( that i didn’t have with my first try with 1.5)
i‘m on Cubase Pro 10, Kontakt 6.6.1, CSS and sometimes CSSS for layering.
Track delay is at -330 as usual, cc13 is all the way up ( or delay button always on )
Everything is on the grid but i still have a huge delay :(
When cc13 is all the way down ( or delay button off ), everything is ok..
What am i missing ?
Thanks for help.


----------



## Casiquire

Nando Florestan said:


> What sequencer are you guys using? I use Reaper and it just works. Your problem is very strange...


I use Reaper too, and nothing about it has ever "just worked" unfortunately. I finally have consistent legato timing, and now the last note just hangs in every phrase. Also the note onset is not delayed properly so it still kicks in early.

Can I return CSS? How does anyone even use this?!


----------



## ALittleNightMusic

Casiquire said:


> I use Reaper too, and nothing about it has ever "just worked" unfortunately. I finally have consistent legato timing, and now the last note just hangs in every phrase. Also the note onset is not delayed properly so it still kicks in early.
> 
> Can I return CSS? How does anyone even use this?!


Works fine in Cubase, S1, and Logic over here. Sounds like maybe Reaper is what you should return


----------



## Casiquire

ALittleNightMusic said:


> Works fine in Cubase, S1, and Logic over here. Sounds like maybe Reaper is what you should return


Just a couple comments above you is a Reaper user without problems. Meanwhile I'm done making or accepting excuses for a library whose timing within the same patch varies by a third of a second


----------



## ALittleNightMusic

Casiquire said:


> Just a couple comments above you is a Reaper user without problems. Meanwhile I'm done making or accepting excuses for a library whose timing within the same patch varies by a third of a second


Well you did ask "how does anybody use this" - plenty of us do (including that John Powell fellow). This particular script is basically doing exactly what MSS does with their lookahead feature. It's literally no different. So, given you love MSS, CSS is used in nearly the same way.


----------



## Casiquire

ALittleNightMusic said:


> Well you did ask "how does anybody use this" - plenty of us do (including that John Powell fellow). This particular script is basically doing exactly what MSS does with their lookahead feature. It's literally no different. So, given you love MSS, CSS is used in nearly the same way.


It's built into MSS. If the script worked right for me i wouldn't even be commenting now. But i will never stop finding it amazing when people defend the design of the library...

...*on a couple-hundred-post thread of a popular script made by a random forum user who had to fix the library*


----------



## Casiquire

Back on topic, does anyone know why it isn't detecting note-offs?


----------



## ALittleNightMusic

Casiquire said:


> It's built into MSS. If the script worked right for me i wouldn't even be commenting now. But i will never stop finding it amazing when people defend the design of the library...
> 
> ...*on a couple-hundred-post thread of a popular script made by a random forum user who had to fix the library*


You do realize (I would hope) that _nearly every_ library has variable delay in it (shorts vs longs especially) - Spitfire, MSS, MSB, CSS, Berlin, etc. MSS is one of the few that have the auto-delay unification script built in but for other libraries, there's no script - just your ears. At least CSS / CSB / CSW has a script somebody made. By your logic, every library is broken by design.


----------



## Casiquire

ALittleNightMusic said:


> You do realize (I would hope) that _nearly every_ library has variable delay in it (shorts vs longs especially) - Spitfire, MSS, MSB, CSS, Berlin, etc. MSS is one of the few that have the auto-delay unification script built in but for other libraries, there's no script - just your ears. At least CSS / CSB / CSW has a script somebody made. By your logic, every library is broken by design.


Not by a third of a second. None of them seem to be third party script fixes Anyway I'm ready to get back on topic.


----------



## Dewdman42

CSS does have one of the longest legato latencies out there...but its also rather reknown for its legatos. It is what it is. If you want cool legatos and accurate string sound attacks...the latency issue is something you have to accept and learn how to program to. Simple as that.


----------



## Casiquire

ka00 said:


> @Casiquire I got the impression you didn’t love the tone of the library and it’s usability. Apologies if I’m mistaken. It’s okay if it’s not for you. As stated, for plenty of people it’s the best library out there. It’s okay to set it aside and move on. Yes, as with most of the industry, as you know, there are no returns.


I do like the tone and expression quite a bit. The usability is awful though. That's why I'm interested in how i can get the script to work right for me. Plus i feel like the script might work, but there's no tutorial or instructions. So far i need to use two keyswitches and a CC to get it going which i had to learn one complaint at a time here, so every time we go through this ring around the rosy I'm one step closer to the functionality i expect and get out of other libraries, which is why I'm being so curt and ready to get to the troubleshooting instead of the song and dance. These posts for help have yielded actual results. Three times now


----------



## ALittleNightMusic

The way I got the script to work is 1) I don't use CC13 to turn it on or off - I just toggle the button on in the third screen to always be on (you can bypass the KSP if you really need to)






2) You have to use CC58 to send through the articulations (even for the very first note!) - the script uses that to detect what delay it should be compensating for (the status bar in the script will show this change if you do it right). Legato notes need to be overlapped.






Expression Map:





Alternatively to the script, I have a macro setup in Cubase that can move notes based on velocity (and you can set the entire track back -60ms to compensate for the shorts).


----------



## Casiquire

Side note, huge thanks to everyone who's helped me with the over the last few months too. Every time i get suggestions it might take a couple weeks for me to try them out but so far every one has been helpful and at this stage, thanks to the awesome people here, everything is working really well outside the releases. I really hate being all negative. Hopefully that does come across as out of character.



ALittleNightMusic said:


> The way I got the script to work is 1) I don't use CC13 to turn it on or off - I just toggle the button on in the third screen to always be on (you can bypass the KSP if you really need to)
> 
> 
> 
> 
> 
> 
> 2) You have to use CC58 to send through the articulations - the script uses that to detect what delay it should be compensating for (the status bar in the script will show this change if you do it right). Legato notes need to be overlapped.


CC58? What does that one do? Thanks I'll mess with it!

For any noobs out there, my understanding is that we also need to keyswitch C0 to trigger sustains, A#0 at high velocity to trigger legato, and CC13 up. It doesn't work for me without CC13; the always on button seems to serve no purpose


----------



## ALittleNightMusic

Casiquire said:


> Side note, huge thanks to everyone who's helped me with the over the last few months too. Every time i get suggestions it might take a couple weeks for me to try them out but so far every one has been helpful and at this stage, thanks to the awesome people here, everything is working really well outside the releases. I really hate being all negative. Hopefully that does come across as out of character.
> 
> 
> CC58? What does that one do? Thanks I'll mess with it!
> 
> For any noobs out there, my understanding is that we also need to keyswitch C0 to trigger sustains, A#0 at high velocity to trigger legato, and CC13 up. It doesn't work for me without CC13; the always on button seems to serve no purpose


CC58 is the default key switch CC (see page 8 of the CSS manual). I am using the Babylonwaves expression maps - once I started setting the articulations (even for the very first note), things started working great with the script.


----------



## jadedsean

Casiquire said:


> I use Reaper too, and nothing about it has ever "just worked" unfortunately. I finally have consistent legato timing, and now the last note just hangs in every phrase. Also the note onset is not delayed properly so it still kicks in early.
> 
> Can I return CSS? How does anyone even use this?!


Hey man, if your using Reaper use these scripts that where developed by Caleb, i have been using them for years. Works like a charm. The legato script is great because it takes into account the type of legato that was played. Shorts are also bang on, and you also get a script for a delay offset within the midi editor so you can type it in manually if you want to be extra detailed. I find this a better solution than Reapers delay offset as it doesn't work with different types of legato. Let me know if they work for you.


----------



## Casiquire

jadedsean said:


> Hey man, if your using Reaper use these scripts that where developed by Caleb, i have been using them for years. Works like a charm. The legato script is great because it takes into account the type of legato that was played. Shorts are also bang on, and you also get a script for a delay offset within the midi editor so you can type it in manually if you want to be extra detailed. I find this a better solution than Reapers delay offset as it doesn't work with different types of legato. Let me know if they work for you.


Yes thanks for the heads up! I'll give it a try


----------



## liquidlino

jadedsean said:


> Hey man, if your using Reaper use these scripts that where developed by Caleb, i have been using them for years. Works like a charm. The legato script is great because it takes into account the type of legato that was played. Shorts are also bang on, and you also get a script for a delay offset within the midi editor so you can type it in manually if you want to be extra detailed. I find this a better solution than Reapers delay offset as it doesn't work with different types of legato. Let me know if they work for you.


Holy smokes! Life changer!!!!!! I've been struggling with this since I bought CSS - had given up and was just using a single speed legato per track and was considering writing my own JSFX script for reaper to process incoming midi and add the delays - but this works amazing! CVT for the win!

At first I didn't think it was working, but then all of a sudden it started working - it actually changes all the midi note start times on the fly and then puts them back again. I even tested with tempo changes and gradual over time tempo changes, all works a charm!!!! Amazing!!!! Will be putting into my template now - just flipping great!

View attachment CVT Auto CSS.mp3


----------



## liquidlino

liquidlino said:


> Holy smokes! Life changer!!!!!! I've been struggling with this since I bought CSS - had given up and was just using a single speed legato per track and was considering writing my own JSFX script for reaper to process incoming midi and add the delays - but this works amazing! CVT for the win!
> 
> At first I didn't think it was working, but then all of a sudden it started working - it actually changes all the midi note start times on the fly and then puts them back again. I even tested with tempo changes and gradual over time tempo changes, all works a charm!!!! Amazing!!!! Will be putting into my template now - just flipping great!
> 
> View attachment CVT Auto CSS.mp3


However, I may still write that JSFX, here's my reasoning on how this could be even better:

1. I could have a single track with each section on, and use reaticulate to switch between all the artics
2. I can set the track to pre-delay of the max legato length in the template.
3. JSFX will then:
a. Look at what articulation is set in Rearticulate CC
b. Add a note start delay to match the articulation
i. Zero delay for ADvanced legato Slow
ii. Some delay for Advanced Legato medium (difference between slow and medium)
ii. Longer delay for Adv Leg Fast (e.g. the difference between slow and fast)
iii. Longest delay for shorts (difference between slow and shorts)
iv. etc

This will then be 100% tempo agnostic, and give a single track with no special naming or running scripts required, just put the JSFX in front of the Kontakt in the track fx list.

Good idea? Have I got something wrong with the idea?


----------



## liquidlino

liquidlino said:


> However, I may still write that JSFX, here's my reasoning on how this could be even better:
> 
> 1. I could have a single track with each section on, and use reaticulate to switch between all the artics
> 2. I can set the track to pre-delay of the max legato length in the template.
> 3. JSFX will then:
> a. Look at what articulation is set in Rearticulate CC
> b. Add a note start delay to match the articulation
> i. Zero delay for ADvanced legato Slow
> ii. Some delay for Advanced Legato medium (difference between slow and medium)
> ii. Longer delay for Adv Leg Fast (e.g. the difference between slow and fast)
> iii. Longest delay for shorts (difference between slow and shorts)
> iv. etc
> 
> This will then be 100% tempo agnostic, and give a single track with no special naming or running scripts required, just put the JSFX in front of the Kontakt in the track fx list.
> 
> Good idea? Have I got something wrong with the idea?


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.


----------



## jadedsean

liquidlino said:


> Holy smokes! Life changer!!!!!! I've been struggling with this since I bought CSS - had given up and was just using a single speed legato per track and was considering writing my own JSFX script for reaper to process incoming midi and add the delays - but this works amazing! CVT for the win!
> 
> At first I didn't think it was working, but then all of a sudden it started working - it actually changes all the midi note start times on the fly and then puts them back again. I even tested with tempo changes and gradual over time tempo changes, all works a charm!!!! Amazing!!!! Will be putting into my template now - just flipping great!
> 
> View attachment CVT Auto CSS.mp3


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.


----------



## liquidlino

liquidlino said:


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


Actualy, I just opened the script - not worth using CVT for shorts - it basically sets all shorts to -60ms - no point, might as well just use track pre-delay, it's easier and already caters for reaticulation keyswitches.

I noticed that Kudells sheet for pre-delays says that Marcato and Measured Trems should be -40ms, does everyone agree with that? If so, that'd be a reason to update the CVT script to cater for the different pre-delays, but otherwise no point in using it.


----------



## liquidlino

jadedsean said:


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


----------



## jadedsean

liquidlino said:


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


----------



## liquidlino

jadedsean said:


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


----------



## liquidlino

liquidlino said:


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


----------



## liquidlino

liquidlino said:


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


----------



## jadedsean

liquidlino said:


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


----------



## liquidlino

jadedsean said:


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


----------



## jadedsean

liquidlino said:


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


----------



## liquidlino

jadedsean said:


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


----------



## jadedsean

liquidlino said:


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





liquidlino said:


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


----------



## liquidlino

jadedsean said:


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


----------



## jadedsean

liquidlino said:


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


----------



## liquidlino

jadedsean said:


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


----------



## jadedsean

liquidlino said:


> 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


----------



## liquidlino

jadedsean said:


> Why not, nobody has really come up with a real solution, if you can i see no reason he could say no


Hmm, maybe I should target a real VST plugin rather than JSFX, make it cross-DAW compatible... now that's a REAL learning curve... never coded any VST before.


----------



## jadedsean

liquidlino said:


> Hmm, maybe I should target a real VST plugin rather than JSFX, make it cross-DAW compatible... now that's a REAL learning curve... never coded any VST before.


I think most CSS would for sure pay for it, i would of course.


----------



## liquidlino

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:





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





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.


----------



## liquidlino

liquidlino said:


> 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:
> 
> 
> 
> 
> 
> Set the CSS track to -333ms media playback offset:
> 
> 
> 
> 
> 
> 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.


----------



## Casiquire

liquidlino said:


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


----------



## liquidlino

Casiquire said:


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


----------



## Supremo

liquidlino said:


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


The patches become unplayable once you put this JSFX script. Too much latency gets added.


----------



## liquidlino

Supremo said:


> The patches become unplayable once you put this JSFX script. Too much latency gets added.


Hey, to be clear, this isn't supposed to make the legato playable. It's to allow for having different legato articulations within a single track without tons of tedious hand editing. I don't think anything is going to make the css legato advanced playable, 333ms of latency for the slow is just unplayable. I'd advise using the legacy legato for playing, and then can switch the midi to an advanced legato track and hand edit from there.


----------



## ka00

The last few pages with Reaper-specific problems and solutions would make a great spin-off thread.


----------



## jadedsean

liquidlino said:


> 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:
> 
> 
> 
> 
> 
> Set the CSS track to -333ms media playback offset:
> 
> 
> 
> 
> 
> 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.


He man great work, i have not test it out yet but i will let you know for sure. So when you say legato for a selected track, do you mean this wont work with CSS setup multitimbral? Also will all the CC info move as well as discussed?


----------



## liquidlino

jadedsean said:


> He man great work, i have not test it out yet but i will let you know for sure. So when you say legato for a selected track, do you mean this wont work with CSS setup multitimbral? Also will all the CC info move as well as discussed?


Actually, I was testing it last night and it's not moving the CC properly, so I'm going to fix that, along with refactoring all the code and combining all the different libraries into a single plugin with a drop down menu etc. Quite like this solution, so I'm going to put a bit of time into it, as it'll make life much easier. Taking down the original downloadable for now, as it's definitely not fit for purpose just yet.


----------



## jadedsean

liquidlino said:


> Actually, I was testing it last night and it's not moving the CC properly, so I'm going to fix that, along with refactoring all the code and combining all the different libraries into a single plugin with a drop down menu etc. Quite like this solution, so I'm going to put a bit of time into it, as it'll make life much easier. Taking down the original downloadable for now, as it's definitely not fit for purpose just yet.


Great man, really looking forward to the result. Hey as a Reaper user do you know if the delay offset in Reaper works with multitimbral instruments? On single tracks of course but i am not sure when tracks are grouped together.


----------



## liquidlino

jadedsean said:


> Great man, really looking forward to the result. Hey as a Reaper user do you know if the delay offset in Reaper works with multitimbral instruments? On single tracks of course but i am not sure when tracks are grouped together.


Not something I've tried to be honest... I bet that setting the pre-delay on the routing for group folders and bus tracks will work though, can't see why it wouldn't. Reaper is built so modularly, they've thought all that stuff through for sure. I'm only just starting to scratch the surface of Reaper...


----------



## Casiquire

jadedsean said:


> Great man, really looking forward to the result. Hey as a Reaper user do you know if the delay offset in Reaper works with multitimbral instruments? On single tracks of course but i am not sure when tracks are grouped together.


I believe i successfully tested it on nested tracks, but i could see situations where individual effects on the separate tracks may be affected so i can only speak about it in situations where there are no other effects in use before they track delay

Side note, are you using the Time Adjust Delay feature in Reaper or a different option to apply the delay?


----------



## jadedsean

Casiquire said:


> I believe i successfully tested it on nested tracks, but i could see situations where individual effects on the separate tracks may be affected so i can only speak about it in situations where there are no other effects in use before they track delay
> 
> Side note, are you using the Time Adjust Delay feature in Reaper or a different option to apply the delay?


Yes i was refering to the Time Adjust Delay, normally i use the delay offset script i attached before as i was not sure if the Time Adjust Delay functions correctly on multitimbral insruments. See attached picture, i just ran a test the fist wave form is the multi and the lower one a single track. As you can see there is a slight discrepancy but not really much to write home about. I should add that the multi was taken from the outputs of the mic positions, possible why there is a small difference.


----------



## liquidlino

Casiquire said:


> I believe i successfully tested it on nested tracks, but i could see situations where individual effects on the separate tracks may be affected so i can only speak about it in situations where there are no other effects in use before they track delay
> 
> Side note, are you using the Time Adjust Delay feature in Reaper or a different option to apply the delay?


I know you didn't ask me, but this is where I've been setting the pre-delay for all my tracks, in the routing menu for each track, the Media Playback Offset control. So I have this configured for each track, and each track is then limited/targeted for use with articualtions that match that pre-delay. So I have one track for all the shorts in CSS, and one track for legato, for each section. Same for BHCT etc.


----------



## Casiquire

liquidlino said:


> I know you didn't ask me, but this is where I've been setting the pre-delay for all my tracks, in the routing menu for each track, the Media Playback Offset control. So I have this configured for each track, and each track is then limited/targeted for use with articualtions that match that pre-delay. So I have one track for all the shorts in CSS, and one track for legato, for each section. Same for BHCT etc.


Nice, I've been playing with both and didn't know if there's a strong advantage for one over the other


----------



## Jared Le Doux

img said:


> AVO - CSCP 2.2.1
> - trifles


Thank you SO much for this update @img! The original script by Alex is amazing, but I was really missing the ability for CC's to be delayed by the correct amount during playback as well. Great stuff — going right into my template!


----------



## liquidlino

Jared Le Doux said:


> Thank you SO much for this update @img! The original script by Alex is amazing, but I was really missing the ability for CC's to be delayed by the correct amount during playback as well. Great stuff — going right into my template!


How weird, your comment ended up on this thread too...


----------



## Jared Le Doux

Haha, it's the same thread! Just a while back


----------



## Reoreyh

I absolutely cannot get more than 1 instance of the script to work. I've tried all the patches in CSS and they all work if they're the only instance of Kontakt running the script. The delay settings actually seem to work fine, but whatever patch comes after the first will not respond to any articulation changes.

Using Reaper.


----------



## liquidlino

Reoreyh said:


> I absolutely cannot get more than 1 instance of the script to work. I've tried all the patches in CSS and they all work if they're the only instance of Kontakt running the script. The delay settings actually seem to work fine, but whatever patch comes after the first will not respond to any articulation changes.
> 
> Using Reaper.


Have you tried my reaper JSFX solution? https://vi-control.net/community/th...d-jsfx-for-reaper-beta-testers-wanted.120405/


----------



## Reoreyh

liquidlino said:


> Have you tried my reaper JSFX solution? https://vi-control.net/community/th...d-jsfx-for-reaper-beta-testers-wanted.120405/


My computer is not assigning it a known file type. It's just a "file" file, so putting it where the installation says doesn't seem to do anything.

Edit: This is honestly insanity. I think I'll be returning my purchase of CSS. I've spent days trying to find a way around the ridiculous offsets. I can't find working scripts to nudge by milliseconds, even if I wanted to enact the painful labor of manually offsetting notes in the midi editor. I cannot fathom how anyone develops a work flow around such a product.


----------



## liquidlino

Reoreyh said:


> My computer is not assigning it a known file type. It's just a "file" file, so putting it where the installation says doesn't seem to do anything.
> 
> Edit: This is honestly insanity. I think I'll be returning my purchase of CSS. I've spent days trying to find a way around the ridiculous offsets. I can't find working scripts to nudge by milliseconds, even if I wanted to enact the painful labor of manually offsetting notes in the midi editor. I cannot fathom how anyone develops a work flow around such a product.


Not sure what you mean about putting the file there doesn't do anything? Once installed to the folder as per instructions, you should see a new JSFX in the plugins list in reaper, which you add to your fx chain, and move it up to in front of kontakt. If you don't see it yet, just restart Reaper, it'll rescan plugins. Definitely works, and worth perservering to get it working - CS won't give a refund for this, but more importantly, it's literally the best strings library on the market (IMHO, based on extensive listening to demos and watching youtube walkthroughs), and one of the top tier legato.


----------



## Getsumen

Reoreyh said:


> My computer is not assigning it a known file type. It's just a "file" file, so putting it where the installation says doesn't seem to do anything.
> 
> Edit: This is honestly insanity. I think I'll be returning my purchase of CSS. I've spent days trying to find a way around the ridiculous offsets. I can't find working scripts to nudge by milliseconds, even if I wanted to enact the painful labor of manually offsetting notes in the midi editor. I cannot fathom how anyone develops a work flow around such a product.


Just use the classic legato patches


----------



## Reoreyh

liquidlino said:


> Not sure what you mean about putting the file there doesn't do anything? Once installed to the folder as per instructions, you should see a new JSFX in the plugins list in reaper, which you add to your fx chain, and move it up to in front of kontakt. If you don't see it yet, just restart Reaper, it'll rescan plugins. Definitely works, and worth perservering to get it working - CS won't give a refund for this, but more importantly, it's literally the best strings library on the market (IMHO, based on extensive listening to demos and watching youtube walkthroughs), and one of the top tier legato.


Yes, I followed those instructions. But my computer doesn't recognize the file type when I download your file.

CS will absolutely give me a refund for this. It's been 3 straight days of trying to make it work, digging through a dozen third party plugins, scripts, and other nonsense just to make it viable. Nevermind the fact that the damned samples actually require manual retuning - because they're recorded flat. The second violins are especially bad for this. If the legato is a selling point - then it should be made to work immediately. It's a $400 string library. No excuse for a flat recording and impossible workflow.



Getsumen said:


> Just use the classic legato patches


That isn't what I paid for - and in no way solves the delay problem.


----------



## liquidlino

Reoreyh said:


> Yes, I followed those instructions. But my computer doesn't recognize the file type when I download your file.
> 
> CS will absolutely give me a refund for this. It's been 3 straight days of trying to make it work, digging through a dozen third party plugins, scripts, and other nonsense just to make it viable. Nevermind the fact that the damned samples actually require manual retuning - because they're recorded flat. The second violins are especially bad for this. If the legato is a selling point - then it should be made to work immediately. It's a $400 string library. No excuse for a flat recording and impossible workflow.
> 
> 
> That isn't what I paid for - and in no way solves the delay problem.


Ah, you mean the .zip download isn't being recognised as a zip file? Make sure it has .zip as the final extension, and that you have a program for unpacking zip files. Windows 10 and MacOS do zip natively, so once you've got the right file extension, should work then.


----------



## Reoreyh

liquidlino said:


> Ah, you mean the .zip download isn't being recognised as a zip file? Make sure it has .zip as the final extension, and that you have a program for unpacking zip files. Windows 10 and MacOS do zip natively, so once you've got the right file extension, should work then.


No, the file itself is not being recognized. No idea why.


----------



## liquidlino

Reoreyh said:


> No, the file itself is not being recognized. No idea why.


Yep, that's correct - JSFX files don't mean anything to windows etc. Just extract that file out and save to C:\Users\<yourname>\AppData\Roaming\REAPER\Effects and restart reaper, should appear in your FX list in Reaper.


----------



## dko22

Reoreyh said:


> CS will absolutely give me a refund for this. It's been 3 straight days of trying to make it work, digging through a dozen third party plugins, scripts, and other nonsense just to make it viable. Nevermind the fact that the damned samples actually require manual retuning - because they're recorded flat. The second violins are especially bad for this. If the legato is a selling point - then it should be made to work immediately. It's a $400 string library. No excuse for a flat recording and impossible workflow.
> 
> 
> That isn't what I paid for - and in no way solves the delay problem.


I've composed or rewritten around ten major classical works with these libraries -- perhaps 5 hrs of music. In my own view and that of almost everybody else who has listened to these renderings (all made in Dorico, not even officially a DAW), it is probably the best string and orchestral library on the market for a warm, lyrical rendering. The main issue is a relative lack of more specialised articulations which also includes various forms of moderately short notes so on occasion you can struggle to find the right one. 

Some delay is built into legato in most of the better libraries but it's true that CSS is one of the most extreme. In my view, most of the time it's not beyond what actually sounds reasonably musical but certainly you either need to use a script or simply do manual offsets at times. I currently do the latter for reasons discussed earlier in the thread. Don't forget that an update (which seems delayed, unfortunately) will enable you to use a low latency mode which should be similar to what the woodwind already has and works very well imho.

As for the samples being recorded flat, well I've run through the notes of both solo and orchestral 2nd violins and can't find any significant discrepancies. Of course if you select individual notes with individual patches in specific situations, then there are things to be found with any library. Nothing is entirely bug-free. But I can't accept your general points.


----------



## Getsumen

Reoreyh said:


> Yes, I followed those instructions. But my computer doesn't recognize the file type when I download your file.
> 
> CS will absolutely give me a refund for this. It's been 3 straight days of trying to make it work, digging through a dozen third party plugins, scripts, and other nonsense just to make it viable. Nevermind the fact that the damned samples actually require manual retuning - because they're recorded flat. The second violins are especially bad for this. If the legato is a selling point - then it should be made to work immediately. It's a $400 string library. No excuse for a flat recording and impossible workflow.
> 
> 
> That isn't what I paid for - and in no way solves the delay problem.


I mean sure it may not be what you paid for but how does it not solve the delay problem?
The delay is consistent. The patch just behaves as a multi at that point

To be honest I'm not sure what your chances for a refund are lol. You knew when going in to buy the product that it had this delay. But who knows, give it a shot I suppose.

What version of the script are you using may I ask? Another user posted a 2.2.1 version with some of their own edits and that solved some of the older bugs, although I assume the "official" version of the CSS Control Panel got updates as well, I just haven't downloaded it recently


----------



## Casiquire

Getsumen said:


> I mean sure it may not be what you paid for but how does it not solve the delay problem?
> The delay is consistent. The patch just behaves as a multi at that point
> 
> To be honest I'm not sure what your chances for a refund are lol. You knew when going in to buy the product that it had this delay. But who knows, give it a shot I suppose.
> 
> What version of the script are you using may I ask? Another user posted a 2.2.1 version with some of their own edits and that solved some of the older bugs, although I assume the "official" version of the CSS Control Panel got updates as well, I just haven't downloaded it recently


The reason it doesn't solve the problem is because the delayed legato is the strength of the library.


----------



## Reoreyh

Getsumen said:


> I mean sure it may not be what you paid for but how does it not solve the delay problem?
> The delay is consistent. The patch just behaves as a multi at that point
> 
> To be honest I'm not sure what your chances for a refund are lol. You knew when going in to buy the product that it had this delay. But who knows, give it a shot I suppose.
> 
> What version of the script are you using may I ask? Another user posted a 2.2.1 version with some of their own edits and that solved some of the older bugs, although I assume the "official" version of the CSS Control Panel got updates as well, I just haven't downloaded it recently


Part of the reason I chose this library was the well documented delay offset values that exist in a spreadsheet already. I assumed knowing those would be enough to develop a work flow. My problem right now is that I cannot get any sort of use out of this product without sending each and every articulation to it's own track for independent offset delay - which involves giving each track (each articulation) it's own CC data for volume, portamento, vibrato, and expression, while ensuring that any time there's a lengthy or speedy line of notes, that they all sync with each other. Jumping back and forth between literally 3 or 4 different tracks per section to sync them and add expression is insanely time consuming. I can't see any way to create a template to accomplish my goals. I'd be more than willing to spend 20+ hours building one if I could set it once and be done with it.

If I could find a working script that would allow me to nudge every note in an articulation by milliseconds within the midi item itself I could maybe see this product working for me.

So I'm desperately trying to get this control panel to work. Am I supposed to use key switches + CC58 or just CC58? I can sort of control the articulation with CC58 but the legato will not activate without a key switch.


----------



## ALittleNightMusic

Reoreyh said:


> So I'm desperately trying to get this control panel to work. Am I supposed to use key switches + CC58 or just CC58? I can sort of control the articulation with CC58 but the legato will not activate without a key switch.



Try the following:



ALittleNightMusic said:


> The way I got the script to work is 1) I don't use CC13 to turn it on or off - I just toggle the button on in the third screen to always be on (you can bypass the KSP if you really need to)
> 
> 
> 
> 
> 
> 
> 2) You have to use CC58 to send through the articulations (even for the very first note!) - the script uses that to detect what delay it should be compensating for (the status bar in the script will show this change if you do it right). Legato notes need to be overlapped.
> 
> 
> 
> 
> 
> 
> Expression Map:
> 
> 
> 
> 
> 
> Alternatively to the script, I have a macro setup in Cubase that can move notes based on velocity (and you can set the entire track back -60ms to compensate for the shorts).


----------



## liquidlino

Reoreyh said:


> Part of the reason I chose this library was the well documented delay offset values that exist in a spreadsheet already. I assumed knowing those would be enough to develop a work flow. My problem right now is that I cannot get any sort of use out of this product without sending each and every articulation to it's own track for independent offset delay - which involves giving each track (each articulation) it's own CC data for volume, portamento, vibrato, and expression, while ensuring that any time there's a lengthy or speedy line of notes, that they all sync with each other. Jumping back and forth between literally 3 or 4 different tracks per section to sync them and add expression is insanely time consuming. I can't see any way to create a template to accomplish my goals. I'd be more than willing to spend 20+ hours building one if I could set it once and be done with it.
> 
> If I could find a working script that would allow me to nudge every note in an articulation by milliseconds within the midi item itself I could maybe see this product working for me.
> 
> So I'm desperately trying to get this control panel to work. Am I supposed to use key switches + CC58 or just CC58? I can sort of control the articulation with CC58 but the legato will not activate without a key switch.


You only need two tracks per section, one for legato, and one for shorts. Shorts are all 60ms. Legato you set to 333ms and use my script. And if you want to record in legato by playing, add a third track with classic legato or Macato, and then move the midi to the legato track.


----------



## Reoreyh

ALittleNightMusic said:


> Try the following:


Okay, so I actually do just toggle the delay to be on always. I think where I'm getting lost is using the CC58 to toggle articulations. I've started mapping out which numerical values apply which articulations, and it seems logical.

Do I just need to set the intensity of the sustained note with CC58 and then use overlap to trigger legato? That's what I was not doing.


----------



## ALittleNightMusic

Reoreyh said:


> Okay, so I actually do just toggle the delay to be on always. I think where I'm getting lost is using the CC58 to toggle articulations. I've started mapping out which numerical values apply which articulations, and it seems logical.
> 
> Do I just need to set the intensity of the sustained note with CC58 and then use overlap to trigger legato? That's what I was not doing.



Well I use the Babylonwaves expression maps for Cubase, Logic, and Studio One (all DAWs where I've tested the script and where it works as expected). As you can see in my screenshot in the linked post, CC58 is set to a specific value (for legato for example - look at the manual for the exact values) PLUS I have A#0 and B0 as keyswitches. Now, this is just how the expression map is built - but I don't think you can get away with just using CC58. If the script is detecting things correctly, the status bar in the script will show the right state (short note detected, legato note length X detected, etc).


----------



## Reoreyh

ALittleNightMusic said:


> Well I use the Babylonwaves expression maps for Cubase, Logic, and Studio One (all DAWs where I've tested the script and where it works as expected). As you can see in my screenshot in the linked post, CC58 is set to a specific value (for legato for example - look at the manual for the exact values) PLUS I have A#0 and B0 as keyswitches. Now, this is just how the expression map is built - but I don't think you can get away with just using CC58. If the script is detecting things correctly, the status bar in the script will show the right state (short note detected, legato note length X detected, etc).


Okay. How do I enable and disable legato?

Is it, Overlap + default keyswitch + CC58 (Velocity > 64)
Just 2 of those 3? One of those 3? I'm seeing posts saying use CC58 and not the key switches. I'm seeing posts saying just overlap. I'm seeing posts saying CC58 itself isn't enough.


----------



## ALittleNightMusic

Reoreyh said:


> Okay. How do I enable and disable legato?
> 
> Is it, Overlap + default keyswitch + CC58 (Velocity > 64)
> Just 2 of those 3? One of those 3? I'm seeing posts saying use CC58 and not the key switches. I'm seeing posts saying just overlap. I'm seeing posts saying CC58 itself isn't enough.



Use the note keyswitch + CC58 - that's how the expression maps I use are setup and it works perfectly. And yes, overlap the notes. Then the script also works as expected. I don't use Reaper so don't know if there's something up with that specifically - but things work as they should in the three DAWs I mentioned I've tested.


----------



## dko22

For legato on, I'd advise CC58, 76-80, legato off CC58, 81-85. This is the legato function in general and not just the the legato version of the sustain patch. For this I use C0,1 and yes, to get the proper legato playback the length of the note must be over 100% as others have said.


----------



## Henrik B. Jensen

Reoreyh said:


> Okay, so I actually do just toggle the delay to be on always. I think where I'm getting lost is using the CC58 to toggle articulations. I've started mapping out which numerical values apply which articulations, and it seems logical.


There is a list of which CC58 values correspond to which articulations in the pdf documentation. It’s in a Documentation-folder within the Cinematic Studio Strings folder.


----------



## theStyg

Thread's hard to navigate, so apologies if this has already been answered.

Using Logic, I set my delay to -330 (-330 ticks for the given region/track, and the shorts are still slightly ahead of the beat, and the medium/slow legatos are still behind.

To my knowledge, I've not touched the defaults except the "Basics" tab where I changed the Input Channel to match the channels my CSS patches are on (2-6). I also notice the UI always says "with a delay of 0" which is confusing. I'm also using Art Conductor's articulation sets if that'd affect anything.

Thanks in advance!


----------



## Duncan Krummel

theStyg said:


> Thread's hard to navigate, so apologies if this has already been answered.
> 
> Using Logic, I set my delay to -330 (-330 ticks for the given region/track, and the shorts are still slightly ahead of the beat, and the medium/slow legatos are still behind.
> 
> To my knowledge, I've not touched the defaults except the "Basics" tab where I changed the Input Channel to match the channels my CSS patches are on (2-6). I also notice the UI always says "with a delay of 0" which is confusing. I'm also using Art Conductor's articulation sets if that'd affect anything.
> 
> Thanks in advance!


330 ticks ≠ 330ms! Make sure you’re setting track delay and not region delay. The former is set in ms, the latter in ticks. Select the track and not the region in order to edit this.


----------



## AndrewS

theStyg said:


> Thread's hard to navigate, so apologies if this has already been answered.
> 
> Using Logic, I set my delay to -330 (-330 ticks for the given region/track, and the shorts are still slightly ahead of the beat, and the medium/slow legatos are still behind.
> 
> To my knowledge, I've not touched the defaults except the "Basics" tab where I changed the Input Channel to match the channels my CSS patches are on (2-6). I also notice the UI always says "with a delay of 0" which is confusing. I'm also using Art Conductor's articulation sets if that'd affect anything.
> 
> Thanks in advance!


I found the posted delays in the manual weren't exactly right either when played in context with the rest of my template, so I just set up a snare drum (could be anything with a really sharp transient though) to hit every beat and adjusted my CSS offsets to speak in time with the snare. I'd already set the predelays for the rest of my template using this method so once I'd adjusted the offset this way my CSS stuff was in time in the context of my template.


----------



## theStyg

Duncan Krummel said:


> 330 ticks ≠ 330ms! Make sure you’re setting track delay and not region delay. The former is set in ms, the latter in ticks. Select the track and not the region in order to edit this.


This does not seem to help. No matter what, the script reports "Delay of 0" on short articulations, and setting the whole track to -330 ms makes it so shorts are a good bit early. Furthermore, changing things in the Delay tab doesn't seem to have any effect on playback whatsoever.


----------



## Robert_G

theStyg said:


> This does not seem to help. No matter what, the script reports "Delay of 0" on every articulation, and setting the whole track to -330 ms makes it so shorts are a good bit early. Furthermore, changing things in the Delay tab doesn't seem to have any effect on playback whatsoever.


Here is what I do to keep it simple.
All CSS instruments have a separate track for legato. 2 tracks for each instrument.

That way I can do whatever I want with the non-legato track without worrying about the timing.
I have the whole legato track set at -250ms (the speed of the middle legato transitions). Realistically 90% of your legato transitions will fit into this speed. Alex explains this in his legato tutorial. If I do use some fast or slow, then I only have to move a few.....nice and simple.

If you want to get really precise, you can have 3rd track for all your shorts and set it at -60ms. This way you'll have almost no fiddling around with midi notes.


----------



## ALittleNightMusic

theStyg said:


> This does not seem to help. No matter what, the script reports "Delay of 0" on every articulation, and setting the whole track to -330 ms makes it so shorts are a good bit early. Furthermore, changing things in the Delay tab doesn't seem to have any effect on playback whatsoever.


Sounds like you aren’t triggering the articulations properly if the script is always registering 0 in the status bar. It should change the status as it detects different articulations coming through.


----------



## theStyg

ALittleNightMusic said:


> Sounds like you aren’t triggering the articulations properly if the script is always registering 0 in the status bar. It should change the status as it detects different articulations coming through.


Would articulation sets be causing this? I am using Art Conductor. And sorry, changed my last post to add a correction that I was only seeing the delay of 0 on the shorts as of now.



Robert_G said:


> Here is what I do to keep it simple.
> All CSS instruments have a separate track for legato. 2 tracks for each instrument.
> 
> That way I can do whatever I want with the non-legato track without worrying about the timing.
> I have the whole legato track set at -250ms (the speed of the middle legato transitions). Realistically 90% of your legato transitions will fit into this speed. Alex explains this in his legato tutorial. If I do use some fast or slow, then I only have to move a few.....nice and simple.
> 
> If you want to get really precise, you can have 3rd track for all your shorts and set it at -60ms. This way you'll have almost no fiddling around with midi notes.


I have done the more DIY solutions like this, but with my current workflow/template it isn't viable. Ultimately thought it'd improve my workflow to pursue something like the script in question.


----------



## Roger Newton

theStyg said:


> This does not seem to help. No matter what, the script reports "Delay of 0" on short articulations, and setting the whole track to -330 ms makes it so shorts are a good bit early. Furthermore, changing things in the Delay tab doesn't seem to have any effect on playback whatsoever.


You can listen to all the solutions and they all mean well.

The bottom line with this library is unfortunately, it's a great, darkish kind of sound while at the same time basically unusable because the workflow quickly turns to goat bollocks.

It needs a complete and total update. Why the fuck anyone would want to mess around with fucking ticks and milliseconds is way outside my realm of understanding.

My advice. Use a library that works straight from the box.


----------



## theStyg

Roger Newton said:


> You can listen to all the solutions and they all mean well.
> 
> The bottom line with this library is unfortunately, it's a great, darkish kind sound while at the same time basically unusable because the workflow quickly turns to goat bollocks.
> 
> It needs a complete and total update. Why the fuck anyone would want to mess around with fucking ticks and milliseconds is way outside my realm of understanding.
> 
> My advice. Use a library that works straight from the box.


Thanks for your input. Yes, reason I came here is that while I've used CSS on and off, it just so happens to be exactly what I need for a particular project I've taken on. I then came face to face with how absolutely counter intuitive this library's workflow is. Surely there must be some way that the devs can make a patch where each articulation has the same delay of -330ms, right? That way you can set the track delay and forget it.

The workflow I'm running with for the time being is setting the track to -60ms and just making a mental note of how many sixteenth notes (or smaller) I need to stretch the starts of each legato transitions style for them to sync up. Works all right, I just wish that step didn't need to happen lol


----------



## Roger Newton

theStyg said:


> Surely there must be some way that the devs can make a patch where each articulation has the same delay of -330ms, right? That way you can set the track delay and forget it.


Try and imagine if every library a writer uses (and that could be many), and every one of them needed some kind of tick and millisecond adjustment.

You would either give up, or go broke having to use very expensive narcotics on daily basis to preserve sanity and good will.

Put it another way; if this was say a Spitfire library, there would be calls for a fix and updates on a daily basis.


----------



## theStyg

Roger Newton said:


> Try and imagine if every library a writer uses (and that could be many), and every one of them needed some kind of tick and millisecond adjustment.
> 
> You would either give up, or go broke having to use very expensive narcotics on daily basis to preserve sanity and good will.
> 
> Put it another way; if this was say a Spitfire library, there would be calls for a fix and updates on a daily basis.


Exactly. And I don't mind needing to adjust a negative delay setting on a library-by-library basis. Issue is solely the fact that articulations within the same library (hell within the same PATCH even) require unique adjustments. It's just not acceptable. And again, the solution I found works fine (I don't like microsecond-perfect legatos most of the time anyhow), but what's frustrating is the fix seems so... simple?


----------



## aka70

theStyg said:


> This does not seem to help. No matter what, the script reports "Delay of 0" on short articulations, and setting the whole track to -330 ms makes it so shorts are a good bit early. Furthermore, changing things in the Delay tab doesn't seem to have any effect on playback whatsoever.


That's just telling you that the script is not working. For me in Studio One is simple as just activating the sound variation (or expression map). The scripts needs to have a keyswitch before working


----------



## theStyg

aka70 said:


> That's just telling you that the script is not working. For me in Studio One is simple as just activating the sound variation (or expression map). The scripts needs to have a keyswitch before working


Well, as I said I'm using Art Conductor's articulation sets. Is that not viable?


----------



## Getsumen

theStyg said:


> Well, as I said I'm using Art Conductor's articulation sets. Is that not viable?


You're starting off by pressing the legato keyswitch and articulation keyswitch right? The script needs to know what articulation you start with (Legato keyswitch is NOT the same as the sustain keyswitch)


----------



## Roger Newton

Getsumen said:


> You're starting off by pressing the legato keyswitch and articulation keyswitch right? The script needs to know what articulation you start with (Legato keyswitch is NOT the same as the sustain keyswitch)


All of that should then be included with the purchase of the library and/or done as an update.


----------



## theStyg

Getsumen said:


> You're starting off by pressing the legato keyswitch and articulation keyswitch right? The script needs to know what articulation you start with (Legato keyswitch is NOT the same as the sustain keyswitch)


If what you're asking is whether I'm pressing the two keys needed to activate the sustains and the legato at the same time, then yes I am doing that. I have my own simpler articulation set and the Art Conductor set. Both have the same problem. Even using totally manual keyswitching without articulation sets doesn't seem to work.

Only articulation that seems to be in time when I set everything else up according to this thread are the long legatos.


----------



## Leequalizer

Hey guys, i was wondering if the delay of this script is considered by Cubase when you "render in place"?


----------



## VSTHero

Hi, I've been using this script for a few months, but one thing I wasn't sure on is if there is a way to have the multi script automatically start when I load the template. Currently each time I load logic I have to go through each instance of Kontakt and click a start button on the multi script to activate it. I'm not sure if this is how Kontakt is setup and if that can be changed, or if it's part of the scripts programming (and if that can be changed by modifying the code). Thanks for any help with this!


----------



## clonewar

Big thanks to @Ihnoc for the CSS script! I've been getting into Dorico for composing and orchestrating and so far the script is working well to handle the varying delays. 

I've avoided picking up CSB and CSW because I haven't been happy with the real-time playability of CSS, but working in Dorico makes that less important. How is the script working out for CSB and CSW? Is it handling the delays as well as in CSS?


----------



## clonewar

Bump... Looking for feedback on the script's effectiveness for CSB and CSW delays.


----------



## Go To 11

clonewar said:


> Bump... Looking for feedback on the script's effectiveness for CSB and CSW delays.


It works exactly the same. The timings for all the sections has been programmed perfectly according to the manual. It's truly a godsend.


----------



## clonewar

Go To 11 said:


> It works exactly the same. The timings for all the sections has been programmed perfectly according to the manual. It's truly a godsend.


Great news, thanks!


----------



## Kent

VSTHero said:


> Hi, I've been using this script for a few months, but one thing I wasn't sure on is if there is a way to have the multi script automatically start when I load the template. Currently each time I load logic I have to go through each instance of Kontakt and click a start button on the multi script to activate it. I'm not sure if this is how Kontakt is setup and if that can be changed, or if it's part of the scripts programming (and if that can be changed by modifying the code). Thanks for any help with this!


I thought that the ‘start’ button was to enable the UI of the multiscript, not to enable its functionality. Does it not work that way for you?


----------



## Casiquire

clonewar said:


> Bump... Looking for feedback on the script's effectiveness for CSB and CSW delays.


Just try it 😛 it's free! You can pick which library you're using. I assume that's because the Advanced legato for the strings has a higher delay option than the others.


----------



## clonewar

Casiquire said:


> Just try it 😛 it's free! You can pick which library you're using. I assume that's because the Advanced legato for the strings has a higher delay option than the others.


I'm already using the script with CSS. I don't own CSB or CSW yet so I can't try it with those libraries yet. I'm happy with how the script is working with CSS so I was looking for feedback on whether or not it's working as well with the other libraries.


----------



## Casiquire

clonewar said:


> I'm already using the script with CSS. I don't own CSB or CSW yet so I can't try it with those libraries yet. I'm happy with how the script is working with CSS so I was looking for feedback on whether or not it's working as well with the other libraries.


Ah i understand now!


----------



## VSTHero

Kent said:


> I thought that the ‘start’ button was to enable the UI of the multiscript, not to enable its functionality. Does it not work that way for you?


Hi, that is almost certainly the case actually and makes way more sense- I think I need to work on my ear skills for the delays - I have trouble interpreting which instruments are ahead or behind and separating the track delay from the scripts delay. So in summery, it’s me not the plug-in!


----------



## Dr Bensmir

Hello, this is the first time I am trying this, I am on the latest FL studio version, and the KSP script tab show that a delay of 100 is applied for all my notes. But there's slow legato (portamento) and marcato notes, so it shouldn't stay at 100 for all the notes.

Anyone have an idea ?


----------



## VSTHero

I'd try adding keyswitch and maybe CC data at same time to communicate with it about what types of samples are occurring; see if that jolts it into action. The velocity data should do the rest in terms of the 3 legato lengths. 

There's also the first note of a phrase issue where I think it has a different delay; I had to adjust those by ear /experiment with velocities. 

For legatos too I started to use the CC to activate sustain pedal which helps with re-bowing repeated notes.

I don't remember the specific delays for each type of sample off hand so I'm not sure if it's supposed to be at 100 for those. Maybe to a test with just the 3 legato delays to see if it is adjusting for those. I've taken a break for a bit and have been using Noteperformer, but plan on circling back to practice more with all the CS libraries.


----------



## Ihnoc

Dr Bensmir said:


> Hello, this is the first time I am trying this, I am on the latest FL studio version, and the KSP script tab show that a delay of 100 is applied for all my notes. But there's slow legato (portamento) and marcato notes, so it shouldn't stay at 100 for all the notes.
> 
> Anyone have an idea ?


The script is set up by default to use the keyswitches as they are set when you load the instrument. Possibly you have changed the keyswitches but not done the same in the script?

Alternatively, as mentioned in the release notes, certainly Cubase does not send two values for a CC in the same tick. If you are using Keyswitch CC (58 by default) to switch between Sustain and Marcato, and turn legato in and off with that CC too, try sending the Legato Keyswitch as well.


----------



## VSTHero

Thanks again for creating and sharing this Ihnoc!


----------



## Casiquire

Dr Bensmir said:


> Hello, this is the first time I am trying this, I am on the latest FL studio version, and the KSP script tab show that a delay of 100 is applied for all my notes. But there's slow legato (portamento) and marcato notes, so it shouldn't stay at 100 for all the notes.
> 
> Anyone have an idea ?


Hit all the right keyswitches at all the right velocities. I believe that's two switches needed, the Sustain articulation (C0 i believe?) and then the Legato is enabled by hitting A#1 (again, double check me, this is from memory.) That one is velocity sensitive.


----------



## Dr Bensmir

PROBLEM SOLVED

Thanks for your help guys, turn out that FL Studio "C2" is actually "C0" so I wasn't hitting keyswitches in the right octave. I knew FL Studio had that thing.... but I never used keyswitches patches, only single articulation, so I forgot.


----------



## Dr Bensmir

Does the script allow for switching between Marcato (40 ms) and Legato ? Within the same patch






And can you load the script only for specific midi channels within multi timbral kontakt ?

EDIT : oh? i just saw multi channel support by @img , just checking


----------



## Casiquire

No


Dr Bensmir said:


> Does the script allow for switching between Marcato (40 ms) and Legato ? Within the same patch
> 
> 
> 
> 
> 
> 
> And can you load the script only for specific midi channels within multi timbral kontakt ?
> 
> EDIT : oh? i just saw multi channel support by @img , just checking


As long as you're triggering the proper keyswitch between articulations, it should work just fine


----------



## Vladimir Bulaev

Marcato and Fast Legato have really different delay.
Fast legato (100 ms)
Marcato (40 or 60 ms)

Ihnoc, _Thank you very much for the script! Is it possible to add different delays for Fast Leg. and Marcato, or is it impossible due to technical limitations?_​


----------



## Vladimir Bulaev

This diagram is from the official video for the Cinematic Studio Strings about legato. It is unclear why the Slow and Medium does not coincide with the manual, but the Marcato delay is less than the Fast legato.







Anyway, I express my great gratitude to @Ihnoc for this amazing script. I am so excited that I can now easily and quickly control these great very realistic and expressive musical instruments. 

It would be great to add an Auto Rebow Leg. button both in CSS for CSW and CSB. Accordingly, it would be an Auto Retonguing Leg. But even without this, everything works with CC64.


----------



## Dot

Hello,

(just to mention, I did not read all 26 pages, sorry if that has already been discussed)

I tried to use the script in Cubase and had the problem, that when I recorded something and
then played it back, the first note was offset as if it was within a legato phrase. For the recording I always set the Delay Control CC to 0 and back to 127 afterwards.

As far as I could figure out the problem for me was, that the legatoNoteCount in the script was increased, but not decreased when the CC was at 0. So I changed both occurrences of


Code:


$legatoNoteCount := $legatoNoteCount + 1
$legatoNotePitch := $MIDI_BYTE_1

to


Code:


if (($lastDelayCCValue > 64 and $delayMode = 0) or ($delayMode = 1))
    $legatoNoteCount := $legatoNoteCount + 1
    $legatoNotePitch := $MIDI_BYTE_1
end if

which worked for me to solve the problem. Not quite sure if the legateNotePitch assignment should be within the if statement aswell. Maybe @Ihnoc can say whether this makes sense or not? Just wanted to put this here in case anyone else has this problem.


----------



## 1+Humanity

Hello, first of all thank you for this script! It's been very useful for me. 

I wanted to ask if the script will still work with the new version of CSS (1.7)? It seems as thought the Advanced legato has been renamed to Expressive mode but it is kept "100% intact" according to Alex Wallbank from his recent post about the update. 

I think if that is the case only the Standard legato mode (which has been renamed to Low Latency legato) will be effected because there is an improving in timing. Am I right?


----------



## sathyva

1+Humanity said:


> Hello, first of all thank you for this script! It's been very useful for me.
> 
> I wanted to ask if the script will still work with the new version of CSS (1.7)? It seems as thought the Advanced legato has been renamed to Expressive mode but it is kept "100% intact" according to Alex Wallbank from his recent post about the update.
> 
> I think if that is the case only the Standard legato mode (which has been renamed to Low Latency legato) will be effected because there is an improving in timing. Am I right?


I’m really afraid of updating to CSS 1.7
Time will tell….


----------



## tonaliszt

sathyva said:


> I’m really afraid of updating to CSS 1.7
> Time will tell….


I only use this multi-script with the advanced (now expressive) mode. The issue I ran into is that the key switch for the legato on/off used to be on A#0, but is now on G#0.

I'm not sure why that change was made, but you'll have to change the keyswitch for legato in the script. 

From some quick tests it seems to be working fine with advanced/expressive.


----------



## ALittleNightMusic

tonaliszt said:


> I only use this multi-script with the advanced (now expressive) mode. The issue I ran into is that the key switch for the legato on/off used to be on A#0, but is now on G#0.
> 
> I'm not sure why that change was made, but you'll have to change the keyswitch for legato in the script.
> 
> From some quick tests it seems to be working fine with advanced/expressive.


You can also change the key switch in the CSS patch itself. Shift click on the Legato button to bring up the MIDI learn section. I reset everything back to A#0.


----------



## BasariStudios

I am so confused, there is CSS 1.8 already?


----------



## pcohen12

BasariStudios said:


> I am so confused, there is CSS 1.8 already?


1.8 is the version of this control panel script! It just happens to be remarkably close to the Cinematic Studio version numbers 😅


----------



## sathyva

tonaliszt said:


> I only use this multi-script with the advanced (now expressive) mode. The issue I ran into is that the key switch for the legato on/off used to be on A#0, but is now on G#0.
> 
> I'm not sure why that change was made, but you'll have to change the keyswitch for legato in the script.
> 
> From some quick tests it seems to be working fine with advanced/expressive.


Thanks a lot !
sounds like it’s time for me tu update


----------



## kociol21

Thanks for the great tool!

But all of this just infuriates me to the point that I'm thinkng of dropping CS series altogether. 

So here what is going on:

1. Don't use this and accept that I have to carefully move every note which is super tedious and off putting.

2. If I use this tool, I have to offset everything by 330 ms. That messes somehow with my expression map work or rather "musical variations" or whatever it's called in studio one. Negative offset messes with that so say I set "legato" to note B. Then whatever note A is played within 330 ms before note B is triggered with legato keyswitch. Basically variations are firing off early because of track delay. I haven't find a way to solve it..

3. For some reason this tool always start in "disabled" state. I have to go to every kontakt instance and click "start" button for this to work. 

Despair.


----------



## ALittleNightMusic

kociol21 said:


> Thanks for the great tool!
> 
> But all of this just infuriates me to the point that I'm thinkng of dropping CS series altogether.
> 
> So here what is going on:
> 
> 1. Don't use this and accept that I have to carefully move every note which is super tedious and off putting.
> 
> 2. If I use this tool, I have to offset everything by 330 ms. That messes somehow with my expression map work or rather "musical variations" or whatever it's called in studio one. Negative offset messes with that so say I set "legato" to note B. Then whatever note A is played within 330 ms before note B is triggered with legato keyswitch. Basically variations are firing off early because of track delay. I haven't find a way to solve it..
> 
> 3. For some reason this tool always start in "disabled" state. I have to go to every kontakt instance and click "start" button for this to work.
> 
> Despair.


Studio One is generally not that great at handling track delay. There's a lot of issues with it that I've run into. The script does work really well in Logic and Cubase though. I believe the "disabled" start state could be changed by the scripter - I haven't looked at the code in depth though.


----------



## chapbot

ALittleNightMusic said:


> Studio One is generally not that great at handling track delay. There's a lot of issues with it that I've run into. The script does work really well in Logic and Cubase though. I believe the "disabled" start state could be changed by the scripter - I haven't looked at the code in depth though.


That used to be the case, but track delay issues were fixed in a recent update of Studio One.


----------



## ALittleNightMusic

chapbot said:


> That used to be the case, but track delay issues were fixed in a recent update of Studio One.


How recent? Still have the same issues that I've reported over a year ago in the latest version. Timing has never been a strong suit of S1. Playback can randomly be all over the place.


----------



## James Laurence

ALittleNightMusic said:


> How recent? Still have the same issues that I've reported over a year ago in the latest version. Timing has never been a strong suit of S1. Playback can randomly be all over the place.


I've been working with S1 & CSS for a while - this control panel has been a life saver. I haven't encountered track delay issues; created Sound Variation presets & typically ensure they trigger just before the next note on the midi roll - so far so good! Although this is all post midi input; not sure how to manage changes if you're inputting & 'sound varying' live.

The main issue I have is the '1st legato note'. Changing the delay in the control panel doesn't seem to make a difference, and I often have to artificially shorten the first note of a phrase to avoid an early or bizarrely loud start (sometimes automating modulation to 0 with a steep curve is the only way to avoid this).

Re the disabled state - I've noticed this too. All my kontakt instances load with the control panel apparently disabled, but when I begin playthrough & arranging, I've noticed it seems to be working just fine. Almost like the Start button just triggers the UI rather than the tool itself.

Sorry if none of that's useful, interesting to hear from other S1 + CSS users!


----------



## lettucehat

Apologies if this has been covered, but what's the correct way to go about using this with the new low latency mode? I know it's much less necessary with low latency mode, but I'd still like to benefit from shorts and most legato notes lining up on the grid all in one patch, even if the legato delay isn't as extreme as the expressive/advanced mode.


----------



## Gamination

the script has to be re enabled everytime you launch a kontakt instance, makes it very tedious


----------



## gst98

Gamination said:


> the script has to be re enabled everytime you launch a kontakt instance, makes it very tedious


No that's just the UI. And it's a KSP thing anyway


----------



## Ihnoc

Gamination said:


> the script has to be re enabled everytime you launch a kontakt instance, makes it very tedious


This is incorrect. If I ever find the energy to update this script for a library I no longer use to deal with the things people have mentioned (primarily 1.7.1 legato patches, new default keyswitches for those patches and legato note count), I need to update the "Start" button as people confuse this with starting the script. This is wholly inaccurate as whether the script is delaying notes, and what articulation it is in, as well as all customisations to note delays per articulation are remembered per Kontakt instance and saved. Whether the UI is showing or not has not bearing on if the script is doing it's job. "Start" should really read "Edit".


----------



## Lhotse

I'm currently using the Flexrouter script for managing the key switching , may I use it together with this Control Panel script? Thank you.


----------



## baise3

What should I do if the CC1 is not at the correct time point


----------



## Ihnoc

Lhotse said:


> I'm currently using the Flexrouter script for managing the key switching , may I use it together with this Control Panel script? Thank you.


I would probably recommend putting this script after Flexrouter, but I will attest that this script is not tested for compatibility with anything other than the instruments mentioned.


----------



## Ihnoc

baise3 said:


> What should I do if the CC1 is not at the correct time point


There are delay options for CCs and Keyswitches in the script options that delay CC1 (or whatever you set the dynamics CC to) along with the given articulation. Eg, if the script thinks you are playing a slow legato transition, it will delay the CC1 by 330ms, fast it will delay it by 100ms, shorts 60ms. This behaviour is off by default.

Also note that there is a very small delay the script adds to notes, so that CC messages and Keyswitches always arrive two ticks (smaller than ms) before playable notes, largely to prevent spikes in dynamics when transitioning between articulations. CSS doesn't generally suffer from this behaviour, but I have found it good practice.


----------



## baise3

Ihnoc said:


> There are delay options for CCs and Keyswitches in the script options that delay CC1 (or whatever you set the dynamics CC to) along with the given articulation. Eg, if the script thinks you are playing a slow legato transition, it will delay the CC1 by 330ms, fast it will delay it by 100ms, shorts 60ms. This behaviour is off by default.
> 
> Also note that there is a very small delay the script adds to notes, so that CC messages and Keyswitches always arrive two ticks (smaller than ms) before playable notes, largely to prevent spikes in dynamics when transitioning between articulations. CSS doesn't generally suffer from this behaviour, but I have found it good practice.



It has no effect after opening delay KS/KS CC. It seems that you need to drag the CC1 backward to be at the correct time point


----------



## Lino

I am having similar problems as mentioned in this post and cant seem to solve the issue. I'm using CSS in Ableton, controlling articulations with the "Key Switch and Expression Map" plugin from Swub, and using the Control Panel mentioned here. The problem I seem to be having is that when I configured KSEM using CC58, the control panel does not correctly load the Advanced legato, and therefore applies the incorrect Delays. The message says "standard mode". But CSS uses the Advanced ("Expressive") legato patch. The only workaround is to include a keyswitch note in the Midi clip, but then I am not able to use KSEM to program legatos. And I cannot use keyswitches because KSEM does not allow setting specific velocities, it seems to always use a 1 or 2 for velocity. 
Any ideas? I was.already trying to edit the script to always play Advanced mode (notemode 5) but would prefer a proper solution. Perhaps it's due to the changes that came with 1.7?


----------



## Lino

Lino said:


> I am having similar problems as mentioned in this post and cant seem to solve the issue. I'm using CSS in Ableton, controlling articulations with the "Key Switch and Expression Map" plugin from Swub, and using the Control Panel mentioned here. The problem I seem to be having is that when I configured KSEM using CC58, the control panel does not correctly load the Advanced legato, and therefore applies the incorrect Delays. The message says "standard mode". But CSS uses the Advanced ("Expressive") legato patch. The only workaround is to include a keyswitch note in the Midi clip, but then I am not able to use KSEM to program legatos. And I cannot use keyswitches because KSEM does not allow setting specific velocities, it seems to always use a 1 or 2 for velocity.
> Any ideas? I was.already trying to edit the script to always play Advanced mode (notemode 5) but would prefer a proper solution. Perhaps it's due to the changes that came with 1.7?


Solved it!
For those that are interested: I found that when switching back from a Short to Expressive Sustain legato mode is always switched off within the script. This seems to be a bug in my opinion. I added a line in the script to always turn on Legato when switching to Advanced (Expressive) mode: $legatoMode := 1


----------



## adaagaard

Lino said:


> Solved it!
> For those that are interested: I found that when switching back from a Short to Expressive Sustain legato mode is always switched off within the script. This seems to be a bug in my opinion. I added a line in the script to always turn on Legato when switching to Advanced (Expressive) mode: $legatoMode := 1



Cool! I will check it out, for sure. My experience in adding as much as one boring letter to a KSP – or any script, for that matter – equals scary close to zero. So, if I may ask, is there an exact spot in this particular KSP your line should be pasted?


----------



## Lino

adaagaard said:


> Cool! I will check it out, for sure. My experience in adding as much as one boring letter to a KSP – or any script, for that matter – equals scary close to zero. So, if I may ask, is there an exact spot in this particular KSP your line should be pasted?


Sure, it's around line 1142 where the section starts that interprets CC messages (case 6 to 10).
See my comment starting with "AP":

{Sets the value of noteMode, based on the values defined by CSS's keyswitch CC}
function SetNoteMode
{There seems to be an inherrant latency with testing the CC's value in the same callback, so wait a moment}
wait (2)

select(%CC[$keyswitchCC])
case 0 to 5
{Standard Legato}
{Test whether we're using CSS, CSB or CSW here}
select ($instrumentMode)
case 0
$noteMode := 4
set_text($statusLabel,"Articulation updated to sustain/standard legato")
case 1
$noteMode := 4
set_text($statusLabel,"Articulation updated to sustain/standard legato")
case 2
$noteMode := 5
set_text($statusLabel,"Articulation updated to sustain/advanced legato")
end select

case 6 to 10
{Advanced Legato}
{Test whether we're using CSS, CSB or CSW here} 
select ($instrumentMode)
case 0
$legatoMode := 1 {AP added to turn legato back on after shorts}
$noteMode := 5
set_text($statusLabel,"Articulation updated to sustain/advanced legato")
case 1
$noteMode := 4
set_text($statusLabel,"Articulation updated to sustain/standard legato")
case 2
$noteMode := 5
set_text($statusLabel,"Articulation updated to sustain/advanced legato") 
end select


----------

