Coarse + Fine Control with two Widgets

edit: 24 june 21.
You want to add on top of a coarse control a “fine control” , which acts “additiv” on top of the “Coarse control” ?
The solution is to find in post 3 from @dhj !

He has written a “script”. You need to use that script ! …thats the way to go here.
Create three! Widgets for the parameter you want to control.
Give these widgets a name in the widget edit window in the "advanced tap / the first one call: “Actual”* / map this to your VST and the actual parameter. (* as seen in the script, line 2-4 )
One call “Coarse” ( the naming is case sensitiv btw. ).
The other call “Fine”. No need to map these two widgets to anything. the script is doing that work.
( or, if other names are desired, change the code in the script accordingly / thats above my head )

next: copy the text of that Script, posted in post 3, into the “Rackspace scrip editor”, found under the window tap, on top of your screen. Donne.
Now is your “Coarse” widget controlling the “Actual” widget 1:1,
and the “Fine” widget is adding an offset to that coarse control in a + and - fashion. Center of the HW control = 0 offset.

More: if you want to change the range of that fine control, see post 16, respectivly what has been tagged now as the “Solution post”.
( its just the solution to change the range)

but in short: looking from the bottom of the code, line 2 and 5 have a number, shown in red,
thats the number that has to be changed. Details in post 26.

my original post, below
( you don´t need it ! …you only need the text above, and post 3 and 26 )

i wonder:
is there a way to create a Coarse AND Fine control on the same parameter by using two widgets ?
i VERY often had the desire to have that in the meantime ( using two hardware controls)

and ideally not by using scripting ,
but it would be also interesting to know if scripts would work for that task :wink:

(i´m still not there, working with scripts, and it adds just another level of complexity dealing with all the files and presets, that things get to overwhelming for me, dealing with scripts on top of all that)

Well, as far as i can imagine there is at the moment no way to achieve this without scripting.

Of course you can define two widgets (one for “coarse” and one for “fine”), where you could restrain the value range of the “fine” one to only reach from 0 to 1 (instead of 100), but to get the final result of those two, you’d have to add their values somehow - and this might only happen by using GPScript.
But it’ll be no rocket science to do this. :nerd_face:

1 Like

You would have to use GPScript for this. Here’s one way to do it where two widgets control the value of a third widget which would then be attached to a plugin parameter. Of course you could choose to not use the third widget and just set the value of some parameter in a plugin directly.

Var
   Coarse : Widget
   Fine : Widget
   Actual : Widget // Widget to be controlled


// Adjusts the actual widget using the sum of the coarse widget value
// and a fraction of the fine widget value
Function CoarseFineControl(c : Widget, f : widget, a : widget, fineRatio : integer)
   var cv, fv : double
   
   cv = c.GetWidgetValue()
   fv = (f.GetWidgetValue() - 0.5) / fineRatio
   
   a.SetWidgetValue(cv + fv)
   Print(cv+fv)
   
End


// When either coarse or fine widget changes, adjust
// the actual widget
On WidgetValueChanged(fineValue : double) from Fine
   CoarseFineControl(Coarse, Fine, Actual, 50)
End

On WidgetValueChanged(fineValue : double) from Coarse
   CoarseFineControl(Coarse, Fine, Actual, 50)
End

Here’s a sample gig file

CoarseFine.gig (10.5 KB)

4 Likes

Tested, is working “fine”

3 Likes

This is exactly how it would be done!
@dhj: You designed the fine-widget to behave in a +/- way… good idea!
Ideally one would choose a the red knob widget for this (looks like a PAN-controller).

I did use the red knob!

1 Like

I was wondering if you need this for live playing, because if not, you can adjust a widget in the regular way (“coarse”) and hold the key at the same time when you want to have a “fine” control of the widget.

1 Like

Ah, i didn’t have a chance to open the gig file @work

yes, live playing !
i use some FX that are VERY sensitiv to adjustments like some INA-GRM FX .

A coarse AND fine also delivers then kind of a “dual-level jamm access”.
its not just to finetune things, its effectivly to jamm on a fine level while playing.
while also having a coarse adjustment level at anytime in reach for wilder jamms,
respectivly (and thats important) to set your “fine-jamm-area” by readjusting the coarse tune.
…ohh wait: i hope it is working out to get then the full midi stroke “for that subtle tune area”?
That would have been the hope…unshure now, if this is even possible ?

i´ll see whats doable
( beening used to do this things within my modularsynth with analog respectivly 16bit resolution)

Fine tune in a ± way is perfect !

long time not used any “scripts”. will give it a try later when i´m ready.
Thanks alots for the help !

winter time, new macmini M1 with more CPU power , things are coming together, hehe
working with GigPerformer3 is awesome !

I agree :wink:

I need help please:
in post 3 was the “Coarse + Fine tune” script posted.

how do i add this script to an existing Gig ( GP4) ?

yes, i just sat my time with the manual…i have still no clue.
i just loaded the attached gig file into a second GP instance, and had a look …still: no idea what i have to do. sorry
yes, its a long long time ago when i dealt the last time with any script file within GP3/4.
( i have now midi footpedal control, and will need it from now on :wink: …playing Bass :wink: )

is there a section in the manual that just explains how to add an existing script file into an existing gig ? i could not find anything.

Open the Script Window, Copy the code and paste it to your rackspace script Script

1 Like

ahh wait, it starts that i´m no longer shure how the script as such works, but i guess i get that part just right now:

on top, under —> var:
----> coarse / fine / actual
thats the name of the widgets used, right ? (3 widgets were used by djh)
if i use differently named widgets, i would change that lines of the scrip code accordingly ?

ahh wait:
then i copy&paste all those lines into the scrip editor,
and press: compile ?

and then ?

Then close the window …and be happy.

1 Like

GREAT, …i do, and be happy :wink:

Thanks !

1 Like

haha, …not so easy.

ok, i went back, and kept the original names for the widget, as in the script above.
i also changed the frontrack into a 3 widget setup, for that one parameter.
i compiled the above script file, and get the following error message:

The widget ‘Fine’ is declared in a script but does not exist in the rackspace called ‘PNO-WRP-Reso4096_3ARI’ <<

also: i enabled OSC in general, …in case that matters,
and, i enabled OSC on all three widgets in their edit setup box.

the widget “fine” is there, and named accordingly

Take care of Upper- and Lowercase - that is important!

1 Like

thats it !

i checked, but was in the general naming field,
in the advanced tap was the name still wrong.

WOW, my footpedal acts now as a fine or superfine control !!..as i set it with the range setting.
awesome !

Got it, and back in :wink:

1 Like

Do you know this?

https://gigperformer.com/docs/GPScript40/

1 Like