{*********************************************** 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 & dropdowns} 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 highpass 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 this 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,"Sat") 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_urban_knob_blue") set_control_par(%ui_id[$count], $CONTROL_PAR_MOUSE_BEHAVIOUR, -500) inc($count) end while set_control_par_str(%ui_id[0], $CONTROL_PAR_PICTURE, "pv_urban_knob_orange") set_control_par_str(%ui_id[7], $CONTROL_PAR_PICTURE, "pv_urban_knob_light_blue") set_control_par_str(%ui_id[8], $CONTROL_PAR_PICTURE, "pv_urban_knob_light_blue") $count := 9 while ($count < 11) set_control_par_str(%ui_id[$count], $CONTROL_PAR_PICTURE, "pv_urban_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_onoff") {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, 396851) set_control_par(get_ui_id($cutoff_knob), $CONTROL_PAR_DEFAULT_VALUE, 1000001) 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,"",-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,500000,... {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,151367,... {4 } 86103, 0, 0, 103348, 0, 0, 704024,125000,785156,... {5 } 39056, 0, 0, 706010, 0,772461, 856035, 0,607422,... {6 } 0,586914,515625, 886099, 0, 9766, 630694, 0,713867,... {7 } 376953, 0, 39062, 555664, 0,578125, 796875, 144531,623047,... {8 } 11687,660156, 0, 715072, 6836,532500, 845717, 0,728516,... {9 } 0,915039,0, 533783, 0,655273, 633775, 639648,601563,... {10 } 136266,357422,500000, 489733,250000,500000, 830288, 417969,500000) 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,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,$convolution_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,$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,396851,-1,$convolution_slot,1) end select {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,$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,$cutoff_knob-1000002,-1,$filter_slot+1,1) _set_engine_par($ENGINE_PAR_CUTOFF,1000000,-1,$filter_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) set_control_par_str(get_ui_id($preset_knob),$CONTROL_PAR_LABEL,!preset_name[$preset_knob]) set_control_par_str(get_ui_id($volume_knob),$CONTROL_PAR_LABEL,get_engine_par_disp($ENGINE_PAR_GN_GAIN,-1,6,1) & " dB") set_control_par_str(get_ui_id($sat_knob),$CONTROL_PAR_LABEL,get_engine_par_disp($ENGINE_PAR_SHAPE,-1,$sat_slot,1) & " %") set_control_par_str(get_ui_id($morph_knob),$CONTROL_PAR_LABEL,$morph_knob & " %") set_control_par_str(get_ui_id($convolution_knob),$CONTROL_PAR_LABEL,$convolution_knob/100 & " %") set_control_par_str(get_ui_id($cutoff_knob),$CONTROL_PAR_LABEL,$cutoff_knob/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_engine_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 effect. You can change the delay settings on the Reverb/Delay page.") set_control_help ($reverb_knob,"Reverb: The wet amount of the reverb send 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 convolution effect used as the reverb send effect. The impulse sample is not changed when recalling other presets.") set_control_help ($convolution_knob,"Dry/Wet: Controls the dry/wet amount of the convolution effect.") set_control_help ($sat_knob,"Saturation: Sets the saturation amount.") set_control_help ($reso_knob,"Master Filter Resonance: Sets the resonance 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 frequency of the low pass filter, moving it to the right sets the cutoff frequency of the high pass filter.") set_control_help ($preset_knob,"Preset: Choose among twelve presets + one default preset. Each change made to any control of the master FX chain is immediately 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 pasting presets.") set_control_help ($snap_to_default,"Snap to Default: When enabled, releasing 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 end 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_ID,80) set_control_par(get_ui_id($convolution_knob),$CONTROL_PAR_AUTOMATION_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_ID,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[($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,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,$convolution_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,$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,396851,-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,$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,$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,$cutoff_knob-1000002,-1,$filter_slot+1,1) _set_engine_par($ENGINE_PAR_CUTOFF,1000000,-1,$filter_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_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,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,$convolution_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,$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,396851,-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,$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,$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,$cutoff_knob-1000002,-1,$filter_slot+1,1) _set_engine_par($ENGINE_PAR_CUTOFF,1000000,-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_knob & " %") $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_engine_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_engine_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,$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,$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,$cutoff_knob-1000002,-1,$filter_slot+1,1) _set_engine_par($ENGINE_PAR_CUTOFF,1000000,-1,$filter_slot,1) end select set_control_par_str(get_ui_id($cutoff_knob),$CONTROL_PAR_LABEL,$cutoff_knob/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_par_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,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,$convolution_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,$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,396851,-1,$convolution_slot,1) end select set_control_par_str(get_ui_id($convolution_knob),$CONTROL_PAR_LABEL,$convolution_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_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[($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,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,$convolution_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,$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,396851,-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,$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,$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,$cutoff_knob-1000002,-1,$filter_slot+1,1) _set_engine_par($ENGINE_PAR_CUTOFF,1000000,-1,$filter_slot,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_PRESET)+$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,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,$convolution_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,$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,396851,-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,$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,$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,$cutoff_knob-1000002,-1,$filter_slot+1,1) _set_engine_par($ENGINE_PAR_CUTOFF,1000000,-1,$filter_slot,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