{*********************************************** Kontakt 4 Factory Library - Instrument Choir Collection Author: Native Instruments Written by: Nicki Marinic, Dinos Vallianatos Modified: August 9th, 2009 *************************************************} on init make_perfview set_script_title("Instrument") _set_skin_offset(1233) set_ui_height_px(318) message("") declare $count declare $grp_1_idx $grp_1_idx := 0 declare const $slot_idx := 2 {AET Filter Slot} declare $cc_slot_idx $cc_slot_idx := find_mod($grp_1_idx,"CC_MORPH") {CC to AET} declare $aftertouch_slot_idx $aftertouch_slot_idx := find_mod($grp_1_idx,"MAT_MORPH") {AT to AET} declare $reverb_slot := 6 declare $eq_slot := 4 declare $played_note_id declare $last_time_1 declare $last_time_2 declare $last_time_3 declare $wait_time := 800 {Enter control label wait time} declare const $ROOT_X := 66 declare const $ROOT_Y := 2 declare const $GRID_X := 92 declare const $GRID_Y := 21 declare const $FONT_ID := 8 {the font id for all visible labels} declare const $FONT_ID_2 := 10 {the font id for buttons and dropdowns} declare const $CREATE_AUTOMATION_ID := 0 {*** CONTROL GROUP "INSTCONTROLS"} {POSITIONING OF CONTROL GROUP} declare $x_grid_instcontrols := 1 {X Position of Control Group in grid} declare $y_grid_instcontrols := 2 {Y Position of Control Group in grid} declare $x_px_instcontrols := 0 {X Position Offset Control Group in pixel} declare $y_px_instcontrols := 0 {Y Position Offset Control Group in pixel} {DECLARATION AND UI_IDs} declare const $NUM_INSTCONTROL := 8 {number of controls in this control group} declare ui_slider $sound_knob (0,100) declare ui_slider $chord_knob (0,9) declare ui_slider $key_knob(0,11) declare ui_slider $scale_knob (0,22) declare ui_label $label_1_instcontrol (1,1) declare ui_label $label_2_instcontrol (1,1) declare ui_label $label_3_instcontrol (1,1) declare ui_label $label_4_instcontrol (1,1) declare %instcontrol_id[$NUM_INSTCONTROL] %instcontrol_id[0] := get_ui_id($sound_knob) %instcontrol_id[1] := get_ui_id($chord_knob) %instcontrol_id[2] := get_ui_id($key_knob) %instcontrol_id[3] := get_ui_id($scale_knob) %instcontrol_id[4] := get_ui_id($label_1_instcontrol) %instcontrol_id[5] := get_ui_id($label_2_instcontrol) %instcontrol_id[6] := get_ui_id($label_3_instcontrol) %instcontrol_id[7] := get_ui_id($label_4_instcontrol) {POSITIONING OF INDIVIDUAL CONTROLS} move_control_px($sound_knob, ($GRID_X * 1) + 88, ($GRID_Y * 2) + 9) move_control_px($chord_knob, ($GRID_X * 2) + 87, ($GRID_Y * 2) + 9) {possible to offset control in pixels} move_control_px($key_knob, ($GRID_X * 3) + 86, ($GRID_Y * 2) + 9) move_control_px($scale_knob, ($GRID_X * 4) + 85, ($GRID_Y * 2) + 9) {position the labels above the sliders} $count := 4 while ($count < 8) set_control_par (%instcontrol_id[$count],$CONTROL_PAR_POS_X,... get_control_par(%instcontrol_id[$count-4],$CONTROL_PAR_POS_X)-16) set_control_par (%instcontrol_id[$count],$CONTROL_PAR_POS_Y,... get_control_par(%instcontrol_id[$count-4],$CONTROL_PAR_POS_Y) + 57) set_control_par(%instcontrol_id[$count],$CONTROL_PAR_HIDE,$HIDE_PART_BG) set_control_par(%instcontrol_id[$count], $CONTROL_PAR_TEXT_ALIGNMENT, 1) set_control_par(%instcontrol_id[$count], $CONTROL_PAR_FONT_TYPE, $FONT_ID) inc($count) end while {VARIOUS ATTRIBUTES} $count := 0 while ($count < 4) set_control_par_str(%instcontrol_id[$count], $CONTROL_PAR_PICTURE, "pv_choir_knob_big") set_control_par(%instcontrol_id[$count], $CONTROL_PAR_MOUSE_BEHAVIOUR, -500) inc($count) end while declare const $REAL_TONAL := 0 declare const $MAPPING_STYLE := 2 {If note is not in scale (Tonal Mode): $MAPPING_STYLE = 0 -> Play only original Note $MAPPING_STYLE = 1 -> Play nothing $MAPPING_STYLE = 2 -> Play next higher chord $MAPPING_STYLE = 3 -> Play next lower chord $MAPPING_STYLE = 4 -> like 2, but original note is always played and not constrained to scale} declare !note_names[12] !note_names[0] := "C" !note_names[1] := "Db" !note_names[2] := "D" !note_names[3] := "Eb" !note_names[4] := "E" !note_names[5] := "F" !note_names[6] := "Gb" !note_names[7] := "G" !note_names[8] := "Ab" !note_names[9] := "A" !note_names[10] := "Bb" !note_names[11] := "B" declare !scale_names[24] !scale_names[0] := "Off" !scale_names[1] := "Major" !scale_names[2] := "Minor" !scale_names[3] := "Harmonic Minor" !scale_names[4] := "Melodic Minor" !scale_names[5] := "Dorian" !scale_names[6] := "Phrygian" !scale_names[7] := "Lydian" !scale_names[8] := "Mixolydian" !scale_names[9] := "Locrian" !scale_names[10] := "Whole-Tone" !scale_names[11] := "Diminished" !scale_names[12] := "Octatonic" !scale_names[13] := "Pentatonic Major" !scale_names[14] := "Pentatonic Minor" !scale_names[15] := "Blues" !scale_names[16] := "Messiaen III" !scale_names[17] := "Messiaen IV" !scale_names[18] := "Messiaen V" !scale_names[19] := "Messiaen VI" !scale_names[20] := "Messiaen VII" !scale_names[21] := "Lydian b7" !scale_names[22] := "Locrian #9" !scale_names[23] := "Major-Minor" {0 = in scale, 1 = not in scale (based on C)} declare %scale_types[24*12] := (... 0,0,0,0,0,0,0,0,0,0,0,0, {Chromatic }... 0,1,0,1,0,0,1,0,1,0,1,0, {Major }... 0,1,0,0,1,0,1,0,0,1,0,1, {Natural Minor}... 0,1,0,0,1,0,1,0,0,1,1,0, {Harmonic Minor}... 0,1,0,0,1,0,1,0,1,0,1,0, {Melodic Minor}... 0,1,0,0,1,0,1,0,1,0,0,1, {Dorian }... 0,0,1,0,1,0,1,0,0,1,0,1, {Phrygian }... 0,1,0,1,0,1,0,0,1,0,1,0, {Lydian }... 0,1,0,1,0,0,1,0,1,0,0,1, {Mixolydian }... 0,0,1,0,1,0,0,1,0,1,0,1, {Locrian }... 0,1,0,1,0,1,0,1,0,1,0,1, {Whole-Tone }... 0,0,1,0,0,1,0,0,1,0,0,1, {Diminished }... 0,1,0,0,1,0,0,1,0,0,1,0, {Octatonic }... 0,1,0,1,0,1,1,0,1,0,1,1, {Pentatonic Maj}... 0,1,1,0,1,0,1,0,1,1,0,1, {Pentatonic Min}... 0,1,1,0,1,0,0,0,1,1,0,1, {Pentatonic Blues}... 0,1,0,0,0,1,0,0,0,1,0,0, {Messiaen III}... 0,0,0,1,1,0,0,0,0,1,1,0, {Messiaen IV}... 0,0,1,1,1,0,0,0,1,1,1,0, {Messiaen V}... 0,1,0,1,0,0,0,1,0,1,0,0, {Messiaen VI}... 0,0,0,0,1,0,0,0,0,0,1,0, {Messiaen VII}... 0,1,0,1,0,1,0,0,1,0,0,1, {Lydian b7}... 0,1,0,0,1,0,0,1,0,1,0,1, {Locrian #9}... 0,1,0,1,0,0,1,0,0,1,0,1) {Major-Minor} declare !harmo_names[10] !harmo_names[0] := "Off" !harmo_names[1] := "Octave" !harmo_names[2] := "Third" !harmo_names[3] := "Fifth" !harmo_names[4] := "1-3-5" !harmo_names[5] := "1-3-6" !harmo_names[6] := "1-4-6" !harmo_names[7] := "1-4-5" !harmo_names[8] := "1-4-7" !harmo_names[9] := "1-5-8" set_text ($label_1_instcontrol,"Sound") set_text ($label_2_instcontrol,"Chord") set_text ($label_3_instcontrol,"Key") set_text ($label_4_instcontrol,"Scale") make_persistent ($sound_knob) set_control_help ($sound_knob,"Sound: Morphs through various EQ settings.") make_persistent ($chord_knob) set_control_help($chord_knob,"Chord: Enables the chord function of the built-in harmonizer. You can deactivate it by turning it all the way to the left, or you can select the desired chord using any of the other options. The exact notes that are going to be triggered are relying upon the Key and Scale settings.") make_persistent ($key_knob) set_control_help($key_knob,"Key: Chooses the root key of the scale set with ") make_persistent ($scale_knob) set_control_help ($scale_knob,"Scale: Chooses a scale or mode. All incoming notes will be automatically transposed to the next higher note that is a part of the selected scale. Turn the Scale knob to Off for a chromatic scale (no effect). The scale constraint functionality also affects the notes of the chords produced using the Chord knob.") set_control_par_str(get_ui_id($sound_knob),$CONTROL_PAR_AUTOMATION_NAME,"Sound") set_control_par_str(get_ui_id($chord_knob),$CONTROL_PAR_AUTOMATION_NAME,"Chord") set_control_par_str(get_ui_id($key_knob),$CONTROL_PAR_AUTOMATION_NAME,"Key") set_control_par_str(get_ui_id($scale_knob),$CONTROL_PAR_AUTOMATION_NAME,"Scale") read_persistent_var($sound_knob) read_persistent_var($chord_knob) read_persistent_var($key_knob) read_persistent_var($scale_knob) set_control_par_str(get_ui_id($sound_knob),$CONTROL_PAR_LABEL,$sound_knob & " %") set_control_par_str(get_ui_id($chord_knob),$CONTROL_PAR_LABEL,!harmo_names[$chord_knob]) set_control_par_str(get_ui_id($key_knob),$CONTROL_PAR_LABEL,!Note_names[$key_knob]) set_control_par_str(get_ui_id($scale_knob),$CONTROL_PAR_LABEL,!Scale_names[$scale_knob]) declare %tonal_chord_types[10*4] := (0,0,0,0, 8,0,0,0, 3,0,0,0, 5,0,0,0, 3,5,0,0, 3,6,0,0, 4,6,0,0, 4,5,0,0, 4,7,0,0, 5,8,0,0) declare $absolute := 0 make_persistent($absolute) declare $a declare $b declare $c declare $new_id declare %tone_note_arr[4] while($a < 4) %tone_note_arr[$a] := %tonal_chord_types[($chord_knob*4)+$a] inc($a) end while make_persistent(%tone_note_arr) declare %cur_scale[12] $a := 0 while($a < 12) %cur_scale[$a] := %scale_types[$scale_knob*12 + (($a + 12 - $key_knob) mod 12)] inc($a) end while make_persistent(%cur_scale) declare $note_helper declare $velo_helper {Other} $count := 0 while ($count < $NUM_INSTCONTROL) set_control_par (%instcontrol_id[$count],$CONTROL_PAR_POS_X,get_control_par(%instcontrol_id[$count],$CONTROL_PAR_POS_X)... +$ROOT_X + ($x_grid_instcontrols - 2)*$GRID_X + $x_px_instcontrols) set_control_par (%instcontrol_id[$count],$CONTROL_PAR_POS_Y,get_control_par(%instcontrol_id[$count],$CONTROL_PAR_POS_Y)... +$ROOT_Y + ($y_grid_instcontrols - 2)*$GRID_Y + $y_px_instcontrols) inc($count) end while declare $learn_counter declare $a_instcontrols {*** SOUND KNOB FUNCTIONALITY START} {values of freq-bandwith-gain of the various eq bands} declare %savearr_instr[10*10] := (... {0} 500000,500000,500000, 500000,500000,500000, 500000, 500000,500000,... {1} 442254, 624023,416992, 574714, 62500,500000, 1000000,1000000, 500000,... {2} 322001, 398438,444336, 529713, 61523,500000, 813582,266602, 443359,... {3} 306705,392578,500000, 471583,263672,416992, 812492, 250977,500000,... {4} 322001,392578,500000, 543888,263672,555664, 812492, 250977,417969,... {5} 227314,392578,388672, 543888,263672,555664, 812492, 250977,417969,... {6} 264492,392578,500000, 463253,263672,388672, 812492, 250977,387695,... {7} 230922,460938,388672, 463253,263672,555664, 812492, 250977,500000,... {8} 230922,460938,388672, 463253,62500,582031, 812492, 61523,555664,... {9} 230922,62500,361328, 501929,0,611328, 788233, 61523,555664,... {10} 230922,62500,361328, 460178,0,611328, 725709, 61523,611328) declare %engine_par_instr[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_eq_instr declare $a_eq_instr declare $knob_eq_instr _read_persistent_var($sound_knob) $knob_eq_instr := ($sound_knob+10)*10 declare $index_1_instr declare $index_2_instr {*** END SOUND KNOB FUNCIONALITY} {*** END CONTROL GROUP "INSTCONTROLS"} {*** CONTROL GROUP "CHOIR MORPH"} {POSITIONING OF CONTROL GROUP} declare $x_grid_articulation := 1 {X Position of Control Group in grid} declare $y_grid_articulation := 5 {Y Position of Control Group in grid} declare $x_px_articulation := 0 {X Position Offset Control Group in pixel} declare $y_px_articulation := 0 {Y Position Offset Control Group in pixel} {DECLARATION AND UI_IDs} declare const $NUM_ARTICULATION := 10 {number of controls in this control group} declare ui_slider $morph_knob (0,1000000) declare ui_slider $mod_amount_knob (0,1000000) declare ui_slider $atouch_amount_knob (0,1000000) declare ui_switch $cc_invert_button declare ui_switch $atouch_invert_button declare ui_label $morph_label (1,1) declare ui_label $mod_amount_label (1,1) declare ui_label $aftertouch_amount_label (1,1) declare ui_label $cc_button_label (1,1) declare ui_label $aftertouch_button_label (1,1) declare %articulation_id[$NUM_ARTICULATION] %articulation_id[0] := get_ui_id($morph_knob) %articulation_id[1] := get_ui_id($mod_amount_knob) %articulation_id[2] := get_ui_id($atouch_amount_knob) %articulation_id[3] := get_ui_id($cc_invert_button) %articulation_id[4] := get_ui_id($atouch_invert_button) %articulation_id[5] := get_ui_id($morph_label) %articulation_id[6] := get_ui_id($mod_amount_label) %articulation_id[7] := get_ui_id($aftertouch_amount_label) %articulation_id[8] := get_ui_id($cc_button_label) %articulation_id[9] := get_ui_id($aftertouch_button_label) {POSITIONING OF INDIVIDUAL CONTROLS} {possible to offset control in pixels} move_control_px($morph_knob, ($GRID_X * 2) + 86, ($GRID_Y * 5) + 19) move_control_px($mod_amount_knob, ($GRID_X * 1) + 1, ($GRID_Y * 5) + 1) move_control_px($atouch_amount_knob, ($GRID_X * 1) + 1, ($GRID_Y * 7) + 19) move_control_px($cc_invert_button, ($GRID_X * 2) + 3, ($GRID_Y * 5) + 1) move_control_px($atouch_invert_button,($GRID_X * 2) + 3, ($GRID_Y * 7) + 19) {position the labels above the sliders} $count := 5 while ($count < 10) set_control_par (%articulation_id[$count],$CONTROL_PAR_POS_X,... get_control_par(%articulation_id[$count-5],$CONTROL_PAR_POS_X) - 20) set_control_par (%articulation_id[$count],$CONTROL_PAR_POS_Y,... get_control_par(%articulation_id[$count-5],$CONTROL_PAR_POS_Y) + 42) set_control_par(%articulation_id[$count], $CONTROL_PAR_HIDE, $HIDE_PART_BG) set_control_par(%articulation_id[$count], $CONTROL_PAR_TEXT_ALIGNMENT, 1) set_control_par(%articulation_id[$count], $CONTROL_PAR_FONT_TYPE, $FONT_ID) inc($count) end while set_control_par (%articulation_id[5],$CONTROL_PAR_POS_X,... get_control_par(%articulation_id[0],$CONTROL_PAR_POS_X) + 35) set_control_par (%articulation_id[5],$CONTROL_PAR_POS_Y,... get_control_par(%articulation_id[0],$CONTROL_PAR_POS_Y) + 24) {KNOB, BUTTON AND LABEL STUFF} $count := 0 while ($count < 3) set_control_par_str(%articulation_id[$count], $CONTROL_PAR_PICTURE, "pv_choir_knob_small") set_control_par(%articulation_id[$count], $CONTROL_PAR_MOUSE_BEHAVIOUR, -500) inc($count) end while set_control_par_str(%articulation_id[0], $CONTROL_PAR_PICTURE, "pv_choir_knob_big") $count := 3 while ($count < 5) set_control_par_str(%articulation_id[$count], $CONTROL_PAR_PICTURE, "pv_orchestral_btn") set_control_par(%articulation_id[$count], $CONTROL_PAR_HEIGHT, 40) set_control_par(%articulation_id[$count], $CONTROL_PAR_WIDTH, 40) inc($count) end while set_text ($morph_label,"Morph") set_text ($mod_amount_label,"Mod Wheel") set_text ($aftertouch_amount_label,"Aftertouch") set_text ($cc_button_label,"Invert") set_text ($aftertouch_button_label,"Invert") set_text ($atouch_invert_button,"") set_text ($cc_invert_button,"") $morph_knob := get_engine_par ($ENGINE_PAR_EXP_FILTER_MORPH,$grp_1_idx,$slot_idx,-1) $mod_amount_knob := get_engine_par($ENGINE_PAR_MOD_TARGET_INTENSITY,$grp_1_idx,$cc_slot_idx,-1) $atouch_amount_knob := get_engine_par($ENGINE_PAR_MOD_TARGET_INTENSITY,$grp_1_idx,$aftertouch_slot_idx,-1) $atouch_invert_button := get_engine_par($MOD_TARGET_INVERT_SOURCE,$grp_1_idx,$aftertouch_slot_idx,-1) $cc_invert_button := get_engine_par($MOD_TARGET_INVERT_SOURCE,$grp_1_idx,$cc_slot_idx,-1) {Other} $count := 0 while ($count < $NUM_ARTICULATION) set_control_par (%articulation_id[$count],$CONTROL_PAR_POS_X,get_control_par(%articulation_id[$count],$CONTROL_PAR_POS_X)... +$ROOT_X + ($x_grid_articulation - 2)*$GRID_X + $x_px_articulation) set_control_par (%articulation_id[$count],$CONTROL_PAR_POS_Y,get_control_par(%articulation_id[$count],$CONTROL_PAR_POS_Y)... +$ROOT_Y + ($y_grid_articulation - 2)*$GRID_Y + $y_px_articulation) inc($count) end while set_control_par_str(get_ui_id($morph_knob),$CONTROL_PAR_AUTOMATION_NAME,"Morph") set_control_par_str(get_ui_id($mod_amount_knob),$CONTROL_PAR_AUTOMATION_NAME,"Md Amt") set_control_par_str(get_ui_id($atouch_amount_knob),$CONTROL_PAR_AUTOMATION_NAME,"Af Amt") set_control_par_str(get_ui_id($cc_invert_button),$CONTROL_PAR_AUTOMATION_NAME,"CC Inv") set_control_par_str(get_ui_id($atouch_invert_button),$CONTROL_PAR_AUTOMATION_NAME,"Af Inv") set_control_par_str(get_ui_id($morph_knob),$CONTROL_PAR_LABEL,get_engine_par_disp($ENGINE_PAR_EXP_FILTER_MORPH,$grp_1_idx,$slot_idx,-1) & " %") set_control_par_str(get_ui_id($mod_amount_knob), $CONTROL_PAR_LABEL,get_engine_par_disp($ENGINE_PAR_MOD_TARGET_INTENSITY,$grp_1_idx,$cc_slot_idx,-1) & " %") set_control_par_str(get_ui_id($atouch_amount_knob), $CONTROL_PAR_LABEL,get_engine_par_disp($ENGINE_PAR_MOD_TARGET_INTENSITY,$grp_1_idx,$aftertouch_slot_idx,-1) & " %") {*** END CONTROL GROUP "CHOIR MORPH"} {----------MASTER REVERB FX START----------} {POSITIONING OF CONTROL GROUP} declare $x_grid_reverb := 3 {X Position of Control Group in grid} declare $y_grid_reverb := 6 {Y Position of Control Group in grid} declare $x_px_reverb := 46 {X Position Offset Control Group in pixel} declare $y_px_reverb := 0 {Y Position Offset Control Group in pixel} {DECLARATION AND UI_IDs} declare const $NUM_REVERB := 15 {number of elements in this control group} declare ui_label $lb_wetdry_reverb (1,1) declare ui_label $image_reverb (1,1) declare ui_menu $category_reverb declare ui_slider $wetdry_reverb (0, 500000) declare ui_switch $on_off_reverb declare ui_label $lb_on_off_reverb (1,1) {reverb functionality} declare ui_menu $hall_reverb declare ui_menu $cathedral_reverb declare ui_menu $club_reverb declare ui_menu $room_reverb declare ui_menu $l300_reverb declare ui_menu $quadstick_reverb declare ui_menu $brt7_reverb declare ui_menu $plate_reverb declare ui_menu $cabinet_reverb declare %subcat_menu_id[9] %subcat_menu_id[0] := get_ui_id($hall_reverb) %subcat_menu_id[1] := get_ui_id($cathedral_reverb) %subcat_menu_id[2] := get_ui_id($club_reverb) %subcat_menu_id[3] := get_ui_id($room_reverb) %subcat_menu_id[4] := get_ui_id($l300_reverb) %subcat_menu_id[6] := get_ui_id($quadstick_reverb) %subcat_menu_id[7] := get_ui_id($brt7_reverb) %subcat_menu_id[5] := get_ui_id($plate_reverb) %subcat_menu_id[8] := get_ui_id($cabinet_reverb) declare %offset_reverb[9] := (0,3,6,14,21,52,34,42,62) set_control_par_str(get_ui_id($image_reverb),$CONTROL_PAR_PICTURE,"pv_global_reverb_animation_big") {Fill the menus} add_menu_item($category_reverb, "Concert Hall", 0) add_menu_item($category_reverb, "Cathedral", 1) add_menu_item($category_reverb, "Club", 2) add_menu_item($category_reverb, "Room", 3) add_menu_item($category_reverb, "L300", 4) add_menu_item($category_reverb, "Quadstick", 6) add_menu_item($category_reverb, "BRT 7", 7) add_menu_item($category_reverb, "Plate", 5) add_menu_item($category_reverb, "Cabinet", 8) declare !ir_path[68] !ir_path[0] := "presets/effects/convolution/<<>>/K4 IR Samples/Concert Hall A.wav" !ir_path[1] := "presets/effects/convolution/<<>>/K4 IR Samples/Concert Hall B.wav" !ir_path[2] := "presets/effects/convolution/<<>>/K4 IR Samples/Exhibition Hall.wav" !ir_path[3] := "presets/effects/convolution/<<>>/K4 IR Samples/Cathedral A.wav" !ir_path[4] := "presets/effects/convolution/<<>>/K4 IR Samples/Cathedral B.wav" !ir_path[5] := "presets/effects/convolution/10 Big Rooms/IR Samples/ndb_cathedral_ir_32bit.wav" !ir_path[6] := "presets/effects/convolution/<<>>/K4 IR Samples/Club A.wav" !ir_path[7] := "presets/effects/convolution/<<>>/K4 IR Samples/Club B.wav" !ir_path[8] := "presets/effects/convolution/<<>>/K4 IR Samples/Tavern Close.wav" !ir_path[9] := "presets/effects/convolution/<<>>/K4 IR Samples/Tavern Near.wav" !ir_path[10] := "presets/effects/convolution/<<>>/K4 IR Samples/Tavern Medium.wav" !ir_path[11] := "presets/effects/convolution/<<>>/K4 IR Samples/Tavern Far.wav" !ir_path[12] := "presets/effects/convolution/<<>>/K4 IR Samples/Auditorium A.wav" !ir_path[13] := "presets/effects/convolution/<<>>/K4 IR Samples/Auditorium B.wav" !ir_path[14] := "presets/effects/convolution/<<>>/K4 IR Samples/Chamber A.wav" !ir_path[15] := "presets/effects/convolution/<<>>/K4 IR Samples/Chamber B.wav" !ir_path[16] := "presets/effects/convolution/<<>>/K4 IR Samples/Rehearsal Room.wav" !ir_path[17] := "presets/effects/convolution/<<>>/K4 IR Samples/Hard Wood Room B.wav" !ir_path[18] := "presets/effects/convolution/<<>>/K4 IR Samples/Music Studio C.wav" !ir_path[19] := "presets/effects/convolution/<<>>/K4 IR Samples/Small Room A.wav" !ir_path[20] := "presets/effects/convolution/<<>>/K4 IR Samples/Small Room B.wav" !ir_path[21] := "presets/effects/convolution/<<>>/K4 IR Samples/L300 Large Hall.wav" !ir_path[22] := "presets/effects/convolution/<<>>/K4 IR Samples/L300 Gated Hall.wav" !ir_path[23] := "presets/effects/convolution/<<>>/K4 IR Samples/L300 Large Room.wav" !ir_path[24] := "presets/effects/convolution/<<>>/K4 IR Samples/L300 Large Chamber.wav" !ir_path[25] := "presets/effects/convolution/<<>>/K4 IR Samples/L300 Studio C.wav" !ir_path[26] := "presets/effects/convolution/<<>>/K4 IR Samples/L300 Contem-Plate.wav" !ir_path[27] := "presets/effects/convolution/<<>>/K4 IR Samples/L300 Space & Echoes.wav" !ir_path[28] := "presets/effects/convolution/<<>>/K4 IR Samples/L300 Medium Stop.wav" !ir_path[29] := "presets/effects/convolution/<<>>/K4 IR Samples/L300 Drum Cave.wav" !ir_path[30] := "presets/effects/convolution/<<>>/K4 IR Samples/L300 Large Ambience.wav" !ir_path[31] := "presets/effects/convolution/<<>>/K4 IR Samples/L300 Smooth Ambience.wav" !ir_path[32] := "presets/effects/convolution/<<>>/K4 IR Samples/L300 Ambience Wave.wav" !ir_path[33] := "presets/effects/convolution/<<>>/K4 IR Samples/L300 Le Gate.wav" !ir_path[34] := "presets/effects/convolution/<<>>/K4 IR Samples/Quadstick Small - Basic.wav" !ir_path[35] := "presets/effects/convolution/<<>>/K4 IR Samples/Quadstick Small - Disco.wav" !ir_path[36] := "presets/effects/convolution/<<>>/K4 IR Samples/Quadstick Small - Funk.wav" !ir_path[37] := "presets/effects/convolution/<<>>/K4 IR Samples/Quadstick Small - Funky Club.wav" !ir_path[38] := "presets/effects/convolution/<<>>/K4 IR Samples/Quadstick Small - Hip Hop.wav" !ir_path[39] := "presets/effects/convolution/<<>>/K4 IR Samples/Quadstick Small - Reggae Modern.wav" !ir_path[40] := "presets/effects/convolution/<<>>/K4 IR Samples/Quadstick Small - RnB Neptunes.wav" !ir_path[41] := "presets/effects/convolution/<<>>/K4 IR Samples/Quadstick Small - RnB Today 1.wav" !ir_path[42] := "presets/effects/convolution/<<>>/K4 IR Samples/BRT 7 Ambience Large A.wav" !ir_path[43] := "presets/effects/convolution/<<>>/K4 IR Samples/BRT 7 Ambience Small.wav" !ir_path[44] := "presets/effects/convolution/<<>>/K4 IR Samples/BRT 7 Chamber Small.wav" !ir_path[45] := "presets/effects/convolution/<<>>/K4 IR Samples/BRT 7 Chamber Vocal.wav" !ir_path[46] := "presets/effects/convolution/<<>>/K4 IR Samples/BRT 7 Hall Dense.wav" !ir_path[47] := "presets/effects/convolution/<<>>/K4 IR Samples/BRT 7 Location Chapel A.wav" !ir_path[48] := "presets/effects/convolution/<<>>/K4 IR Samples/BRT 7 Plate Snare.wav" !ir_path[49] := "presets/effects/convolution/<<>>/K4 IR Samples/BRT 7 Room Drum.wav" !ir_path[50] := "presets/effects/convolution/<<>>/K4 IR Samples/BRT 7 Room Wood.wav" !ir_path[51] := "presets/effects/convolution/<<>>/K4 IR Samples/BRT 7 Location Cineastic Room.wav" !ir_path[52] := "presets/effects/convolution/<<>>/K4 IR Samples/E245 0.5s A.wav" !ir_path[53] := "presets/effects/convolution/<<>>/K4 IR Samples/E245 1.0s A.wav" !ir_path[54] := "presets/effects/convolution/<<>>/K4 IR Samples/E245 1.4s A.wav" !ir_path[55] := "presets/effects/convolution/<<>>/K4 IR Samples/E245 2.1s A.wav" !ir_path[56] := "presets/effects/convolution/<<>>/K4 IR Samples/E245 4.5s A.wav" !ir_path[57] := "presets/effects/convolution/<<>>/K4 IR Samples/E252 0.6s.wav" !ir_path[58] := "presets/effects/convolution/<<>>/K4 IR Samples/E252 1.0s.wav" !ir_path[59] := "presets/effects/convolution/<<>>/K4 IR Samples/E252 1.8s.wav" !ir_path[60] := "presets/effects/convolution/<<>>/K4 IR Samples/E252 3.0s.wav" !ir_path[61] := "presets/effects/convolution/<<>>/K4 IR Samples/E252 4.5s.wav" !ir_path[62] := "presets/effects/convolution/17 Cabinets/Brit 212/IR Samples/Brit_212_Tube_Center.wav" !ir_path[63] := "presets/effects/convolution/17 Cabinets/Tweed 112/IR Samples/Tweed_112_Tube_Center.wav" !ir_path[64] := "presets/effects/convolution/17 Cabinets/Tweed 212/IR Samples/Tweed_212_Tube_Center.wav" !ir_path[65] := "presets/effects/convolution/17 Cabinets/Tweed 410/IR Samples/Tweed_410_Tube_Center.wav" !ir_path[66] := "presets/effects/convolution/17 Cabinets/Rock 412/IR Samples/Rock_412_Tube_Center.wav" !ir_path[67] := "presets/effects/convolution/17 Cabinets/Modern 412/IR Samples/Modern_412_Tube_Center.wav" declare !ir_type[68] !ir_type[0] := "Concert Hall A" !ir_type[1] := "Concert Hall B" !ir_type[2] := "Exhibition Hall" !ir_type[3] := "Cathedral A" !ir_type[4] := "Cathedral B" !ir_type[5] := "NDB Cathedral" !ir_type[6] := "Club A" !ir_type[7] := "Club B" !ir_type[8] := "Tavern Close" !ir_type[9] := "Tavern Near" !ir_type[10] := "Tavern Mid" !ir_type[11] := "Tavern Far" !ir_type[12] := "Auditorium A" !ir_type[13] := "Auditorium B" !ir_type[14] := "Chamber A" !ir_type[15] := "Chamber B" !ir_type[16] := "Rehearsal" !ir_type[17] := "Hard Wood" !ir_type[18] := "Music Studio" !ir_type[19] := "Small Room A" !ir_type[20] := "Small Room B" !ir_type[21] := "Large Hall" !ir_type[22] := "Gated Hall" !ir_type[23] := "Large Room" !ir_type[24] := "Large Chamber" !ir_type[25] := "Studio C" !ir_type[26] := "Contem-Plate" !ir_type[27] := "Echoes" !ir_type[28] := "Medium Stop" !ir_type[29] := "Drum Cave" !ir_type[30] := "Large Ambi" !ir_type[31] := "Smooth Ambi" !ir_type[32] := "Ambi Wave" !ir_type[33] := "Le Gate" !ir_type[34] := "Basic" !ir_type[35] := "Disco" !ir_type[36] := "Funk" !ir_type[37] := "Funky Club" !ir_type[38] := "Hip Hop" !ir_type[39] := "Reggae Modern" !ir_type[40] := "RnB Neptunes" !ir_type[41] := "RnB Today" !ir_type[42] := "Lrg Ambience" !ir_type[43] := "Sml Ambience" !ir_type[44] := "Sml Chamber" !ir_type[45] := "Voc Chamber" !ir_type[46] := "Dense Hall" !ir_type[47] := "Chapel" !ir_type[48] := "Snare Plate" !ir_type[49] := "Drum Room" !ir_type[50] := "Wood Room" !ir_type[51] := "Cineastic" !ir_type[52] := "E245 0.5s" !ir_type[53] := "E245 1.0s" !ir_type[54] := "E245 1.4s" !ir_type[55] := "E245 2.1s" !ir_type[56] := "E245 4.5s" !ir_type[57] := "E252 0.6s" !ir_type[58] := "E252 1.0s" !ir_type[59] := "E252 1.8s" !ir_type[60] := "E252 3.0s" !ir_type[61] := "E252 4.5s" !ir_type[62] := "Brit 2x12" !ir_type[63] := "Tweed 1x12" !ir_type[64] := "Tweed 2x12" !ir_type[65] := "Tweed 4x10" !ir_type[66] := "Rock 4x12" !ir_type[67] := "Modern 4x12" $count := 0 while ($count < 68) if ($count < 3) add_menu_item($hall_reverb,!ir_type[$count],$count) else if ($count < 6) add_menu_item($cathedral_reverb,!ir_type[$count],$count) else if ($count < 14) add_menu_item($club_reverb,!ir_type[$count],$count) else if ($count < 21) add_menu_item($room_reverb,!ir_type[$count],$count) else if ($count < 34) add_menu_item($l300_reverb,!ir_type[$count],$count) else if($count < 42) add_menu_item($quadstick_reverb,!ir_type[$count],$count) else if ($count < 52) add_menu_item($brt7_reverb,!ir_type[$count],$count) else if ($count < 62) add_menu_item($plate_reverb,!ir_type[$count],$count) else add_menu_item($cabinet_reverb,!ir_type[$count],$count) end if end if end if end if end if end if end if end if inc ($count) end while make_persistent($category_reverb) make_persistent($hall_reverb) make_persistent($cathedral_reverb) make_persistent($club_reverb) make_persistent($room_reverb) make_persistent($l300_reverb) make_persistent($quadstick_reverb) make_persistent($brt7_reverb) make_persistent($plate_reverb) make_persistent($cabinet_reverb) _read_persistent_var($category_reverb) _read_persistent_var($hall_reverb) _read_persistent_var($cathedral_reverb) _read_persistent_var($club_reverb) _read_persistent_var($room_reverb) _read_persistent_var($l300_reverb) _read_persistent_var($quadstick_reverb) _read_persistent_var($brt7_reverb) _read_persistent_var($plate_reverb) _read_persistent_var($cabinet_reverb) $count := 0 while ($count < 9) if ($count = $category_reverb) set_control_par(%subcat_menu_id[$count],$CONTROL_PAR_HIDE,$HIDE_PART_NOTHING) else set_control_par(%subcat_menu_id[$count],$CONTROL_PAR_HIDE,$HIDE_WHOLE_CONTROL) end if inc ($count) end while set_control_par(get_ui_id($image_reverb),$CONTROL_PAR_PICTURE_STATE,$category_reverb) {/reverb functionality} declare %reverb_id[$NUM_REVERB] %reverb_id[0] := get_ui_id($lb_wetdry_reverb) %reverb_id[1] := get_ui_id($image_reverb) %reverb_id[2] := get_ui_id($wetdry_reverb) %reverb_id[3] := get_ui_id($category_reverb) %reverb_id[4] := get_ui_id($hall_reverb) %reverb_id[5] := get_ui_id($cathedral_reverb) %reverb_id[6] := get_ui_id($club_reverb) %reverb_id[7] := get_ui_id($room_reverb) %reverb_id[8] := get_ui_id($l300_reverb) %reverb_id[9] := get_ui_id($quadstick_reverb) %reverb_id[10] := get_ui_id($brt7_reverb) %reverb_id[11] := get_ui_id($plate_reverb) %reverb_id[12] := get_ui_id($cabinet_reverb) %reverb_id[13] := get_ui_id($on_off_reverb) %reverb_id[14] := get_ui_id($lb_on_off_reverb) {VARIOUS ATTRIBUTES} set_text($lb_wetdry_reverb,"Amount") set_control_par (get_ui_id($wetdry_reverb),$CONTROL_PAR_DEFAULT_VALUE,250000) set_text($lb_on_off_reverb, "On/Off") set_text($image_reverb,"") set_control_par(%reverb_id[0], $CONTROL_PAR_HIDE, $HIDE_PART_BG) set_control_par(%reverb_id[14], $CONTROL_PAR_HIDE, $HIDE_PART_BG) set_control_par(%reverb_id[0], $CONTROL_PAR_FONT_TYPE, $FONT_ID) set_control_par(%reverb_id[14], $CONTROL_PAR_FONT_TYPE, $FONT_ID) set_control_par_str(%reverb_id[2], $CONTROL_PAR_PICTURE, "pv_choir_knob_big") set_control_par(%reverb_id[2], $CONTROL_PAR_MOUSE_BEHAVIOUR, -500) set_control_par_str(%reverb_id[13], $CONTROL_PAR_PICTURE, "pv_orchestral_btn") set_text($on_off_reverb, "") set_control_par(%reverb_id[13], $CONTROL_PAR_HEIGHT, 40) set_control_par(%reverb_id[13], $CONTROL_PAR_WIDTH, 40) $count := 3 while ($count < 13) set_control_par_str(%reverb_id[$count], $CONTROL_PAR_TEXT, "") set_control_par_str(%reverb_id[$count], $CONTROL_PAR_PICTURE, "pv_choir_dropdown_trans") set_control_par(%reverb_id[$count], $CONTROL_PAR_FONT_TYPE, $FONT_ID_2) inc($count) end while {POSITIONING OF INDIVIDUAL CONTROLS} move_control_px($lb_wetdry_reverb,($GRID_X * 2) + 37, ($GRID_Y * 2) + 9) move_control_px($image_reverb,($GRID_X * 1) + 14, ($GRID_Y * 4) + 3) move_control_px($wetdry_reverb,($GRID_X * 2) + 34, ($GRID_Y * 3) + 4) move_control_px($category_reverb,($GRID_X * 1) + 10, ($GRID_Y * 3) + 7) move_control_px($on_off_reverb,($GRID_X * 2) + 44, ($GRID_Y * 6) + 12) move_control_px($lb_on_off_reverb,($GRID_X * 2) + 41, ($GRID_Y * 5) + 18) $count := 4 while ($count < 13) set_control_par(%reverb_id[$count], $CONTROL_PAR_POS_X, ($GRID_X * 1) + 10) set_control_par(%reverb_id[$count], $CONTROL_PAR_POS_Y, ($GRID_Y * 7) + 2) set_control_par(%reverb_id[$count], $CONTROL_PAR_WIDTH, 93) inc($count) end while set_control_par(%reverb_id[3], $CONTROL_PAR_WIDTH, 93) $count := 4 while ($count<13) if($count = $category_reverb + 4) set_control_par(%reverb_id[$count],$CONTROL_PAR_HIDE,$HIDE_PART_NOTHING) else set_control_par(%reverb_id[$count], $CONTROL_PAR_HIDE, $HIDE_WHOLE_CONTROL) end if inc($count) end while $wetdry_reverb := get_engine_par($ENGINE_PAR_SEND_EFFECT_OUTPUT_GAIN, -1,$reverb_slot,1) $on_off_reverb := (_get_engine_par($ENGINE_PAR_EFFECT_BYPASS, -1, $reverb_slot, 1) + 1) mod 2 $count := 0 while ($count < $NUM_reverb) set_control_par (%reverb_id[$count],$CONTROL_PAR_POS_X,get_control_par(%reverb_id[$count],... $CONTROL_PAR_POS_X)+$ROOT_X + ($x_grid_reverb - 1)*$GRID_X + $x_px_reverb) set_control_par (%reverb_id[$count],$CONTROL_PAR_POS_Y,get_control_par(%reverb_id[$count],... $CONTROL_PAR_POS_Y)+$ROOT_Y + ($y_grid_reverb - 1)*$GRID_Y + $y_px_reverb) inc($count) end while set_control_par_str(get_ui_id($wetdry_reverb),$CONTROL_PAR_AUTOMATION_NAME,"Rv Amt") set_control_par_str(get_ui_id($on_off_reverb),$CONTROL_PAR_AUTOMATION_NAME,"Reverb") set_control_par_str(get_ui_id($wetdry_reverb),$CONTROL_PAR_LABEL,get_engine_par_disp($ENGINE_PAR_SEND_EFFECT_OUTPUT_GAIN, -1,$reverb_slot,1) & " dB") {----------MASTER REVERB FX END-----------} set_control_help($morph_knob,"Morph: Morphs between the different vowels.") set_control_help($mod_amount_knob,"Mod Wheel Amount: Controls the intensity of the Mod Wheel to Morph modulation.") set_control_help($atouch_amount_knob,"Aftertouch Amount: Controls the intensity of the Aftertouch to Morph modulation.") set_control_help($cc_invert_button,"Mod Wheel Invert: Inverts the polarity of the Mod Wheel to Morph modulation.") set_control_help($atouch_invert_button,"Aftertouch Invert: Inverts the polarity of the Aftertouch to Morph modulation.") set_control_help($wetdry_reverb,"Reverb Amount: Sets the send level of the reverb effect.") set_control_help($on_off_reverb,"Reverb On/Off: Turns the reverb effect on or off.") set_control_help($category_reverb, "Reverb IR Category: Select a category from which you can choose a specific Impulse response from the second dropdown menu.") set_control_help($hall_reverb, "Concert Hall: Impulse responses in this category are capured from real spaces and represent a variety of large performance spaces.") set_control_help($cathedral_reverb, "Cathedral: A mix of real and modelled spaces that offer large and dense reverb tails.") set_control_help($club_reverb, "Club: Impulse responses in this category are capured from real spaces and represent a variety of small performance spaces.") set_control_help($room_reverb, "Room: Impulse responses in this category are capured from real spaces and cover a variety of smaller rooms.") set_control_help($l300_reverb, "L300: Impulse responses taken from the classic studio digital reverb.") set_control_help($plate_reverb, "Plate: Impulse responses from classic plate reverb effect units.") set_control_help($quadstick_reverb, "Quadstick: Impulse responses taken from the classic studio digital reverb.") set_control_help($brt7_reverb, "BRT 7: Impulse responses taken from the classic studio digital reverb.") set_control_help($cabinet_reverb, "Cabinet: Impulse responses of several cabinet types.") if ($CREATE_AUTOMATION_ID = 1) set_control_par(get_ui_id($morph_knob),$CONTROL_PAR_AUTOMATION_ID,5) set_control_par(get_ui_id($mod_amount_knob),$CONTROL_PAR_AUTOMATION_ID,6) set_control_par(get_ui_id($atouch_amount_knob),$CONTROL_PAR_AUTOMATION_ID,7) set_control_par(get_ui_id($cc_invert_button),$CONTROL_PAR_AUTOMATION_ID,14) set_control_par(get_ui_id($atouch_invert_button),$CONTROL_PAR_AUTOMATION_ID,15) set_control_par(get_ui_id($sound_knob),$CONTROL_PAR_AUTOMATION_ID,0) set_control_par(get_ui_id($chord_knob),$CONTROL_PAR_AUTOMATION_ID,1) set_control_par(get_ui_id($key_knob),$CONTROL_PAR_AUTOMATION_ID,2) set_control_par(get_ui_id($scale_knob),$CONTROL_PAR_AUTOMATION_ID,3) set_control_par(get_ui_id($wetdry_reverb),$CONTROL_PAR_AUTOMATION_ID,4) set_control_par(get_ui_id($on_off_reverb),$CONTROL_PAR_AUTOMATION_ID,12) end if end on on note {harmonization & restrain to scale START} if (%cur_scale[$EVENT_NOTE mod 12] = 1) select ($mapping_style) case 0 exit case 1 ignore_event($EVENT_ID) exit case 2 {this is our default case} $a := 1 while($a < 12) if (%cur_scale[($EVENT_NOTE+$a) mod 12] = 0 ) change_note($EVENT_ID,$EVENT_NOTE+$a) $a := 100 end if inc($a) end while case 3 $a := -1 while($a > -12) if (%cur_scale[($EVENT_NOTE+$a) mod 12] = 0 ) change_note($EVENT_ID,$EVENT_NOTE+$a) $a := -100 end if dec($a) end while case 4 $a := 1 while($a < 12) if (%cur_scale[($EVENT_NOTE+$a) mod 12] = 0 ) $a := 100 end if inc($a) end while end select end if if ($absolute = 0) $c := 0 while($c < 4) if (%tone_note_arr[$c] > 0) $a := 0 $b := 0 while(%tone_note_arr[$c] > $b and ($EVENT_NOTE+$a) > -1 and ($EVENT_NOTE+$a) < 128) if (%cur_scale[($EVENT_NOTE+$a) mod 12] = 0) inc($b) end if if ($b = %tone_note_arr[$c]) $note_helper := $EVENT_NOTE + $a if ($note_helper >= 0 and $note_helper <= 127 and $note_helper # $EVENT_NOTE) $new_id := play_note($note_helper,$EVENT_VELOCITY,0,-1) change_vol($new_id,get_event_par($EVENT_ID,$EVENT_PAR_VOLUME),1) change_tune($new_id,get_event_par($EVENT_ID,$EVENT_PAR_TUNE),1) change_pan($new_id,get_event_par($EVENT_ID,$EVENT_PAR_PAN),1) end if end if inc($a) end while end if inc($c) end while else $c := 0 while($c < 4) $note_helper := 0 select (%tone_note_arr[$c]) case 2 if (%cur_scale[($EVENT_NOTE+2) mod 12] = 0) $note_helper := $EVENT_NOTE + 2 else if (%cur_scale[($EVENT_NOTE+1) mod 12] = 0) $note_helper := $EVENT_NOTE + 1 end if end if case 3 if (%cur_scale[($EVENT_NOTE+4) mod 12] = 0) $note_helper := $EVENT_NOTE + 4 else if (%cur_scale[($EVENT_NOTE+3) mod 12] = 0) $note_helper := $EVENT_NOTE + 3 else if (%cur_scale[($EVENT_NOTE+2) mod 12] = 0) $note_helper := $EVENT_NOTE + 2 else if (%cur_scale[($EVENT_NOTE+5) mod 12] = 0) $note_helper := $EVENT_NOTE + 5 end if end if end if end if case 4 if (%cur_scale[($EVENT_NOTE+5) mod 12] = 0) $note_helper := $EVENT_NOTE + 5 else if (%cur_scale[($EVENT_NOTE+6) mod 12] = 0) $note_helper := $EVENT_NOTE + 6 else if (%cur_scale[($EVENT_NOTE+4) mod 12] = 0) $note_helper := $EVENT_NOTE + 4 end if end if end if case 5 if (%cur_scale[($EVENT_NOTE+7) mod 12] = 0) $note_helper := $EVENT_NOTE + 7 else if (%cur_scale[($EVENT_NOTE+6) mod 12] = 0) $note_helper := $EVENT_NOTE + 6 else if (%cur_scale[($EVENT_NOTE+8) mod 12] = 0) $note_helper := $EVENT_NOTE + 8 end if end if end if case 6 if (%cur_scale[($EVENT_NOTE+9) mod 12] = 0) $note_helper := $EVENT_NOTE + 9 else if (%cur_scale[($EVENT_NOTE+8) mod 12] = 0) $note_helper := $EVENT_NOTE + 8 else if (%cur_scale[($EVENT_NOTE+10) mod 12] = 0) $note_helper := $EVENT_NOTE + 10 end if end if end if case 7 if (%cur_scale[($EVENT_NOTE+10) mod 12] = 0) $note_helper := $EVENT_NOTE + 10 else if (%cur_scale[($EVENT_NOTE+11) mod 12] = 0) $note_helper := $EVENT_NOTE + 11 else if (%cur_scale[($EVENT_NOTE+9) mod 12] = 0) $note_helper := $EVENT_NOTE + 9 end if end if end if case 8 $note_helper := $EVENT_NOTE + 12 end select if ($note_helper > 0 and $note_helper <= 127 and $note_helper # $EVENT_NOTE) $new_id := play_note($note_helper,$EVENT_VELOCITY,0,-1) change_vol($new_id,get_event_par($EVENT_ID,$EVENT_PAR_VOLUME),1) change_tune($new_id,get_event_par($EVENT_ID,$EVENT_PAR_TUNE),1) change_pan($new_id,get_event_par($EVENT_ID,$EVENT_PAR_PAN),1) end if inc($c) end while end if end on on ui_control ($chord_knob) $a := 0 while($a < 4) %tone_note_arr[$a] := %tonal_chord_types[($chord_knob*4)+$a] inc($a) end while set_text ($label_2_instcontrol,!harmo_names[$chord_knob]) set_control_par_str(get_ui_id($chord_knob),$CONTROL_PAR_LABEL,!harmo_names[$chord_knob]) if ($chord_knob < 1 or $scale_knob = 0 or $REAL_TONAL = 1) $absolute := 1 else $absolute := 0 end if $last_time_1 := $ENGINE_UPTIME wait($wait_time * 1000) if($ENGINE_UPTIME - $last_time_1 > $wait_time -5) set_text ($label_2_instcontrol,"Chord") end if end on on ui_control ($scale_knob) $a := 0 while($a < 12) %cur_scale[$a] := %scale_types[$scale_knob*12 + (($a + 12 - $key_knob) mod 12)] inc($a) end while set_text($label_4_instcontrol,!Scale_names[$scale_knob]) set_control_par_str(get_ui_id($scale_knob),$CONTROL_PAR_LABEL,!Scale_names[$scale_knob]) if ($chord_knob < 1 or $scale_knob = 0 or $REAL_TONAL = 1) $absolute := 1 else $absolute := 0 end if $last_time_2 := $ENGINE_UPTIME wait($wait_time * 1000) if($ENGINE_UPTIME - $last_time_2 > $wait_time -5) set_text ($label_4_instcontrol,"Scale") end if end on on ui_control ($key_knob) $a := 0 while($a < 12) %cur_scale[$a] := %scale_types[$scale_knob*12 + (($a + 12 - $key_knob) mod 12)] inc($a) end while set_text($label_3_instcontrol,!Note_names[$key_knob]) set_control_par_str(get_ui_id($key_knob),$CONTROL_PAR_LABEL,!Note_names[$key_knob]) $last_time_3 := $ENGINE_UPTIME wait($wait_time * 1000) if($ENGINE_UPTIME - $last_time_3 > $wait_time -5) set_text ($label_3_instcontrol,"Key") end if end on on ui_control ($sound_knob) $index_1_instr := $sound_knob/10 $index_2_instr := $sound_knob/10 +1 $knob_eq_instr := $sound_knob*10 if ($index_2_instr > 10) $index_2_instr := 10 end if $a_eq_instr := 0 while($a_eq_instr < 9) $helper_eq_instr := ((%savearr_instr[($index_2_instr*9) + $a_eq_instr] - %savearr_instr[($index_1_instr*9)... + $a_eq_instr]) * ($knob_eq_instr mod 100))/100 + %savearr_instr[($index_1_instr*9) + $a_eq_instr] _set_engine_par(%engine_par_instr[$a_eq_instr],$helper_eq_instr,-1,$eq_slot,1) inc($a_eq_instr) end while set_control_par_str(get_ui_id($sound_knob),$CONTROL_PAR_LABEL,$sound_knob & " %") end on {END INSTRUMENT CONTROLS CALLBACKS} {START CHOIR MIX CALLBAKCS} on ui_control ($morph_knob) set_engine_par ($ENGINE_PAR_EXP_FILTER_MORPH,$morph_knob,$grp_1_idx,$slot_idx,-1) set_control_par_str(get_ui_id($morph_knob),$CONTROL_PAR_LABEL,get_engine_par_disp($ENGINE_PAR_EXP_FILTER_MORPH,$grp_1_idx,$slot_idx,-1) & " %") end on on ui_control ($mod_amount_knob) set_engine_par($ENGINE_PAR_MOD_TARGET_INTENSITY,$mod_amount_knob,$grp_1_idx,$cc_slot_idx,-1) set_control_par_str(get_ui_id($mod_amount_knob), $CONTROL_PAR_LABEL,get_engine_par_disp($ENGINE_PAR_MOD_TARGET_INTENSITY,$grp_1_idx,$cc_slot_idx,-1) & " %") end on on ui_control ($atouch_amount_knob) set_engine_par($ENGINE_PAR_MOD_TARGET_INTENSITY,$atouch_amount_knob,$grp_1_idx,$aftertouch_slot_idx,-1) set_control_par_str(get_ui_id($atouch_amount_knob), $CONTROL_PAR_LABEL,get_engine_par_disp($ENGINE_PAR_MOD_TARGET_INTENSITY,$grp_1_idx,$aftertouch_slot_idx,-1) & " %") end on on ui_control ($cc_invert_button) set_engine_par($MOD_TARGET_INVERT_SOURCE,$cc_invert_button,$grp_1_idx,$cc_slot_idx,-1) end on on ui_control ($atouch_invert_button) set_engine_par($MOD_TARGET_INVERT_SOURCE,$atouch_invert_button,$grp_1_idx,$aftertouch_slot_idx,-1) end on {END CHOIR MORPH CALLBACKS} {--REVERB UI CALL BACKS--} on ui_control ($category_reverb) $count := 0 while ($count < 9) if ($count = $category_reverb) set_control_par(%subcat_menu_id[$count],$CONTROL_PAR_HIDE,$HIDE_PART_NOTHING) else set_control_par(%subcat_menu_id[$count],$CONTROL_PAR_HIDE,$HIDE_WHOLE_CONTROL) end if inc ($count) end while set_control_par(get_ui_id($image_reverb),$CONTROL_PAR_PICTURE_STATE,$category_reverb) _load_ir_sample(_get_folder($GET_FOLDER_FACTORY_DIR)&... !ir_path[%offset_reverb[$category_reverb]+get_control_par... (%subcat_menu_id[$category_reverb],$CONTROL_PAR_VALUE)],$reverb_slot,1) {change 0 to 1 if reverb is on insert effect} end on on ui_control ($hall_reverb) _load_ir_sample(_get_folder($GET_FOLDER_FACTORY_DIR)... & !ir_path[$hall_reverb],$reverb_slot,1) end on on ui_control ($cathedral_reverb) _load_ir_sample(_get_folder($GET_FOLDER_FACTORY_DIR)... & !ir_path[$cathedral_reverb],$reverb_slot,1) end on on ui_control ($club_reverb) _load_ir_sample(_get_folder($GET_FOLDER_FACTORY_DIR)... & !ir_path[$club_reverb],$reverb_slot,1) end on on ui_control ($room_reverb) _load_ir_sample(_get_folder($GET_FOLDER_FACTORY_DIR)... & !ir_path[$room_reverb],$reverb_slot,1) end on on ui_control ($l300_reverb) _load_ir_sample(_get_folder($GET_FOLDER_FACTORY_DIR)... & !ir_path[$l300_reverb],$reverb_slot,1) end on on ui_control ($quadstick_reverb) _load_ir_sample(_get_folder($GET_FOLDER_FACTORY_DIR)... & !ir_path[$quadstick_reverb],$reverb_slot,1) end on on ui_control ($brt7_reverb) _load_ir_sample(_get_folder($GET_FOLDER_FACTORY_DIR)... & !ir_path[$brt7_reverb],$reverb_slot,1) end on on ui_control ($plate_reverb) _load_ir_sample(_get_folder($GET_FOLDER_FACTORY_DIR)... & !ir_path[$plate_reverb],$reverb_slot,1) end on on ui_control ($cabinet_reverb) _load_ir_sample(_get_folder($GET_FOLDER_FACTORY_DIR)... & !ir_path[$cabinet_reverb],$reverb_slot,1) end on on ui_control ($wetdry_reverb) _set_engine_par ($ENGINE_PAR_SEND_EFFECT_OUTPUT_GAIN, $wetdry_reverb, -1, $reverb_slot, 1) set_control_par_str(get_ui_id($wetdry_reverb),$CONTROL_PAR_LABEL,get_engine_par_disp($ENGINE_PAR_SEND_EFFECT_OUTPUT_GAIN, -1,$reverb_slot,1) & " dB") end on on ui_control ($on_off_reverb) _set_engine_par($ENGINE_PAR_EFFECT_BYPASS, (($on_off_reverb + 1) mod 2), -1, $reverb_slot, 1) end on