|
|
|
05-16-2017, 02:46 PM
|
#1
|
Human being with feelings
Join Date: Jun 2010
Location: UK
Posts: 412
|
Matching VST param curve for tempo drifting solution
My big frustration with delay plugs is that I like to sync to tempo, but have them drift off a little - which most delay plugs don't support. Hard syncing to tempo is super dull to me. I can set time values manually, but I want the drifts to follow tempo changes perfectly (so I never have to set them manually again if I change or automate tempo later).
I'm trying to solve it via JS. I've written the code that reads the playback tempo, offers various drift adjustments, and spits out a modified millisecond value that the delay plugin should use.
I now want to modulate the delay's 'Time' parameter with this value - but parameter modulation is linear, while the plugs typically use a non-linear mapping on their dials. So that would have to be reverse-engineered for every delay to apply my millisecond value correctly!
Reaper however seems to know that mapping, as it displays the actual millisecond value in automation lanes for the delays I've tried (Echoboy, Guitar Rig 5).
Can a JS plug get access to this mapping? Or set the millisecond value directly at the plugin somehow so that Reaper (or the plug) take care of the mapping?
Last edited by DeBased; 05-16-2017 at 02:51 PM.
|
|
|
05-16-2017, 02:49 PM
|
#2
|
Human being with feelings
Join Date: Jun 2010
Location: UK
Posts: 412
|
An even better approach would be if Reaper could 'lie' to plugins by reporting a modified version of the actual project tempo. That way ALL tempo-syncing plugins would be sync-with-drift capable automatically.
There's probably no way to do that for 3rd party devs? But it would be a very cool feature to build straight into Reaper.
|
|
|
05-16-2017, 03:51 PM
|
#3
|
Human being with feelings
Join Date: Feb 2014
Posts: 240
|
Output the compensated value as a slider & use parameter modluation to link it with any delay plug JS VST etc.
OR use JS global variables & edit an existing delay JS (can get messy)
|
|
|
05-16-2017, 05:12 PM
|
#4
|
Human being with feelings
Join Date: Jun 2010
Location: UK
Posts: 412
|
Quote:
Originally Posted by junh1024
Output the compensated value as a slider & use parameter modluation to link it with any delay plug JS VST etc.
|
I have, the problem is that the VST parameter is typically non-linear (to make the UI control nicer to use), so my linear millisecond value does not map correctly to the VST parameter. You would have to reverse engineer the non-linear shape of each plug's delay param, as they all use different curves.
(EDIT: done, see below).
Last edited by DeBased; 05-18-2017 at 11:35 AM.
|
|
|
05-16-2017, 09:25 PM
|
#5
|
Human being with feelings
Join Date: Feb 2014
Posts: 240
|
VST mcfx_delay seems to be linear (also hint: use the wet knob)
Last edited by junh1024; 05-16-2017 at 09:36 PM.
|
|
|
05-17-2017, 01:52 AM
|
#6
|
Human being with feelings
Join Date: Jun 2010
Location: UK
Posts: 412
|
Quote:
Originally Posted by junh1024
VST mcfx_delay seems to be linear (also hint: use the wet knob)
|
I need this to work with my preferred delay VST, as they're more than basic delays.
|
|
|
05-17-2017, 07:56 AM
|
#7
|
Human being with feelings
Join Date: Jun 2010
Location: UK
Posts: 412
|
The problem is that parameter linking modulation is always linear 0.0-1.0. Even if you could solve non-linear parameter shapes, you also need to know the millisecond value range of the param, which is again different for every plugin.
But Reaper _does_ understand all that for the delays I've tested, it shows actual millisecond values in automation lanes!
I'm guessing JS doesn't have access to this deeper understanding of VST parameters? I'm looking for a more universal solution that will work with many plugins (and happy to share it once it works), so having that param understanding is crucial. If JS can't get it, is it available in Reascript/C++?
A second problem is that one of the delays I need this for, Echoboy, doesn't respond to parameter modulation at all on its time parameter, even though it responds to automation. Anyone know why?
|
|
|
05-17-2017, 08:44 AM
|
#8
|
Human being with feelings
Join Date: Jun 2010
Location: UK
Posts: 412
|
... it looks like Reascript can do what I need, I'll report back if it works.
|
|
|
05-17-2017, 08:57 AM
|
#9
|
Human being with feelings
Join Date: Aug 2015
Posts: 2,969
|
is something do-able with the api TrackFX_ stuff?
|
|
|
05-17-2017, 09:02 AM
|
#10
|
Human being with feelings
Join Date: Jun 2010
Location: UK
Posts: 412
|
Quote:
Originally Posted by jrk
is something do-able with the api TrackFX_ stuff?
|
Yes I think so. It has TrackFX_SetParamNormalized() (which I assume is the usual linear 0.0-1.0) but also SetParam() (which I'm hoping is the actual millisecond value, mapped correctly).
I've done lots of JS (and general C++) but no Reascript, so I'm just figuring out the basics...
|
|
|
05-17-2017, 09:35 AM
|
#11
|
Human being with feelings
Join Date: Aug 2015
Posts: 2,969
|
Make it work - I've got a use for something like this :-)
|
|
|
05-17-2017, 12:29 PM
|
#12
|
Human being with feelings
Join Date: Jun 2010
Location: UK
Posts: 412
|
Unfortunately SetParam and SetParamNormalized() both do the same thing with the plugs I've tried - they both use 0.0 to 1.0, not actual milliseconds. Is there a way to set params based on Reaper's knowledge of their units and ranges?
(BTW, the Echoboy Time param modulation problem was due to them calling the actual dial 'Note', as it adjusts both the Note value in Note mode and the millisecond value in Time mode. To modulate the time you have to touch the up/down arrows next to the time readout, that control is called 'Time'.)
|
|
|
05-18-2017, 01:14 AM
|
#13
|
Human being with feelings
Join Date: Aug 2015
Posts: 2,969
|
what does TrackFX_GetParamEx do?
|
|
|
05-18-2017, 06:23 AM
|
#14
|
Human being with feelings
Join Date: Jun 2010
Location: UK
Posts: 412
|
Echoboy: returns min = 0, max = 1, mid = 0 (strangely).
The theory is that the VST supplies the msec readout only as a text string for DAWs to display in their automation, but doesn't actually allow setting anything other than 0-1. Haven't verified but it sounds likely.
Last edited by DeBased; 05-18-2017 at 06:29 AM.
|
|
|
05-18-2017, 06:38 AM
|
#15
|
Human being with feelings
Join Date: Jun 2010
Location: UK
Posts: 412
|
I've posted a FR for per-plugin instance Tempo modification, which would make this work for all syncing plugs right inside Reaper.
|
|
|
05-18-2017, 10:44 AM
|
#16
|
Human being with feelings
Join Date: Jun 2010
Location: UK
Posts: 412
|
In the meantime I've reverse-engineered Echoboy's time param, if anybody wants to try it out.
|
|
|
05-18-2017, 11:35 AM
|
#17
|
Human being with feelings
Join Date: Jun 2010
Location: UK
Posts: 412
|
.. now also supports ReaDelay and Guitar Rig's QuadDelay.
|
|
|
05-19-2017, 04:44 AM
|
#18
|
Human being with feelings
Join Date: Aug 2015
Posts: 2,969
|
Quote:
Originally Posted by DeBased
if anybody wants to try it out.
|
Yes. Where do I find it?
|
|
|
05-19-2017, 08:41 AM
|
#19
|
Human being with feelings
Join Date: Jun 2010
Location: UK
Posts: 412
|
Quote:
Originally Posted by jrk
Yes. Where do I find it?
|
Over here: http://forum.cockos.com/showthread.php?p=1846538
Last edited by DeBased; 05-19-2017 at 09:07 AM.
|
|
|
05-21-2017, 10:37 AM
|
#20
|
Human being with feelings
Join Date: Aug 2015
Posts: 2,969
|
Pity TrackFX_GetParamEx is no good. I believe you only need 3 points to fit (or interpolate) an exponential curve (which is what these curves are going to be, probably) - why GetParamEx should have been useful.
|
|
|
05-29-2017, 07:36 AM
|
#21
|
Human being with feelings
Join Date: Jun 2010
Location: UK
Posts: 412
|
Quote:
Originally Posted by jrk
Pity TrackFX_GetParamEx is no good. I believe you only need 3 points to fit (or interpolate) an exponential curve (which is what these curves are going to be, probably) - why GetParamEx should have been useful.
|
Yeah. Did you try the JS?
I just wanted to 'drift' the BPM param of another SoundToys plug, 'Tremolator', and that's even easier as it's linear (0-1 mod value = new_tempo - 30 / 210). Also works identically in Echoboy. Setting the BPM rather than time is actually cleaner as you can set the whole beats/notes thing in the plugin (and change at any time) and not worry about it in the script.
|
|
|
Thread Tools |
|
Display Modes |
Linear Mode
|
Posting Rules
|
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
HTML code is Off
|
|
|
All times are GMT -7. The time now is 05:47 AM.
|