You are on page 1of 18

{***********************************************

Kontakt 4 Factory Libary - Instrument


Urban Beats Master FX
Author : Native Instruments
Written by: Nicki Marinic, Josef Natterer, Dinos Vallianatos
Modified: September 10th, 2009
*************************************************}
on init
message("")
make_perfview
set_ui_height_px(318)
_set_skin_offset(1233)
set_script_title("Master FX (C5 - C6)")
declare const $FONT_ID := 13 {the font id for all visible labels & drop
downs}
declare const $FONT_ID_2 := 14 {the font id for inactive buttons}
declare const $FONT_ID_3 := 15 {the font id for active buttons}
declare const $CREATE_AUTOMATION_ID := 0
declare !preset_name[13]
!preset_name[0] := "1: C5"
!preset_name[1] := "2: Db5"
!preset_name[2] := "3: D5"
!preset_name[3] := "4: Eb5"
!preset_name[4] := "5: E5"
!preset_name[5] := "6: F5"
!preset_name[6] := "7: Gb5"
!preset_name[7] := "8: G5"
!preset_name[8] := "9: Ab5"
!preset_name[9] := "10: A5"
!preset_name[10] := "11: Bb5"
!preset_name[11] := "12: B5"
!preset_name[12] := "13: C6"
declare const $START_FX_NOTE := 84 {C5 }
{Effect Slot Placement}
declare const $filter_slot := 4 {the slot for the lowpass filter, the hi
ghpass filter is expected to reside in the next slot}
declare const $convolution_slot := 3
declare const $eq_slot := 0
declare const $sat_slot := 1
declare const $NUM_PRESET := 8
declare $a
declare %default_arr[$NUM_PRESET] := (500000,0,0,1000001,0,0,0,396851)
declare %helper_arr[$NUM_PRESET] := (500000,0,0,1000001,0,0,0,396851)
declare %preset_arr[$NUM_PRESET*13]
make_persistent(%preset_arr)
$a := 0
while($a < $NUM_PRESET*13)
%preset_arr[$a] := %default_arr[$a mod $NUM_PRESET]
inc($a)
end while
declare $max
declare %pressed_id[13]
declare const $num_ir_samples := 10 {the number of ir samples used in th
is instrument group}
declare $count
declare !ir_names[$num_ir_samples]
!ir_names[0] := "Elktrostatk"
!ir_names[1] := "Filter"
!ir_names[2] := "Glass"
!ir_names[3] := "Vinyl 1"
!ir_names[4] := "Vinyl 2"
!ir_names[5] := "Plast.Tube"
!ir_names[6] := "RoomClap"
!ir_names[7] := "Rust"
!ir_names[8] := "Steam"
!ir_names[9] := "Woodblck"
declare !ir_filenames[$num_ir_samples]
!ir_filenames[0] := "Electrostatic"
!ir_filenames[1] := "Filter"
!ir_filenames[2] := "Glass"
!ir_filenames[3] := "Grammophon 1"
!ir_filenames[4] := "Grammophon 2"
!ir_filenames[5] := "Plastic Tube"
!ir_filenames[6] := "Room Clap"
!ir_filenames[7] := "Rust"
!ir_filenames[8] := "Steam Machine"
!ir_filenames[9] := "Woodblock"
{*****GUI*****}
{ui elements declarations}
declare ui_slider $preset_knob (0,12)
declare ui_slider $volume_knob (0,1000000)
declare ui_slider $sat_knob (0,1000000)
declare ui_slider $morph_knob (0,100)
declare ui_slider $convolution_knob (0,10000)
declare ui_slider $cutoff_knob (0,2000002)
declare ui_slider $reso_knob (0,1000000)
declare ui_slider $reverb_knob (0,1000000)
declare ui_slider $delay_knob (0,1000000)
declare ui_menu $edit_preset
declare ui_menu $ir_menu
declare ui_button $snap_to_default
declare ui_label $preset_label (1,1)
declare ui_label $cutoff_label (1,1)
{automation}
set_control_par_str(get_ui_id($preset_knob),$CONTROL_PAR_AUTOMATION_NAME
,"Preset")
set_control_par_str(get_ui_id($volume_knob),$CONTROL_PAR_AUTOMATION_NAME
,"Gain")
set_control_par_str(get_ui_id($sat_knob),$CONTROL_PAR_AUTOMATION_NAME,"S
at")
set_control_par_str(get_ui_id($morph_knob),$CONTROL_PAR_AUTOMATION_NAME,
"Sound")
set_control_par_str(get_ui_id($convolution_knob),$CONTROL_PAR_AUTOMATION
_NAME,"Cnv Mix")
set_control_par_str(get_ui_id($cutoff_knob),$CONTROL_PAR_AUTOMATION_NAME
,"Cutoff")
set_control_par_str(get_ui_id($reso_knob),$CONTROL_PAR_AUTOMATION_NAME,"
Reso")
set_control_par_str(get_ui_id($reverb_knob),$CONTROL_PAR_AUTOMATION_NAME
,"Rv Amt")
set_control_par_str(get_ui_id($delay_knob),$CONTROL_PAR_AUTOMATION_NAME,
"Dl Amt")
{ui ids array}
declare %ui_id[14]
%ui_id[0] := get_ui_id($preset_knob)
%ui_id[1] := get_ui_id($volume_knob)
%ui_id[2] := get_ui_id($sat_knob)
%ui_id[3] := get_ui_id($morph_knob)
%ui_id[4] := get_ui_id($convolution_knob)
%ui_id[5] := get_ui_id($cutoff_knob)
%ui_id[6] := get_ui_id($reso_knob)
%ui_id[7] := get_ui_id($reverb_knob)
%ui_id[8] := get_ui_id($delay_knob)
%ui_id[9] := get_ui_id($edit_preset)
%ui_id[10] := get_ui_id($ir_menu)
%ui_id[11] := get_ui_id($snap_to_default)
%ui_id[12] := get_ui_id($preset_label)
%ui_id[13] := get_ui_id($cutoff_label)
{ui elements placement}
move_control_px ($preset_knob,75,82)
move_control_px ($volume_knob,166,82)
move_control_px ($sat_knob,253,82)
move_control_px ($morph_knob,253,147)
move_control_px ($convolution_knob,342,82)
move_control_px ($cutoff_knob,429,82)
move_control_px ($reso_knob,429,147)
move_control_px ($reverb_knob,521,82)
move_control_px ($delay_knob,521,147)
move_control_px ($edit_preset,51,155)
move_control_px ($ir_menu,322,155)
move_control_px ($snap_to_default,52,132)
move_control_px ($preset_label, 49, 65)
move_control_px ($cutoff_label, 403, 65)
set_control_par(%ui_id[11], $CONTROL_PAR_HEIGHT, 20)
set_control_par(%ui_id[11], $CONTROL_PAR_WIDTH, 81)
set_control_par(%ui_id[9], $CONTROL_PAR_WIDTH, 83)
set_control_par(%ui_id[10], $CONTROL_PAR_WIDTH, 76)
{ui elements skinning and sizing}
$count := 0
while ($count < 9)
set_control_par_str(%ui_id[$count], $CONTROL_PAR_PICTURE, "pv_ur
ban_knob_blue")
set_control_par(%ui_id[$count], $CONTROL_PAR_MOUSE_BEHAVIOUR, -5
00)
inc($count)
end while
set_control_par_str(%ui_id[0], $CONTROL_PAR_PICTURE, "pv_urban_knob_oran
ge")
set_control_par_str(%ui_id[7], $CONTROL_PAR_PICTURE, "pv_urban_knob_ligh
t_blue")
set_control_par_str(%ui_id[8], $CONTROL_PAR_PICTURE, "pv_urban_knob_ligh
t_blue")
$count := 9
while ($count < 11)
set_control_par_str(%ui_id[$count], $CONTROL_PAR_PICTURE, "pv_ur
ban_dropdown")
set_control_par(%ui_id[$count], $CONTROL_PAR_TEXTPOS_Y, 3)
inc($count)
end while
set_control_par_str(%ui_id[11], $CONTROL_PAR_PICTURE, "pv_urban_button_o
noff")

{ui elements inital & default values}


$preset_knob := 0
$cutoff_knob := 1000001
$convolution_knob := 0
set_control_par(get_ui_id($reverb_knob), $CONTROL_PAR_DEFAULT_VALUE, 0)
set_control_par(get_ui_id($delay_knob), $CONTROL_PAR_DEFAULT_VALUE, 0)
set_control_par(get_ui_id($delay_knob), $CONTROL_PAR_DEFAULT_VALUE, 3968
51)
set_control_par(get_ui_id($cutoff_knob), $CONTROL_PAR_DEFAULT_VALUE, 100
0001)
set_control_par(get_ui_id($reso_knob), $CONTROL_PAR_DEFAULT_VALUE, 0)
set_control_par(get_ui_id($sat_knob), $CONTROL_PAR_DEFAULT_VALUE, 500000
)
set_control_par(get_ui_id($convolution_knob), $CONTROL_PAR_DEFAULT_VALUE
, 5000)
{persistent?}
make_persistent ($preset_knob)
make_persistent($ir_menu)
make_persistent($snap_to_default)
{text}
_read_persistent_var ($snap_to_default)
set_control_par(%ui_id[12], $CONTROL_PAR_TEXT_ALIGNMENT, 1)
set_control_par(%ui_id[12], $CONTROL_PAR_HIDE, $HIDE_PART_BG)
set_control_par(%ui_id[13], $CONTROL_PAR_TEXT_ALIGNMENT, 1)
set_control_par(%ui_id[13], $CONTROL_PAR_HIDE, $HIDE_PART_BG)
$count := 9
while ($count < 14)
set_control_par(%ui_id[$count], $CONTROL_PAR_FONT_TYPE, $FONT_ID
)
inc($count)
end while
if ($snap_to_default = 1)
set_control_par(%ui_id[11], $CONTROL_PAR_FONT_TYPE, $FONT_ID_3)
else
set_control_par(%ui_id[11], $CONTROL_PAR_FONT_TYPE, $FONT_ID_2)
end if
set_control_par(%ui_id[11], $CONTROL_PAR_TEXTPOS_Y, 2)
set_text($preset_label, "1: C5")
set_text($cutoff_label, "LP<>HP")
set_text($snap_to_default," SNAP TO 1st")
{menus}
add_menu_item ($ir_menu,"<bypass>",-1)
$count := 0
while ($count < $num_ir_samples)
add_menu_item ($ir_menu,!ir_names[$count],$count)
inc ($count)
end while
add_menu_item($edit_preset,"Edit...",100)
add_menu_item($edit_preset,"--------------",99)
add_menu_item($edit_preset,"Copy Preset",0)
add_menu_item($edit_preset,"Paste Preset",1)
add_menu_item($edit_preset,"Clear Preset",2)
add_menu_item($edit_preset,"--------------",99)
add_menu_item($edit_preset,"Copy cur. Preset to all Presets",3)
{*****EQ Morphing*****}
declare %savearr[10*10] := (...
{0 } 496648,500000,500000, 500000,500000,500000, 500000, 500000,5
00000,...
{1 } 363963, 62500,700195, 619338, 62500,500000, 1000000,1000000,
0,...
{2 } 566356, 0,670898, 727247, 0,679688, 1000000,1000000,11719
,...
{3 } 507188, 0,711914, 782429, 0,746094, 861926, 39062,1513
67,...
{4 } 86103, 0, 0, 103348, 0, 0, 704024,125000,785156
,...
{5 } 39056, 0, 0, 706010, 0,772461, 856035, 0,6074
22,...
{6 } 0,586914,515625, 886099, 0, 9766, 630694, 0,713
867,...
{7 } 376953, 0, 39062, 555664, 0,578125, 796875, 144531,62304
7,...
{8 } 11687,660156, 0, 715072, 6836,532500, 845717, 0,72851
6,...
{9 } 0,915039,0, 533783, 0,655273, 633775, 639648,601563,...
{10 } 136266,357422,500000, 489733,250000,500000, 830288, 417969,5
00000)
make_persistent(%savearr)
declare %engine_par[9] := (...
$ENGINE_PAR_FREQ1,$ENGINE_PAR_BW1,$ENGINE_PAR_GAIN1,...
$ENGINE_PAR_FREQ2,$ENGINE_PAR_BW2,$ENGINE_PAR_GAIN2,...
$ENGINE_PAR_FREQ3,$ENGINE_PAR_BW3,$ENGINE_PAR_GAIN3)
declare $helper
declare $knob
_read_persistent_var($morph_knob)
$knob := ($morph_knob+10)*10
declare $index_1
declare $index_2
{*****EQ Morphing End*****}
_read_persistent_var(%preset_arr)
_read_persistent_var($preset_knob)
$sat_knob := %preset_arr[($preset_knob * $NUM_PRESET) + 0]
$morph_knob := %preset_arr[($preset_knob * $NUM_PRESET) + 1]
$convolution_knob := %preset_arr[($preset_knob * $NUM_PRESET) + 2]
$cutoff_knob := %preset_arr[($preset_knob * $NUM_PRESET) + 3]
$reso_knob := %preset_arr[($preset_knob * $NUM_PRESET) + 4]
$reverb_knob := %preset_arr[($preset_knob * $NUM_PRESET) + 5]
$delay_knob := %preset_arr[($preset_knob * $NUM_PRESET) + 6]
$volume_knob := %preset_arr[($preset_knob * $NUM_PRESET) + 7]
{ Saturation}
_set_engine_par ($ENGINE_PAR_SHAPE,$sat_knob,-1,$sat_slot,1)

{Sound }
$index_1 := $morph_knob/10
$index_2 := $morph_knob/10 +1
$knob := $morph_knob*10
if ($index_2 > 10)
$index_2 := 10
end if
$a := 0
while($a < 9)
$helper := ((%savearr[($index_2*9) + $a] - %savearr[($index_1*9)
+ $a]) * ($knob mod 100))/100 + %savearr[($index_1*9) + $a]
_set_engine_par(%engine_par[$a],$helper,-1,$eq_slot,1)
inc($a)
end while
{Convolution }
select ($convolution_knob)
case 0
_set_engine_par ($ENGINE_PAR_SEND_EFFECT_DRY_LEVEL,39685
1,-1,$convolution_slot,1)
_set_engine_par ($ENGINE_PAR_SEND_EFFECT_OUTPUT_GAIN,0,-
1,$convolution_slot,1)
case 1 to 4999
_set_engine_par($ENGINE_PAR_SEND_EFFECT_DRY_LEVEL,(($con
volution_knob - 1) * (314926 - 396851) / (4998)) + 396851,-1,$convolution_slot,1
)
_set_engine_par($ENGINE_PAR_SEND_EFFECT_OUTPUT_GAIN,(($c
onvolution_knob - 1) * (314926) / (4998)),-1,$convolution_slot,1)
case 5000
_set_engine_par ($ENGINE_PAR_SEND_EFFECT_DRY_LEVEL,31492
6,-1,$convolution_slot,1)
_set_engine_par ($ENGINE_PAR_SEND_EFFECT_OUTPUT_GAIN,314
926,-1,$convolution_slot,1)
case 5001 to 9999
_set_engine_par ($ENGINE_PAR_SEND_EFFECT_DRY_LEVEL,(($co
nvolution_knob - 5001) * (-314926) / (4998)) + 314926,-1,$convolution_slot,1)
_set_engine_par ($ENGINE_PAR_SEND_EFFECT_OUTPUT_GAIN,(($
convolution_knob - 5001) * (396851 - 314926) / (4998)) + 314926,-1,$convolution_
slot,1)
case 10000
_set_engine_par ($ENGINE_PAR_SEND_EFFECT_DRY_LEVEL,0,-1,
$convolution_slot,1)
_set_engine_par ($ENGINE_PAR_SEND_EFFECT_OUTPUT_GAIN,396
851,-1,$convolution_slot,1)
end select
{Cutoff }
select ($cutoff_knob)
case 0 to 1000000
_set_engine_par($ENGINE_PAR_CUTOFF,$cutoff_knob,-1,$filt
er_slot,1)
_set_engine_par($ENGINE_PAR_CUTOFF,0,-1,$filter_slot+1,1
)
case 1000001
_set_engine_par($ENGINE_PAR_CUTOFF,1000000,-1,$filter_sl
ot,1)
_set_engine_par($ENGINE_PAR_CUTOFF,0,-1,$filter_slot+1,1
)
case 1000002 to 2000002
_set_engine_par($ENGINE_PAR_CUTOFF,$cutoff_knob-1000002,
-1,$filter_slot+1,1)
_set_engine_par($ENGINE_PAR_CUTOFF,1000000,-1,$filter_sl
ot,1)
end select
{Reso }
_set_engine_par ($ENGINE_PAR_RESONANCE,$reso_knob,-1,$filter_slot,1)
_set_engine_par ($ENGINE_PAR_RESONANCE,$reso_knob,-1,$filter_slot+1,1)
{Reverb + Delay}
_set_engine_par ($ENGINE_PAR_SENDLEVEL_0,$reverb_knob,-1,7,1)
_set_engine_par ($ENGINE_PAR_SENDLEVEL_1,$delay_knob,-1,7,1)
{Gainer }
_set_engine_par ($ENGINE_PAR_GN_GAIN,$volume_knob,-1,6,1)
set_control_par_str(get_ui_id($preset_knob),$CONTROL_PAR_LABEL,!preset_n
ame[$preset_knob])
set_control_par_str(get_ui_id($volume_knob),$CONTROL_PAR_LABEL,get_engin
e_par_disp($ENGINE_PAR_GN_GAIN,-1,6,1) & " dB")
set_control_par_str(get_ui_id($sat_knob),$CONTROL_PAR_LABEL,get_engine_p
ar_disp($ENGINE_PAR_SHAPE,-1,$sat_slot,1) & " %")
set_control_par_str(get_ui_id($morph_knob),$CONTROL_PAR_LABEL,$morph_kno
b & " %")
set_control_par_str(get_ui_id($convolution_knob),$CONTROL_PAR_LABEL,$con
volution_knob/100 & " %")
set_control_par_str(get_ui_id($cutoff_knob),$CONTROL_PAR_LABEL,$cutoff_k
nob/20000 & " %")
set_control_par_str(get_ui_id($reso_knob),$CONTROL_PAR_LABEL,get_engine_
par_disp($ENGINE_PAR_RESONANCE,-1,$filter_slot,1) & " %")
set_control_par_str(get_ui_id($reverb_knob),$CONTROL_PAR_LABEL,get_engin
e_par_disp($ENGINE_PAR_SENDLEVEL_0,-1,7,1) & " dB")
set_control_par_str(get_ui_id($delay_knob),$CONTROL_PAR_LABEL,get_engine
_par_disp($ENGINE_PAR_SENDLEVEL_1,-1,7,1) & " dB")
{******************** SET CONTROL HELP *********************************
*******}
set_control_help ($delay_knob,"Delay: The wet amount of the delay send e
ffect. You can change the delay settings on the Reverb/Delay page.")
set_control_help ($reverb_knob,"Reverb: The wet amount of the reverb sen
d effect. You can change the reverb settings on the Reverb/Delay page.")
set_control_help ($ir_menu,"Timbre Impulse: Choose a timbre impulse for
the convolution effect. This convolution effect is independent from the convolut
ion effect used as the reverb send effect. The impulse sample is not changed whe
n recalling other presets.")
set_control_help ($convolution_knob,"Dry/Wet: Controls the dry/wet amoun
t of the convolution effect.")
set_control_help ($sat_knob,"Saturation: Sets the saturation amount.")
set_control_help ($reso_knob,"Master Filter Resonance: Sets the resonanc
e of both the low and high pass filter.")
set_control_help ($cutoff_knob,"Master Filter Cutoff: A combination of a
low pass and high pass filter. Moving the knob to the left sets the cutoff freq
uency of the low pass filter, moving it to the right sets the cutoff frequency o
f the high pass filter.")
set_control_help ($preset_knob,"Preset: Choose among twelve presets + on
e default preset. Each change made to any control of the master FX chain is imme
diately saved to the current preset. The presets are recalled by pressing a key
in the range of C5 to C6.")
set_control_help ($edit_preset,"Edit Preset: Commands for copying and pa
sting presets.")
set_control_help ($snap_to_default,"Snap to Default: When enabled, relea
sing a key in the range of C#5 to C6 will always snap back to the default preset
which is triggered by C5.")
set_control_help ($morph_knob,"Sound: Changes the EQ setting.")
set_control_help ($volume_knob,"Volume: Sets the master volume at the en
d of the effect chain. Use this to smooth out volume changes between the presets
.")
{******************** SET CONTROL HELP *********************************
*******}
if ($CREATE_AUTOMATION_ID = 1)
set_control_par(get_ui_id($preset_knob),$CONTROL_PAR_AUTOMATION_
ID,77)
set_control_par(get_ui_id($volume_knob),$CONTROL_PAR_AUTOMATION_
ID,78)
set_control_par(get_ui_id($sat_knob),$CONTROL_PAR_AUTOMATION_ID,
79)
set_control_par(get_ui_id($morph_knob),$CONTROL_PAR_AUTOMATION_I
D,80)
set_control_par(get_ui_id($convolution_knob),$CONTROL_PAR_AUTOMA
TION_ID,81)
set_control_par(get_ui_id($cutoff_knob),$CONTROL_PAR_AUTOMATION_
ID,82)
set_control_par(get_ui_id($reso_knob),$CONTROL_PAR_AUTOMATION_ID
,83)
set_control_par(get_ui_id($reverb_knob),$CONTROL_PAR_AUTOMATION_
ID,84)
set_control_par(get_ui_id($delay_knob),$CONTROL_PAR_AUTOMATION_I
D,85)

end if
end on
on note
if ($EVENT_NOTE >= $START_FX_NOTE and $EVENT_NOTE <= $START_FX_NOTE+12)
$preset_knob := $EVENT_NOTE - $START_FX_NOTE
%pressed_id[$preset_knob] := $EVENT_ID
set_text($preset_label,!preset_name[$preset_knob] )
$sat_knob := %preset_arr[($preset_knob * $NUM_PRESET) + 0]
$morph_knob := %preset_arr[($preset_knob * $NUM_PRESET) + 1]
$convolution_knob := %preset_arr[($preset_knob * $NUM_PRESET) +
2]
$cutoff_knob := %preset_arr[($preset_knob * $NUM_PRESET) + 3]
$reso_knob := %preset_arr[($preset_knob * $NUM_PRESET) + 4]
$reverb_knob := %preset_arr[($preset_knob * $NUM_PRESET) + 5]
$delay_knob := %preset_arr[($preset_knob * $NUM_PRESET) + 6]
$volume_knob := %preset_arr[($preset_knob * $NUM_PRESET) + 7]
{ Saturation }
_set_engine_par ($ENGINE_PAR_SHAPE,$sat_knob,-1,$sat_slot,1)
{Sound }
$index_1 := $morph_knob/10
$index_2 := $morph_knob/10 +1
$knob := $morph_knob*10
if ($index_2 > 10)
$index_2 := 10
end if
$a := 0
while($a < 9)
$helper := ((%savearr[($index_2*9) + $a] - %savearr[($in
dex_1*9) + $a]) * ($knob mod 100))/100 + %savearr[($index_1*9) + $a]
_set_engine_par(%engine_par[$a],$helper,-1,$eq_slot,1)
inc($a)
end while
{Convolution }
select ($convolution_knob)
case 0
_set_engine_par ($ENGINE_PAR_SEND_EFFECT_DRY_LEV
EL,396851,-1,$convolution_slot,1)
_set_engine_par ($ENGINE_PAR_SEND_EFFECT_OUTPUT_
GAIN,0,-1,$convolution_slot,1)
case 1 to 4999
_set_engine_par($ENGINE_PAR_SEND_EFFECT_DRY_LEVE
L,(($convolution_knob - 1) * (314926 - 396851) / (4998)) + 396851,-1,$convolutio
n_slot,1)
_set_engine_par($ENGINE_PAR_SEND_EFFECT_OUTPUT_G
AIN,(($convolution_knob - 1) * (314926) / (4998)),-1,$convolution_slot,1)
case 5000
_set_engine_par ($ENGINE_PAR_SEND_EFFECT_DRY_LEV
EL,314926,-1,$convolution_slot,1)
_set_engine_par ($ENGINE_PAR_SEND_EFFECT_OUTPUT_
GAIN,314926,-1,$convolution_slot,1)
case 5001 to 9999
_set_engine_par ($ENGINE_PAR_SEND_EFFECT_DRY_LEV
EL,(($convolution_knob - 5001) * (-314926) / (4998)) + 314926,-1,$convolution_sl
ot,1)
_set_engine_par ($ENGINE_PAR_SEND_EFFECT_OUTPUT_
GAIN,(($convolution_knob - 5001) * (396851 - 314926) / (4998)) + 314926,-1,$conv
olution_slot,1)
case 10000
_set_engine_par ($ENGINE_PAR_SEND_EFFECT_DRY_LEV
EL,0,-1,$convolution_slot,1)
_set_engine_par ($ENGINE_PAR_SEND_EFFECT_OUTPUT_
GAIN,396851,-1,$convolution_slot,1)
end select
{Reso }
_set_engine_par ($ENGINE_PAR_RESONANCE,$reso_knob,-1,$filter_slo
t,1)
_set_engine_par ($ENGINE_PAR_RESONANCE,$reso_knob,-1,$filter_slo
t+1,1)
{Reverb + Delay }
_set_engine_par ($ENGINE_PAR_SENDLEVEL_0,$reverb_knob,-1,7,1)
_set_engine_par ($ENGINE_PAR_SENDLEVEL_1,$delay_knob,-1,7,1)
{Gainer }
_set_engine_par ($ENGINE_PAR_GN_GAIN,$volume_knob,-1,6,1)
{Cutoff }
select ($cutoff_knob)
case 0 to 1000000
_set_engine_par($ENGINE_PAR_CUTOFF,$cutoff_knob,
-1,$filter_slot,1)
_set_engine_par($ENGINE_PAR_CUTOFF,0,-1,$filter_
slot+1,1)
case 1000001
_set_engine_par($ENGINE_PAR_CUTOFF,1000000,-1,$f
ilter_slot,1)
_set_engine_par($ENGINE_PAR_CUTOFF,0,-1,$filter_
slot+1,1)
case 1000002 to 2000002
_set_engine_par($ENGINE_PAR_CUTOFF,$cutoff_knob-
1000002,-1,$filter_slot+1,1)
_set_engine_par($ENGINE_PAR_CUTOFF,1000000,-1,$f
ilter_slot,1)
end select
end if
end on
on release
if ($EVENT_NOTE >= $START_FX_NOTE and $EVENT_NOTE <= $START_FX_NOTE+12)
%pressed_id[$EVENT_NOTE - $START_FX_NOTE] := 0
if ($snap_to_default = 1)
$a := 0
$max := 0
while($a < 13)
if (%pressed_id[$a] > $max)
$max := %pressed_id[$a]
$preset_knob := $a
end if
inc($a)
end while
if ($max = 0)
$preset_knob := 0
end if
set_text($preset_label,!preset_name[$preset_knob] )
$sat_knob := %preset_arr[($preset_knob * $NUM_PRESET) +
0]
$morph_knob := %preset_arr[($preset_knob * $NUM_PRESET)
+ 1]
$convolution_knob := %preset_arr[($preset_knob * $NUM_PR
ESET) + 2]
$cutoff_knob := %preset_arr[($preset_knob * $NUM_PRESET)
+ 3]
$reso_knob := %preset_arr[($preset_knob * $NUM_PRESET) +
4]
$reverb_knob := %preset_arr[($preset_knob * $NUM_PRESET)
+ 5]
$delay_knob := %preset_arr[($preset_knob * $NUM_PRESET)
+ 6]
$volume_knob := %preset_arr[($preset_knob * $NUM_PRESET)
+ 7]
{ Saturation}
_set_engine_par ($ENGINE_PAR_SHAPE,$sat_knob,-1,$sat_slo
t,1)
{Sound }
$index_1 := $morph_knob/10
$index_2 := $morph_knob/10 +1
$knob := $morph_knob*10
if ($index_2 > 10)
$index_2 := 10
end if
$a := 0
while($a < 9)
$helper := ((%savearr[($index_2*9) + $a] - %save
arr[($index_1*9) + $a]) * ($knob mod 100))/100 + %savearr[($index_1*9) + $a]
_set_engine_par(%engine_par[$a],$helper,-1,$eq_s
lot,1)
inc($a)
end while
{Convolution }
select ($convolution_knob)
case 0
_set_engine_par ($ENGINE_PAR_SEND_EFFECT
_DRY_LEVEL,396851,-1,$convolution_slot,1)
_set_engine_par ($ENGINE_PAR_SEND_EFFECT
_OUTPUT_GAIN,0,-1,$convolution_slot,1)
case 1 to 4999
_set_engine_par($ENGINE_PAR_SEND_EFFECT_
DRY_LEVEL,(($convolution_knob - 1) * (314926 - 396851) / (4998)) + 396851,-1,$co
nvolution_slot,1)
_set_engine_par($ENGINE_PAR_SEND_EFFECT_
OUTPUT_GAIN,(($convolution_knob - 1) * (314926) / (4998)),-1,$convolution_slot,1
)
case 5000
_set_engine_par ($ENGINE_PAR_SEND_EFFECT
_DRY_LEVEL,314926,-1,$convolution_slot,1)
_set_engine_par ($ENGINE_PAR_SEND_EFFECT
_OUTPUT_GAIN,314926,-1,$convolution_slot,1)
case 5001 to 9999
_set_engine_par ($ENGINE_PAR_SEND_EFFECT
_DRY_LEVEL,(($convolution_knob - 5001) * (-314926) / (4998)) + 314926,-1,$convol
ution_slot,1)
_set_engine_par ($ENGINE_PAR_SEND_EFFECT
_OUTPUT_GAIN,(($convolution_knob - 5001) * (396851 - 314926) / (4998)) + 314926,
-1,$convolution_slot,1)
case 10000
_set_engine_par ($ENGINE_PAR_SEND_EFFECT
_DRY_LEVEL,0,-1,$convolution_slot,1)
_set_engine_par ($ENGINE_PAR_SEND_EFFECT
_OUTPUT_GAIN,396851,-1,$convolution_slot,1)
end select
{Reso }
_set_engine_par ($ENGINE_PAR_RESONANCE,$reso_knob,-1,$fi
lter_slot,1)
_set_engine_par ($ENGINE_PAR_RESONANCE,$reso_knob,-1,$fi
lter_slot+1,1)
{Reverb + Delay}
_set_engine_par ($ENGINE_PAR_SENDLEVEL_0,$reverb_knob,-1
,7,1)
_set_engine_par ($ENGINE_PAR_SENDLEVEL_1,$delay_knob,-1,
7,1)
{Gainer }
_set_engine_par ($ENGINE_PAR_GN_GAIN,$volume_knob,-1,6,1
)
{Cutoff }
select ($cutoff_knob)
case 0 to 1000000
_set_engine_par($ENGINE_PAR_CUTOFF,$cuto
ff_knob,-1,$filter_slot,1)
_set_engine_par($ENGINE_PAR_CUTOFF,0,-1,
$filter_slot+1,1)
case 1000001
_set_engine_par($ENGINE_PAR_CUTOFF,10000
00,-1,$filter_slot,1)
_set_engine_par($ENGINE_PAR_CUTOFF,0,-1,
$filter_slot+1,1)
case 1000002 to 2000002
_set_engine_par($ENGINE_PAR_CUTOFF,$cuto
ff_knob-1000002,-1,$filter_slot+1,1)
_set_engine_par($ENGINE_PAR_CUTOFF,10000
00,-1,$filter_slot,1)
end select
end if
end if
end on
on ui_control ($morph_knob)
%preset_arr[($preset_knob * $NUM_PRESET) + 1] := $morph_knob
$index_1 := $morph_knob/10
$index_2 := $morph_knob/10 +1
$knob := $morph_knob*10
if ($index_2 > 10)
$index_2 := 10
end if
set_control_par_str(get_ui_id($morph_knob),$CONTROL_PAR_LABEL,$morph_kno
b & " %")
$a := 0
while($a < 9)
$helper := ((%savearr[($index_2*9) + $a] - %savearr[($index_1*9)
+ $a]) * ($knob mod 100))/100 + %savearr[($index_1*9) + $a]
_set_engine_par(%engine_par[$a],$helper,-1,$eq_slot,1)
inc($a)
end while
end on
on ui_control ($ir_menu)
if ($ir_menu = -1)
_set_engine_par($ENGINE_PAR_SEND_EFFECT_BYPASS,1,-1,$convolution
_slot,1)
else
_set_engine_par($ENGINE_PAR_SEND_EFFECT_BYPASS,0,-1,$convolution
_slot,1)
_load_ir_sample(_get_folder($GET_FOLDER_LIBRARY_DIR)...
& "Urban Beats/Z - Samples/IR Samples/" & !ir_filenames[$ir_menu
] & ".wav",$convolution_slot,1)
end if
end on
on ui_control ($reverb_knob)
%preset_arr[($preset_knob * $NUM_PRESET) + 5] := $reverb_knob
_set_engine_par ($ENGINE_PAR_SENDLEVEL_0,$reverb_knob,-1,7,1)
set_control_par_str(get_ui_id($reverb_knob),$CONTROL_PAR_LABEL,get_engin
e_par_disp($ENGINE_PAR_SENDLEVEL_0,-1,7,1) & " dB")
end on
on ui_control ($delay_knob)
%preset_arr[($preset_knob * $NUM_PRESET) + 6] := $delay_knob
_set_engine_par ($ENGINE_PAR_SENDLEVEL_1,$delay_knob,-1,7,1)
set_control_par_str(get_ui_id($delay_knob),$CONTROL_PAR_LABEL,get_engine
_par_disp($ENGINE_PAR_SENDLEVEL_1,-1,7,1) & " dB")
end on
on ui_control ($volume_knob)
%preset_arr[($preset_knob * $NUM_PRESET) + 7] := $volume_knob
_set_engine_par ($ENGINE_PAR_GN_GAIN,$volume_knob,-1,6,1)
set_control_par_str(get_ui_id($volume_knob),$CONTROL_PAR_LABEL,get_engin
e_par_disp($ENGINE_PAR_GN_GAIN,-1,6,1) & " dB")
end on
on ui_control ($cutoff_knob)
%preset_arr[($preset_knob * $NUM_PRESET) + 3] := $cutoff_knob
select ($cutoff_knob)
case 0 to 1000000
_set_engine_par($ENGINE_PAR_CUTOFF,$cutoff_knob,-1,$filt
er_slot,1)
_set_engine_par($ENGINE_PAR_CUTOFF,0,-1,$filter_slot+1,1
)
case 1000001
_set_engine_par($ENGINE_PAR_CUTOFF,1000000,-1,$filter_sl
ot,1)
_set_engine_par($ENGINE_PAR_CUTOFF,0,-1,$filter_slot+1,1
)
case 1000002 to 2000002
_set_engine_par($ENGINE_PAR_CUTOFF,$cutoff_knob-1000002,
-1,$filter_slot+1,1)
_set_engine_par($ENGINE_PAR_CUTOFF,1000000,-1,$filter_sl
ot,1)
end select
set_control_par_str(get_ui_id($cutoff_knob),$CONTROL_PAR_LABEL,$cutoff_k
nob/20000 & " %")
end on
on ui_control ($reso_knob)
%preset_arr[($preset_knob * $NUM_PRESET) + 4] := $reso_knob
_set_engine_par ($ENGINE_PAR_RESONANCE,$reso_knob,-1,$filter_slot,1)
_set_engine_par ($ENGINE_PAR_RESONANCE,$reso_knob,-1,$filter_slot+1,1)
set_control_par_str(get_ui_id($reso_knob),$CONTROL_PAR_LABEL,get_engine_
par_disp($ENGINE_PAR_RESONANCE,-1,$filter_slot,1) & " %")
end on
on ui_control ($sat_knob)
%preset_arr[($preset_knob * $NUM_PRESET) + 0] := $sat_knob
_set_engine_par ($ENGINE_PAR_SHAPE,$sat_knob,-1,$sat_slot,1)
set_control_par_str(get_ui_id($sat_knob),$CONTROL_PAR_LABEL,get_engine_p
ar_disp($ENGINE_PAR_SHAPE,-1,$sat_slot,1) & " %")
end on
on ui_control ($convolution_knob)
%preset_arr[($preset_knob * $NUM_PRESET) + 2] := $convolution_knob
select ($convolution_knob)
case 0
_set_engine_par ($ENGINE_PAR_SEND_EFFECT_DRY_LEVEL,39685
1,-1,$convolution_slot,1)
_set_engine_par ($ENGINE_PAR_SEND_EFFECT_OUTPUT_GAIN,0,-
1,$convolution_slot,1)
case 1 to 4999
_set_engine_par($ENGINE_PAR_SEND_EFFECT_DRY_LEVEL,(($con
volution_knob - 1) * (314926 - 396851) / (4998)) + 396851,-1,$convolution_slot,1
)
_set_engine_par($ENGINE_PAR_SEND_EFFECT_OUTPUT_GAIN,(($c
onvolution_knob - 1) * (314926) / (4998)),-1,$convolution_slot,1)
case 5000
_set_engine_par ($ENGINE_PAR_SEND_EFFECT_DRY_LEVEL,31492
6,-1,$convolution_slot,1)
_set_engine_par ($ENGINE_PAR_SEND_EFFECT_OUTPUT_GAIN,314
926,-1,$convolution_slot,1)
case 5001 to 9999
_set_engine_par ($ENGINE_PAR_SEND_EFFECT_DRY_LEVEL,(($co
nvolution_knob - 5001) * (-314926) / (4998)) + 314926,-1,$convolution_slot,1)
_set_engine_par ($ENGINE_PAR_SEND_EFFECT_OUTPUT_GAIN,(($
convolution_knob - 5001) * (396851 - 314926) / (4998)) + 314926,-1,$convolution_
slot,1)
case 10000
_set_engine_par ($ENGINE_PAR_SEND_EFFECT_DRY_LEVEL,0,-1,
$convolution_slot,1)
_set_engine_par ($ENGINE_PAR_SEND_EFFECT_OUTPUT_GAIN,396
851,-1,$convolution_slot,1)
end select
set_control_par_str(get_ui_id($convolution_knob),$CONTROL_PAR_LABEL,$con
volution_knob/100 & " %")
end on
on ui_control ($preset_knob)
set_text($preset_label,!preset_name[$preset_knob] )
set_control_par_str(get_ui_id($preset_knob),$CONTROL_PAR_LABEL,!preset_n
ame[$preset_knob])
$sat_knob := %preset_arr[($preset_knob * $NUM_PRESET) + 0]
$morph_knob := %preset_arr[($preset_knob * $NUM_PRESET) + 1]
$convolution_knob := %preset_arr[($preset_knob * $NUM_PRESET) + 2]
$cutoff_knob := %preset_arr[($preset_knob * $NUM_PRESET) + 3]
$reso_knob := %preset_arr[($preset_knob * $NUM_PRESET) + 4]
$reverb_knob := %preset_arr[($preset_knob * $NUM_PRESET) + 5]
$delay_knob := %preset_arr[($preset_knob * $NUM_PRESET) + 6]
$volume_knob := %preset_arr[($preset_knob * $NUM_PRESET) + 7]
{ Saturation}
_set_engine_par ($ENGINE_PAR_SHAPE,$sat_knob,-1,$sat_slot,1)
{Sound }
$index_1 := $morph_knob/10
$index_2 := $morph_knob/10 +1
$knob := $morph_knob*10
if ($index_2 > 10)
$index_2 := 10
end if
$a := 0
while($a < 9)
$helper := ((%savearr[($index_2*9) + $a] - %savearr[($index_1*9)
+ $a]) * ($knob mod 100))/100 + %savearr[($index_1*9) + $a]
_set_engine_par(%engine_par[$a],$helper,-1,$eq_slot,1)
inc($a)
end while
{Convolution }
select ($convolution_knob)
case 0
_set_engine_par ($ENGINE_PAR_SEND_EFFECT_DRY_LEVEL,39685
1,-1,$convolution_slot,1)
_set_engine_par ($ENGINE_PAR_SEND_EFFECT_OUTPUT_GAIN,0,-
1,$convolution_slot,1)
case 1 to 4999
_set_engine_par($ENGINE_PAR_SEND_EFFECT_DRY_LEVEL,(($con
volution_knob - 1) * (314926 - 396851) / (4998)) + 396851,-1,$convolution_slot,1
)
_set_engine_par($ENGINE_PAR_SEND_EFFECT_OUTPUT_GAIN,(($c
onvolution_knob - 1) * (314926) / (4998)),-1,$convolution_slot,1)
case 5000
_set_engine_par ($ENGINE_PAR_SEND_EFFECT_DRY_LEVEL,31492
6,-1,$convolution_slot,1)
_set_engine_par ($ENGINE_PAR_SEND_EFFECT_OUTPUT_GAIN,314
926,-1,$convolution_slot,1)
case 5001 to 9999
_set_engine_par ($ENGINE_PAR_SEND_EFFECT_DRY_LEVEL,(($co
nvolution_knob - 5001) * (-314926) / (4998)) + 314926,-1,$convolution_slot,1)
_set_engine_par ($ENGINE_PAR_SEND_EFFECT_OUTPUT_GAIN,(($
convolution_knob - 5001) * (396851 - 314926) / (4998)) + 314926,-1,$convolution_
slot,1)
case 10000
_set_engine_par ($ENGINE_PAR_SEND_EFFECT_DRY_LEVEL,0,-1,
$convolution_slot,1)
_set_engine_par ($ENGINE_PAR_SEND_EFFECT_OUTPUT_GAIN,396
851,-1,$convolution_slot,1)
end select
{Reso }
_set_engine_par ($ENGINE_PAR_RESONANCE,$reso_knob,-1,$filter_slot,1)
_set_engine_par ($ENGINE_PAR_RESONANCE,$reso_knob,-1,$filter_slot+1,1)
{Reverb + Delay}
_set_engine_par ($ENGINE_PAR_SENDLEVEL_0,$reverb_knob,-1,7,1)
_set_engine_par ($ENGINE_PAR_SENDLEVEL_1,$delay_knob,-1,7,1)
{Gainer }
_set_engine_par ($ENGINE_PAR_GN_GAIN,$volume_knob,-1,6,1)
{Cutoff }
select ($cutoff_knob)
case 0 to 1000000
_set_engine_par($ENGINE_PAR_CUTOFF,$cutoff_knob,-1,$filt
er_slot,1)
_set_engine_par($ENGINE_PAR_CUTOFF,0,-1,$filter_slot+1,1
)
case 1000001
_set_engine_par($ENGINE_PAR_CUTOFF,1000000,-1,$filter_sl
ot,1)
_set_engine_par($ENGINE_PAR_CUTOFF,0,-1,$filter_slot+1,1
)
case 1000002 to 2000002
_set_engine_par($ENGINE_PAR_CUTOFF,$cutoff_knob-1000002,
-1,$filter_slot+1,1)
_set_engine_par($ENGINE_PAR_CUTOFF,1000000,-1,$filter_sl
ot,1)
end select
end on
on ui_control ($edit_preset)
if ($edit_Preset < 99)
select($edit_preset)
case 0
$a := 0
while($a < $NUM_PRESET)
%helper_arr[$a] := %preset_arr[($preset_
knob*$NUM_PRESET)+$a ]
inc($a)
end while
case 1
if ($preset_knob > 0)
$a := 0
while($a < $NUM_PRESET)
%preset_arr[($preset_knob*$NUM_P
RESET)+$a ] := %helper_arr[$a]
inc($a)
end while
end if
case 2
$a := 0
while($a < $NUM_PRESET)
%preset_arr[($preset_knob*$NUM_PRESET)+$
a ] := %default_arr[$a]
inc($a)
end while
case 3
$a := $NUM_PRESET
while($a < $NUM_PRESET*12)
%preset_arr[$a] := %preset_arr[($preset_
knob*$NUM_PRESET)+($a mod $NUM_PRESET)]
inc($a)
end while
end select
end if
$edit_preset := 100
$sat_knob := %preset_arr[($preset_knob * $NUM_PRESET) + 0]
$morph_knob := %preset_arr[($preset_knob * $NUM_PRESET) + 1]
$convolution_knob := %preset_arr[($preset_knob * $NUM_PRESET) + 2]
$cutoff_knob := %preset_arr[($preset_knob * $NUM_PRESET) + 3]
$reso_knob := %preset_arr[($preset_knob * $NUM_PRESET) + 4]
$reverb_knob := %preset_arr[($preset_knob * $NUM_PRESET) + 5]
$delay_knob := %preset_arr[($preset_knob * $NUM_PRESET) + 6]
$volume_knob := %preset_arr[($preset_knob * $NUM_PRESET) + 7]
{ Saturation}
_set_engine_par ($ENGINE_PAR_SHAPE,$sat_knob,-1,$sat_slot,1)
{Sound }
$index_1 := $morph_knob/10
$index_2 := $morph_knob/10 +1
$knob := $morph_knob*10
if ($index_2 > 10)
$index_2 := 10
end if
$a := 0
while($a < 9)
$helper := ((%savearr[($index_2*9) + $a] - %savearr[($index_1*9)
+ $a]) * ($knob mod 100))/100 + %savearr[($index_1*9) + $a]
_set_engine_par(%engine_par[$a],$helper,-1,$eq_slot,1)
inc($a)
end while
{Convolution }
select ($convolution_knob)
case 0
_set_engine_par ($ENGINE_PAR_SEND_EFFECT_DRY_LEVEL,39685
1,-1,$convolution_slot,1)
_set_engine_par ($ENGINE_PAR_SEND_EFFECT_OUTPUT_GAIN,0,-
1,$convolution_slot,1)
case 1 to 4999
_set_engine_par($ENGINE_PAR_SEND_EFFECT_DRY_LEVEL,(($con
volution_knob - 1) * (314926 - 396851) / (4998)) + 396851,-1,$convolution_slot,1
)
_set_engine_par($ENGINE_PAR_SEND_EFFECT_OUTPUT_GAIN,(($c
onvolution_knob - 1) * (314926) / (4998)),-1,$convolution_slot,1)
case 5000
_set_engine_par ($ENGINE_PAR_SEND_EFFECT_DRY_LEVEL,31492
6,-1,$convolution_slot,1)
_set_engine_par ($ENGINE_PAR_SEND_EFFECT_OUTPUT_GAIN,314
926,-1,$convolution_slot,1)
case 5001 to 9999
_set_engine_par ($ENGINE_PAR_SEND_EFFECT_DRY_LEVEL,(($co
nvolution_knob - 5001) * (-314926) / (4998)) + 314926,-1,$convolution_slot,1)
_set_engine_par ($ENGINE_PAR_SEND_EFFECT_OUTPUT_GAIN,(($
convolution_knob - 5001) * (396851 - 314926) / (4998)) + 314926,-1,$convolution_
slot,1)
case 10000
_set_engine_par ($ENGINE_PAR_SEND_EFFECT_DRY_LEVEL,0,-1,
$convolution_slot,1)
_set_engine_par ($ENGINE_PAR_SEND_EFFECT_OUTPUT_GAIN,396
851,-1,$convolution_slot,1)
end select
{Reso }
_set_engine_par ($ENGINE_PAR_RESONANCE,$reso_knob,-1,$filter_slot,1)
_set_engine_par ($ENGINE_PAR_RESONANCE,$reso_knob,-1,$filter_slot+1,1)
{Reverb + Delay}
_set_engine_par ($ENGINE_PAR_SENDLEVEL_0,$reverb_knob,-1,7,1)
_set_engine_par ($ENGINE_PAR_SENDLEVEL_1,$delay_knob,-1,7,1)
{Gainer }
_set_engine_par ($ENGINE_PAR_GN_GAIN,$volume_knob,-1,6,1)
{Cutoff }
select ($cutoff_knob)
case 0 to 1000000
_set_engine_par($ENGINE_PAR_CUTOFF,$cutoff_knob,-1,$filt
er_slot,1)
_set_engine_par($ENGINE_PAR_CUTOFF,0,-1,$filter_slot+1,1
)
case 1000001
_set_engine_par($ENGINE_PAR_CUTOFF,1000000,-1,$filter_sl
ot,1)
_set_engine_par($ENGINE_PAR_CUTOFF,0,-1,$filter_slot+1,1
)
case 1000002 to 2000002
_set_engine_par($ENGINE_PAR_CUTOFF,$cutoff_knob-1000002,
-1,$filter_slot+1,1)
_set_engine_par($ENGINE_PAR_CUTOFF,1000000,-1,$filter_sl
ot,1)
end select
end on
on ui_control ($snap_to_default)
if ($snap_to_default = 1)
set_control_par(%ui_id[11], $CONTROL_PAR_FONT_TYPE, $FONT_ID_3)
else
set_control_par(%ui_id[11], $CONTROL_PAR_FONT_TYPE, $FONT_ID_2)
end if
end on

You might also like