What's new

The Variable Delay Compensator (v1.6): Another multi script for CSS...but for any others, too!

Loving this! I'm curious if there are any plans to make this into a midi plugin that could be used with other sample players. Would be extremely useful!
 
I agree.

But also, see this post for how you could do this currently if you're savvy with routing. Ah, and specific instructions for performing in Cubase if you're using that.
Thanks for this! I did set this up successfully in cubase. I think the method described in the post is a bit cumbersome for use in my template though.

No plans to make this into a midi plugin? I honestly think something like VDC that could be used with any sample player is the missing link that a lot of use need from a workflow perspective. I doubt that any daw will include the kind of functionality that this provides with legato instruments anytime soon. I'd happy overpay for a tool like this that solved this issue in a straightforward manner and I'm sure other users would as well. :) Think about it!
 
Thanks for this! I did set this up successfully in cubase. I think the method described in the post is a bit cumbersome for use in my template though.

No plans to make this into a midi plugin? I honestly think something like VDC that could be used with any sample player is the missing link that a lot of use need from a workflow perspective. I doubt that any daw will include the kind of functionality that this provides with legato instruments anytime soon. I'd happy overpay for a tool like this that solved this issue in a straightforward manner and I'm sure other users would as well. :) Think about it!
I've been busily setting it up ahead of the Spitfire plugin and Halion (running in ve pro) and it works great - I'm happy to have made it a defining aspect of my template design, in Cubase. I'm also taking advantage of these same Kontakt "midi processor" instances to pull some other scripting tricks with key/channel splits and parameter to cc mapping, so it feels like I'm getting plenty of value out of the extra tracks and routing complexity.
 
Last edited:
@kp, how is 2.0 coming along?
I generally don't like to ignore my mentions, so this time I'll respond with this sort of non-response: I'm keeping my "progress" under wraps for now because I'm not ready to make any promises. I will "tease" and all that if and when I have anything to share. Until then, 2.0 "doesn't exist" in a manner of speaking. I'd say, "Forget I said anything," but of course that cat's already out of the bag (oops?).

For now, I'll just point to this post and again the other post as I still wish to leave it at that. (Also, I don't want to derail this thread with such discussions.) Hopefully that makes sense. I do appreciate the interest, nonetheless.
 
Just FYI, sometimes if I have a verrry laggy library I'll track the instrument with a piano (like CSS with a piano). The piano provides the attack on time when recording. Then the negative track delay kicks in on CSS on playback. Don't know if that helps but, there it is
Yeah, that's a good solution - thank you.
 
I think the delay should happen either on the source MIDI track (if you're using a separate MIDI track) or on the instrument track with the VDC. You may have options as to what could work (putting it after the VDC track, or even an audio track that your library is routed to), but that's where I personally would start. No rules here, just whatever works. But that's my opinion.

Disclaimer: I've only used VDC on the same track as the instrument that I was affecting, so I haven't played with moving around the negative delay application up and down the signal chain to see where it still works. In the case of Cubase, I (and others) have discovered bugs with CC handling at large negative delay values, but you can still apply negative delay with a VST latency plugin (using PDC) as an effect somewhere in the signal chain.


Not sure how else to explain this given my explanation of exactly this scenario in my earlier comment. I'm assuming that this 20ms lead is programmed in the same instance as the 190ms lead, and if that's the case: VDC delays 20ms-lead notes by 170ms and 190ms-lead notes by 0ms. When those delays are applied in the context of -190ms of track delay, 20ms-lead notes are played 20ms ahead of the beat, and 190ms-lead notes are played 190ms ahead of the beat.

A "spigot" analogy doesn't work in my head. I see this as a transparency with your piano roll notes—perhaps as little slips of paper—placed on it getting shifted around atop of a fixed grid that is your timeline. The VDC pushes the notes forward (to the right) but at varying amounts so that it "misaligns" the notes from the grid, and then the negative track delay pulls back (to the left) the transparency as a whole. The resulting position of the notes should be where you would have placed them to get them to "sound" in time. To me, this is a careful dance of push (from the VDC) and pull (from the negative delay). But that's just me.
Oh no. There goes my idea of working my way into using CSS in Cubase 12.
 
You are very welcome my friend
Incidentally I'm looking for the easiest workflow to determine precisely what negative track delay amounts to set for occasions where I don't use a script. FL Studio has a little clock icon on it's mixer track and if I click it will open and I can set the negative delay in milliseconds, but when I hit return so it will take effect, it closes (I don't think Cubase's setting closes so that you have to reopen it so in Cubase it may work to just loop a quarter or half note until you figure out the right delay, while changing the settings). So far in FL Studio the best option I've found is to use Track Control (DMG Audio Dave Gamball's free plugin), which has a +/- track delay slider at the bottom of it's GUI. So I open up one of my plugins that draws a waveform as it cycles (e.g my favorite is Kickstarter 2 because it draws a sidechain input signal in a 2nd color, in case you're comparing 2 tracks - but I have LFO Tool, Devious Machines Duck, and Excite Audio Vision 4x that from memory will draw a waveform lined up with the beat, while that track cycles - it's helpful if the plugin has sync-to-DAW on-off control, that I believe these all have). So I just keep the audio looping and slide the amount in Track Control until the waveform is at the transient (or whatever part) I think sounds the best, lines up the best, or whatever.

Is there a better, easier or more precise way to do these things that I'm very new to?
 
Incidentally I'm looking for the easiest workflow to determine precisely what negative track delay amounts to set for occasions where I don't use a script. FL Studio has a little clock icon on it's mixer track and if I click it will open and I can set the negative delay in milliseconds, but when I hit return so it will take effect, it closes (I don't think Cubase's setting closes so that you have to reopen it so in Cubase it may work to just loop a quarter or half note until you figure out the right delay, while changing the settings). So far in FL Studio the best option I've found is to use Track Control (DMG Audio Dave Gamball's free plugin), which has a +/- track delay slider at the bottom of it's GUI. So I open up one of my plugins that draws a waveform as it cycles (e.g my favorite is Kickstarter 2 because it draws a sidechain input signal in a 2nd color, in case you're comparing 2 tracks - but I have LFO Tool, Devious Machines Duck, and Excite Audio Vision 4x that from memory will draw a waveform lined up with the beat, while that track cycles - it's helpful if the plugin has sync-to-DAW on-off control, that I believe these all have). So I just keep the audio looping and slide the amount in Track Control until the waveform is at the transient (or whatever part) I think sounds the best, lines up the best, or whatever.

Is there a better, easier or more precise way to do these things that I'm very new to?
It sounds like you are on the right track. Cubase has a function where it will convert a MIDI sample library performance into a waveform, creating a new track just below the MIDI track. Unfortunately I am unfamiliar with FL Studio. But yes, I would just convert it to an audio waveform and then use that waveform to try to determine where the transient or main part of the note begins. Don't know if this helps but I did a video on this here:
 
I'm trying this given some of the other scripts no longer function, but the included CSS preset doesn't seem to work for me. Legato lines that switch between speeds are off on timing. If I just use longs and shorts, it seems to work. Is there some specific setup to do?
 
Usually if a timing is off it’s been for me due to note overlaps communicating competing CC58 information. I’ll try out using multiple legatos in the same line - I don’t recall that causing problems but I usually just pick one for a given line.
 
Just tested it out - I did get a kind of lag shifting between the legatos in a single ascending scale, so mixing legatos may be tricky - my guess is it's having trouble knowing which value to use since it's using velocity rather than CC data (CC data usually transiting slightly ahead of the note onset while I'm not sure velocity does). I hadn't noticed that before.
 
Just tested it out - I did get a kind of lag shifting between the legatos in a single ascending scale, so mixing legatos may be tricky - my guess is it's having trouble knowing which value to use since it's using velocity rather than CC data (CC data usually transiting slightly ahead of the note onset). I hadn't noticed that before.
Oh that’s unfortunate- Ihnoc’s script handled this fine.
 
I'm trying this given some of the other scripts no longer function, but the included CSS preset doesn't seem to work for me. Legato lines that switch between speeds are off on timing. If I just use longs and shorts, it seems to work. Is there some specific setup to do?
You have to make sure you're using the articulation scheme used by the preset I provide. It uses CC58 for all articulation changes except for the poly/mono switch where the keyswitch is used instead.

The other thing to note is the initial state: the VDC doesn't become fully responsive until both exclusion groups are informed. In other words, it'll need a CC58 and a G#0 (which I recall is the default poly/mono keyswitch) message before it'll respond to further changes. Generally, if you're using articulation management that is exhaustive, your DAW should have done this anyway. But if you're manually inputting/programming CC58/keyswitch info, this can be missed.

I believe the manual explains this as well.
 
Just tested it out - I did get a kind of lag shifting between the legatos in a single ascending scale, so mixing legatos may be tricky - my guess is it's having trouble knowing which value to use since it's using velocity rather than CC data (CC data usually transiting slightly ahead of the note onset while I'm not sure velocity does). I hadn't noticed that before.
That would be a bug if you can give details on how to reproduce. The only reason this would be expected is if we're outpacing the transitions.
 
Top Bottom