So after an intensive day of pulling my hair out half paying attention to tutorial videos on youtube and browsing here, the NI forum and vi-control I managed to assemble something that appears to be semi-working at best (it's not giving me any errors in the script info so yay!).
I've run into a problem however. I've inserted a filter on Group Insert FX Slot 0. Whenever I insert a new group the Cutoff Knob that I've set to control it doesn't impact the new group. Is there any quick way to change this in my script or am I better off using the Instrument Insert FX for the filter since?
Here's my shoddy work so far.
Code: Select all
on init
make_perfview
set_script_title("Controls")
set_ui_height_px(300)
set_control_par_str($INST_WALLPAPER_ID,$CONTROL_PAR_PICTURE,"utopia_gui.png")
message("")
{declare labels}
{fx labels}
declare ui_label $fx (2,1)
set_text ($fx,"Effects")
set_control_par(get_ui_id($fx),$CONTROL_PAR_TEXT_ALIGNMENT,1)
move_control($fx,1,2)
{envelope}
declare ui_label $Envelope (4,1)
set_text ($Envelope,"Envelope")
set_control_par(get_ui_id($Envelope),$CONTROL_PAR_TEXT_ALIGNMENT,1)
move_control($Envelope,3,2)
{filter}
declare ui_label $Filter (2,1)
set_text ($Filter,"Filter")
set_control_par(get_ui_id($Filter),$CONTROL_PAR_TEXT_ALIGNMENT,1)
move_control($Filter,1,7)
{filter envelope}
declare ui_label $FilterEnvelope (4,1)
set_text ($FilterEnvelope,"Filter Envelope")
set_control_par(get_ui_id($FilterEnvelope),$CONTROL_PAR_TEXT_ALIGNMENT,1)
move_control($FilterEnvelope,3,7)
{declare knobs}
{filter env amount}
declare ui_knob $FilterAmount (0,1000000,1)
move_control($FilterAmount,1,10)
set_text($FilterAmount,"Env")
set_knob_unit($FilterAmount,$KNOB_UNIT_PERCENT)
set_knob_defval($FilterAmount,500000)
make_persistent($FilterAmount)
set_knob_label($FilterAmount,get_engine_par_disp($ENGINE_PAR_INTMOD_INTENSITY,0,1,-1))
{LFO amount}
declare ui_knob $LFOAmount (0,1000000,1)
move_control($LFOAmount,2,10)
set_text($LFOAmount,"LFO")
set_knob_unit($LFOAmount,$KNOB_UNIT_PERCENT)
set_knob_defval($LFOAmount,500000)
make_persistent($LFOAmount)
set_knob_label($LFOAmount,get_engine_par_disp($ENGINE_PAR_INTMOD_INTENSITY,0,2,-1))
{cutoff}
declare ui_knob $knobCutoff(0,1000000,1)
move_control($knobCutoff,1,8)
set_text($knobCutoff,"Cutoff")
set_knob_unit($knobCutoff,$KNOB_UNIT_HZ)
set_knob_defval($knobCutoff,1000000)
set_knob_label($knobCutoff,get_engine_par_disp($ENGINE_PAR_CUTOFF,0,0,-1))
make_persistent($knobCutoff)
declare ui_knob $knobRES(0,1000000,1)
move_control($knobRES,2,8)
set_text($knobRES,"Resonance")
set_knob_unit($knobRES,$KNOB_UNIT_PERCENT)
set_knob_defval($knobRES,350000)
set_knob_label($knobRES,get_engine_par_disp($ENGINE_PAR_RESONANCE,0,0,-1))
make_persistent($knobRES)
{volume envelope}
declare ui_knob $knobATTACK(0,1000000,1)
move_control($knobATTACK,3,3)
set_text($knobATTACK,"Attack")
set_knob_unit($knobATTACK,$KNOB_UNIT_MS)
set_knob_defval($knobATTACK,0)
set_knob_label($knobATTACK,get_engine_par_disp($ENGINE_PAR_ATTACK,0,0,-1))
make_persistent($knobATTACK)
declare ui_knob $knobDECAY(0,1000000,1)
move_control($knobDECAY,4,3)
set_text($knobDECAY,"Decay")
set_knob_unit($knobDECAY,$KNOB_UNIT_MS)
set_knob_defval($knobDECAY,500000)
set_knob_label($knobDECAY,get_engine_par_disp($ENGINE_PAR_DECAY,0,0,-1))
make_persistent($knobDECAY)
declare ui_knob $knobSUSTAIN(0,1000000,1)
move_control($knobSUSTAIN,5,3)
set_text($knobSUSTAIN,"Sustain")
set_knob_unit($knobSUSTAIN,$KNOB_UNIT_MS)
set_knob_defval($knobSUSTAIN,1000000)
set_knob_label($knobSUSTAIN,get_engine_par_disp($ENGINE_PAR_SUSTAIN,0,0,-1))
make_persistent($knobSUSTAIN)
declare ui_knob $knobRELEASE(0,1000000,1)
move_control($knobRELEASE,6,3)
set_text($knobRELEASE,"Release")
set_knob_unit($knobRELEASE,$KNOB_UNIT_MS)
set_knob_defval($knobRELEASE,250000)
set_knob_label($knobRELEASE,get_engine_par_disp($ENGINE_PAR_RELEASE,0,0,-1))
make_persistent($knobRELEASE)
{filter envelope}
declare ui_knob $knobATTACK2(0,1000000,1)
move_control($knobATTACK2,3,8)
set_text($knobATTACK2,"Attack")
set_knob_unit($knobATTACK2,$KNOB_UNIT_MS)
set_knob_defval($knobATTACK2,0)
set_knob_label($knobATTACK2,get_engine_par_disp($ENGINE_PAR_ATTACK,0,1,-1))
make_persistent($knobATTACK2)
declare ui_knob $knobDECAY2(0,1000000,1)
move_control($knobDECAY2,4,8)
set_text($knobDECAY2,"Decay")
set_knob_unit($knobDECAY2,$KNOB_UNIT_MS)
set_knob_defval($knobDECAY2,500000)
set_knob_label($knobDECAY2,get_engine_par_disp($ENGINE_PAR_DECAY,0,1,-1))
make_persistent($knobDECAY2)
declare ui_knob $knobSUSTAIN2(0,1000000,1)
move_control($knobSUSTAIN2,5,8)
set_text($knobSUSTAIN2,"Sustain")
set_knob_unit($knobSUSTAIN2,$KNOB_UNIT_MS)
set_knob_defval($knobSUSTAIN2,1000000)
set_knob_label($knobSUSTAIN2,get_engine_par_disp($ENGINE_PAR_SUSTAIN,0,1,-1))
make_persistent($knobSUSTAIN2)
declare ui_knob $knobRELEASE2(0,1000000,1)
move_control($knobRELEASE2,6,8)
set_text($knobRELEASE2,"Release")
set_knob_unit($knobRELEASE2,$KNOB_UNIT_MS)
set_knob_defval($knobRELEASE2,250000)
set_knob_label($knobRELEASE2,get_engine_par_disp($ENGINE_PAR_RELEASE,0,1,-1))
make_persistent($knobRELEASE2)
{filter on button}
declare ui_button $button_filter_on
set_text($button_filter_on, "Filter On")
move_control($button_filter_on,3,10)
make_persistent($button_filter_on)
end on
{filter}
on ui_control($knobCutoff)
set_engine_par($ENGINE_PAR_CUTOFF,$knobCutoff,0,0,-1)
set_knob_label($knobCutoff,get_engine_par_disp($ENGINE_PAR_CUTOFF,0,0,-1))
end on
on ui_control($knobRES)
set_engine_par($ENGINE_PAR_RESONANCE,$knobRES,0,0,-1)
set_knob_label($knobRES,get_engine_par_disp($ENGINE_PAR_RESONANCE,0,0,-1))
end on
{volume adsr}
on ui_control($knobATTACK)
set_engine_par($ENGINE_PAR_ATTACK,$knobATTACK,0,0,-1)
set_knob_label($knobATTACK,get_engine_par_disp($ENGINE_PAR_ATTACK,0,0,-1))
end on
on ui_control($knobDECAY)
set_engine_par($ENGINE_PAR_DECAY,$knobDECAY,0,0,-1)
set_knob_label($knobDECAY,get_engine_par_disp($ENGINE_PAR_DECAY,0,0,-1))
end on
on ui_control($knobSUSTAIN)
set_engine_par($ENGINE_PAR_SUSTAIN,$knobSUSTAIN,0,0,-1)
set_knob_label($knobSUSTAIN,get_engine_par_disp($ENGINE_PAR_SUSTAIN,0,0,-1))
end on
on ui_control($knobRELEASE)
set_engine_par($ENGINE_PAR_RELEASE,$knobRELEASE,0,0,-1)
set_knob_label($knobRELEASE,get_engine_par_disp($ENGINE_PAR_RELEASE,0,0,-1))
end on
{filter adsr}
on ui_control($knobATTACK2)
set_engine_par($ENGINE_PAR_ATTACK, $knobATTACK2, 0, find_mod(0, "ENV_FLT"), -1)
set_knob_label($knobATTACK2,get_engine_par_disp($ENGINE_PAR_ATTACK,0,find_mod(0, "ENV_FLT"),-1))
end on
on ui_control($knobDECAY2)
set_engine_par($ENGINE_PAR_DECAY, $knobDECAY2, 0, find_mod(0, "ENV_FLT"), -1)
set_knob_label($knobDECAY2,get_engine_par_disp($ENGINE_PAR_DECAY,0,find_mod(0, "ENV_FLT"),-1))
end on
on ui_control($knobSUSTAIN2)
set_engine_par($ENGINE_PAR_SUSTAIN, $knobSUSTAIN2, 0, find_mod(0, "ENV_FLT"), -1)
set_knob_label($knobSUSTAIN2,get_engine_par_disp($ENGINE_PAR_SUSTAIN,0,find_mod(0, "ENV_FLT"),-1))
end on
on ui_control($knobRELEASE2)
set_engine_par($ENGINE_PAR_RELEASE, $knobRELEASE2, 0, find_mod(0, "ENV_FLT"), -1)
set_knob_label($knobRELEASE2,get_engine_par_disp($ENGINE_PAR_RELEASE,0,find_mod(0, "ENV_FLT"),-1))
end on
{filter mod amount}
on ui_control ($FilterAmount)
set_engine_par($ENGINE_PAR_INTMOD_INTENSITY,$FilterAmount,0,find_mod(0, "ENV_FLT"),-1)
set_knob_label($FilterAmount,get_engine_par_disp($ENGINE_PAR_INTMOD_INTENSITY,0,find_mod(0, "ENV_FLT"),-1))
end on
{lfo mod amount}
on ui_control ($LFOAmount)
set_engine_par($ENGINE_PAR_INTMOD_INTENSITY,$LFOAmount,0,find_mod(0, "LFO_ENV"),-1)
set_knob_label($LFOAmount,get_engine_par_disp($ENGINE_PAR_INTMOD_INTENSITY,0,find_mod(0, "LFO_ENV"),-1))
end on
{filter on button}
on ui_control ($button_filter_on)
set_engine_par($ENGINE_PAR_EFFECT_BYPASS, abs($button_filter_on -1), 0, 0, 0)
end on