{*********************************************** Kontakt 4 Factory Library - Instrument Synth Collection Poly Step Author: Native Instruments Written by: Nicki Marinic, Josef Natterer Modified: September 11th, 2009 *************************************************} on init set_script_title("Poly Step") set_ui_height(6) message("") {PGS STUFF FOR K4} _pgs_create_key(SEQ_ON_OFF,1) {END PGS STUFF FOR K4} declare const $PRESET_LENGTH := 234 declare ui_knob $Root_knob (5,115,1) set_knob_defval($root_knob,8) set_text($Root_knob,"Root") $Root_knob := 8 declare %cur_preset[512] make_persistent(%cur_preset) declare $cur_track declare ui_value_edit $Steps (2,16,1) $steps := 16 declare ui_knob $mode (0,2,1) make_persistent($mode) set_text($mode,"Mode") $mode := 1 _read_persistent_var($mode) select ($mode) case 0 set_knob_label($mode,"Off") case 1 set_knob_label($mode,"On") case 2 set_knob_label($mode,"Hold") end select declare !tempo_names[18] !tempo_names[0] := "1/128" !tempo_names[1] := "1/64" !tempo_names[2] := "1/32" !tempo_names[3] := "1/16 T" !tempo_names[4] := "3/64" !tempo_names[5] := "1/16" !tempo_names[6] := "1/8 T" !tempo_names[7] := "3/32" !tempo_names[8] := "1/8" !tempo_names[9] := "1/4 T" !tempo_names[10] := "3/16" !tempo_names[11] := "1/4" !tempo_names[12] := "1/2 T" !tempo_names[13] := "3/8" !tempo_names[14] := "1/2" !tempo_names[15] := "3/4" !tempo_names[16] := "4/4" !tempo_names[17] := "Bar" declare ui_label $Global_label (2,1) set_text ($Global_label,"Global Settings") set_control_par(get_ui_id($Global_label),$CONTROL_PAR_TEXT_ALIGNMENT,1) declare ui_label $Timing_label (3,1) set_text ($Timing_label,"Timing") set_control_par(get_ui_id($Timing_label),$CONTROL_PAR_TEXT_ALIGNMENT,1) declare ui_label $Patterns_label (6,1) set_text ($Patterns_label,"Patterns") declare ui_label $Pitch_label (1,1) set_text ($Pitch_label,"Pitch") set_control_par(get_ui_id($Pitch_label),$CONTROL_PAR_TEXT_ALIGNMENT,2) set_control_par(get_ui_id($Pitch_label),$CONTROL_PAR_HIDE,$HIDE_PART_BG) declare ui_label $Velocity_label (1,1) set_text ($Velocity_label,"Velocity") set_control_par(get_ui_id($Velocity_label),$CONTROL_PAR_TEXT_ALIGNMENT,2) set_control_par(get_ui_id($Velocity_label),$CONTROL_PAR_HIDE,$HIDE_PART_BG) declare ui_knob $Rate_knob (0,1000000,1) set_text ($Rate_knob,"Rate") make_persistent($rate_knob) $Rate_knob := 330000 declare $Sync_knob := 5 make_persistent ($Sync_knob) declare %pressed[128] declare !note_class[12] !note_class[0] := "C" !note_class[1] := "Db" !note_class[2] := "D" !note_class[3] := "Eb" !note_class[4] := "E" !note_class[5] := "F" !note_class[6] := "Gb" !note_class[7] := "G" !note_class[8] := "Ab" !note_class[9] := "A" !note_class[10] := "Bb" !note_class[11] := "B" {******** BEGIN - GUI Settings - BEGIN ********} declare ui_button $t1 declare ui_button $t2 declare ui_button $t3 declare ui_button $t4 declare ui_button $t5 declare ui_button $t6 $t1 := 1 declare ui_table %VelDisplay[16] (4, 2, 127) declare ui_table %PitchDisplay[16] (4, 2, -12) declare ui_table %grid_table[16] (4,1,2) declare ui_knob $Swing (-50,50,1) set_knob_defval($Swing,0) make_persistent($Swing) declare ui_menu $Edit_Menu add_menu_item ($Edit_Menu, "Edit...",100) add_menu_item ($Edit_Menu, "--------------",99) add_menu_item ($Edit_Menu, "Copy Pattern",4) add_menu_item ($Edit_Menu, "Paste Pattern",5) add_menu_item ($Edit_Menu, "Clear Pattern",6) declare ui_knob $Duration (1,200,1) set_knob_unit($Duration,$KNOB_UNIT_PERCENT) set_knob_defval ($Duration,100) $Duration := 75 make_persistent($Duration) declare ui_switch $Solo_button set_control_par_str(get_ui_id($Solo_button),$CONTROL_PAR_TEXT,"Solo Pattern") make_persistent($Solo_button) declare ui_knob $Octave (-6,6,1) set_knob_defval ($Octave,0) declare ui_knob $Semitone (-12,12,1) set_knob_defval ($Semitone,0) set_text ($Semitone,"Semito.") move_control($Octave,0,0) move_control($Semitone,0,0) $Octave := 0 $semitone := 0 declare $loop_id {******** END - GUI Settings - END ********} move_control ($t1, 1,2) move_control ($t2, 2,2) move_control ($t3, 3,2) move_control ($t4, 4,2) move_control ($t5, 5,2) move_control ($t6, 6,2) move_control (%grid_table, 2,3) move_control (%PitchDisplay, 2,4) move_control (%VelDisplay, 2,6) move_control ($Edit_Menu, 2,10) move_control ($Swing, 6,10) move_control ($steps, 6,7) move_control ($Duration, 5,10) move_control ($rate_knob, 4,10) move_control ($mode, 1,10) move_control ($root_knob, 6,4) move_control ($Solo_button, 2,11) move_control ($Global_label, 1,9) move_control ($Timing_label, 4,9) move_control ($Patterns_label, 0,0) move_control_px ($Pitch_label,66,3*21+2+10) move_control_px ($Velocity_label,66,5*21+2+10) {******** Variables ********} declare $last_pattern := 1 make_persistent($last_pattern) declare %preset_0_arr[$PRESET_LENGTH] declare %preset_1_arr[$PRESET_LENGTH] declare %preset_2_arr[$PRESET_LENGTH] declare %preset_3_arr[$PRESET_LENGTH] declare %preset_4_arr[$PRESET_LENGTH] declare %preset_5_arr[$PRESET_LENGTH] declare %preset_6_arr[$PRESET_LENGTH] declare %preset_7_arr[$PRESET_LENGTH] declare %preset_8_arr[$PRESET_LENGTH] declare %preset_9_arr[$PRESET_LENGTH] declare %preset_10_arr[$PRESET_LENGTH] declare %preset_11_arr[$PRESET_LENGTH] make_persistent(%preset_0_arr) make_persistent(%preset_1_arr) make_persistent(%preset_2_arr) make_persistent(%preset_3_arr) make_persistent(%preset_4_arr) make_persistent(%preset_5_arr) make_persistent(%preset_6_arr) make_persistent(%preset_7_arr) make_persistent(%preset_8_arr) make_persistent(%preset_9_arr) make_persistent(%preset_10_arr) make_persistent(%preset_11_arr) declare $a declare $b declare $aa declare $id declare %cursor[6] declare $step_length declare $last_preset make_persistent($last_preset) declare $last_pattern_note := 1000 declare $helper { INIT} declare $NoteNr_Pattern declare $note_helper declare ui_label $offset_label (2,1) set_text($offset_label,"Pattern Settings:") move_control($offset_label,0,0) set_control_help($steps,"Steps: Sets the number of steps of the selected pattern, i.e. the pattern length. You can quickly create polyrhythmic passages by having patterns with different pattern lengths.") set_control_help($Edit_Menu,"Edit Menu: Commands for copying and pasting patterns.") set_control_help($Swing,"Swing: Offsets every other step by the specified amount in percent in order to create a swing feel. Positive values delay every other step, negative values push every other step forward.") set_control_help(%PitchDisplay,"Note Grid: Adjusts the note offset per step of the selected track. The range is -12 to +12 semitones. Cmd-Ctrl click to reset a step to 0 (no transposition of the step).") set_control_help(%VelDisplay,"Velocity Grid: Adjusts the velocity per step of the selected track. Cmd/Ctrl click to delete a step.") set_control_help($t1,"Pattern Selector Button: Selects the first pattern.") set_control_help($t2,"Pattern Selector Button: Selects the second pattern.") set_control_help($t3,"Pattern Selector Button: Selects the third pattern.") set_control_help($t4,"Pattern Selector Button: Selects the fourth pattern.") set_control_help($t5,"Pattern Selector Button: Selects the fifth pattern.") set_control_help($t6,"Pattern Selector Button: Selects the sixth pattern.") set_control_help($Solo_button,"Solo Track: Solos the currently displayed pattern.") set_control_help($Duration,"Duration: Sets the duration of the played MIDI notes in percentage of a step length.") set_control_help($Offset_label,"") set_control_help($Mode,"Mode: enables the poly step, will latch all played keys and disables the poly step.") set_control_help($root_knob,"Root: Specify the note which serves as the root note for the Note Grid (to the left of this knob). If set to , this will be the the incoming MIDI note, which can be transposed with <+- 1 Oct> <+-2 Oct> and <+-3 Oct>. You can also specify a fixed note as the root note.") set_control_help($Rate_Knob,"Rate: Sets the duration of one step.") _read_persistent_var($root_knob) select ($root_knob) case 5 set_knob_label($Root_knob,"- 3 Oct") case 6 set_knob_label($Root_knob,"- 2 Oct") case 7 set_knob_label($Root_knob,"- 1 Oct") case 8 set_knob_label($Root_knob,"Note") case 9 set_knob_label($Root_knob,"+ 1 Oct") case 10 set_knob_label($Root_knob,"+ 2 Oct") case 11 set_knob_label($Root_knob,"+ 3 Oct") case 12 to 115 set_knob_label($Root_knob,!note_class[($Root_knob-1) mod 12]&((($Root_knob-1)/12)-2)) end select declare %helper2_arr[$PRESET_LENGTH] declare %helper_arr[$PRESET_LENGTH] declare %default_preset[$PRESET_LENGTH] := (... 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,... 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,... 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,... 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,... 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,... 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,... ... 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,... 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,... 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,... 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,... 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,... 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,... ... 16,16,16,16,16, 16,... 1,330000,... 8,8,8,8,8, 8,... 0,0,0,0,0, 0,... 0,0,0,0,0, 0,... 0,0,0,0,0, 0,... 127,127,127,127,127, 127,... 75,0,0) $swing := 0 $duration := 75 $a := 0 while($a < $PRESET_LENGTH) %preset_0_arr[$a] := %default_preset[$a] %preset_1_arr[$a] := %default_preset[$a] %preset_2_arr[$a] := %default_preset[$a] %preset_3_arr[$a] := %default_preset[$a] %preset_4_arr[$a] := %default_preset[$a] %preset_5_arr[$a] := %default_preset[$a] %preset_6_arr[$a] := %default_preset[$a] %preset_7_arr[$a] := %default_preset[$a] %preset_8_arr[$a] := %default_preset[$a] %preset_9_arr[$a] := %default_preset[$a] %preset_10_arr[$a] := %default_preset[$a] %preset_11_arr[$a] := %default_preset[$a] %cur_preset[$a] := %default_preset[$a] %helper_arr[$a] := %default_preset[$a] %helper2_arr[$a] := %default_preset[$a] inc($a) end while _read_persistent_var(%cur_preset) $cur_track := %cur_preset[232] $a := 0 while($a < 16) %pitchdisplay[$a] := %cur_preset[$cur_track*16 + $a] %veldisplay[$a] := %cur_preset[96 + $cur_track*16 + $a] inc($a) end while $steps := %cur_preset[192+$cur_track] $root_knob := %cur_preset[200+$cur_track] $octave := %cur_preset[206+$cur_track] $semitone := %cur_preset[212+$cur_track] set_table_steps_shown(%veldisplay,$steps) set_table_steps_shown(%pitchdisplay,$steps) select ($root_knob) case 5 set_knob_label($Root_knob,"-3 Oct") case 6 set_knob_label($Root_knob,"-2 Oct") case 7 set_knob_label($Root_knob,"-1 Oct") case 8 set_knob_label($Root_knob,"Note") case 9 set_knob_label($Root_knob,"+1 Oct") case 10 set_knob_label($Root_knob,"+2 Oct") case 11 set_knob_label($Root_knob,"+3 Oct") case 12 to 115 set_knob_label($Root_knob,!note_class[($Root_knob) mod 12]&((($Root_knob)/12)-2)) end select _read_persistent_var($Rate_knob) $sync_knob := ($Rate_knob * 18) /1000001 set_knob_defval ($Rate_knob,(5 *1000001) / 17) set_knob_label ($Rate_knob,!tempo_names[$sync_knob]) set_knob_unit($Rate_knob,$KNOB_UNIT_NONE) set_control_par_str(get_ui_id($t1),$CONTROL_PAR_TEXT,"Pattern 1") set_control_par_str(get_ui_id($t2),$CONTROL_PAR_TEXT,"Pattern 2") set_control_par_str(get_ui_id($t3),$CONTROL_PAR_TEXT,"Pattern 3") set_control_par_str(get_ui_id($t4),$CONTROL_PAR_TEXT,"Pattern 4") set_control_par_str(get_ui_id($t5),$CONTROL_PAR_TEXT,"Pattern 5") set_control_par_str(get_ui_id($t6),$CONTROL_PAR_TEXT,"Pattern 6") set_control_par(get_ui_id($t1),$CONTROL_PAR_TEXT_ALIGNMENT,1) set_control_par(get_ui_id($t2),$CONTROL_PAR_TEXT_ALIGNMENT,1) set_control_par(get_ui_id($t3),$CONTROL_PAR_TEXT_ALIGNMENT,1) set_control_par(get_ui_id($t4),$CONTROL_PAR_TEXT_ALIGNMENT,1) set_control_par(get_ui_id($t5),$CONTROL_PAR_TEXT_ALIGNMENT,1) set_control_par(get_ui_id($t6),$CONTROL_PAR_TEXT_ALIGNMENT,1) $t1 := 0 $t2 := 0 $t3 := 0 $t4 := 0 $t5 := 0 $t6 := 0 select($cur_track) case 0 $t1 := 1 case 1 $t2 := 1 case 2 $t3 := 1 case 3 $t4 := 1 case 4 $t5 := 1 case 5 $t6 := 1 end select declare $note declare $dur declare $cur_id declare $last_note declare $swing_cursor declare %KEY_DOWN_OWN[128] $a := 0 while($a < $steps) if ($a mod 4 = 0) %grid_table[$a] := 2 else %grid_table[$a] := 0 end if inc($a) end while set_table_steps_shown(%grid_table,$steps) declare $cur_note declare $start_id declare $last_mode := 1 make_persistent($last_mode) declare %cur_notes[6] declare $max declare $max_note set_control_help (%grid_table,"Grid Display: This display is only for visual reference, it cannot be edited.") end on on note %pressed[$EVENT_NOTE] := $EVENT_ID %KEY_DOWN_OWN[$EVENT_NOTE] := $EVENT_ID if ($mode = 0) exit end if ignore_event($EVENT_ID) if ($mode = 2 and $EVENT_NOTE = $last_note) $last_note := -1 note_off($cur_id) $cur_id := 0 $a := 0 while($a < $steps) if ($a mod 4 = 0) %grid_table[$a] := 2 else %grid_table[$a] := 0 end if inc($a) end while set_table_steps_shown(%grid_table,$steps) exit end if $last_note := $EVENT_NOTE $cur_note := $EVENT_NOTE if ($cur_id = 0) $cur_id := $EVENT_ID $start_id := $EVENT_ID $swing_cursor := 0 $a := 0 while($a < 6) %cursor[$a] := 0 inc($a) end while while($cur_id # 0 and $start_id = $EVENT_ID) select ($Sync_knob) case 0 $step_length := $DURATION_SIXTEENTH/8 case 1 $step_length := $DURATION_SIXTEENTH/4 case 2 $step_length := $DURATION_SIXTEENTH/2 case 3 $step_length := $DURATION_QUARTER/6 case 4 $step_length := ($DURATION_SIXTEENTH/4)*3 case 5 $step_length := $DURATION_SIXTEENTH case 6 $step_length := $DURATION_QUARTER/3 case 7 $step_length := ($DURATION_SIXTEENTH/2)*3 case 8 $step_length := $DURATION_EIGHTH case 9 $step_length := ($DURATION_QUARTER*2)/3 case 10 $step_length := $DURATION_SIXTEENTH*3 case 11 $step_length := $DURATION_QUARTER case 12 $step_length := ($DURATION_QUARTER*4)/3 case 13 $step_length := $DURATION_EIGHTH*3 case 14 $step_length := $DURATION_QUARTER*2 case 15 $step_length := $DURATION_QUARTER*3 case 16 $step_length := $DURATION_QUARTER*4 case 17 $step_length := $DURATION_BAR end select if ($swing_cursor mod 2 = 0) $step_length := $step_length + ($step_length*$Swing)/100 else $step_length := $step_length + ($step_length*(-$Swing))/100 end if inc($swing_cursor) $dur := ($step_length*$Duration)/100 if ($step_length < 5000) $step_length := 5000 end if $aa := 0 while($aa < 6) %cur_notes[$aa] := $cur_note if (%cur_preset[96 + ($aa*16)+%cursor[$aa]] > 0) select (%cur_preset[200+$aa]) case 5 $note := %cur_notes[$aa] - 36 case 6 $note := %cur_notes[$aa] - 24 case 7 $note := %cur_notes[$aa] - 12 case 8 $note := %cur_notes[$aa] case 9 $note := %cur_notes[$aa] + 12 case 10 $note := %cur_notes[$aa] + 24 case 11 $note := %cur_notes[$aa] + 36 case 12 to 115 $note := %cur_preset[200+$aa] end select $note := $note + %cur_preset[212+$aa] + %cur_preset[206+$aa]*12 + %cur_preset[($aa*16)+%cursor[$aa]] if ($note < 0 ) $note := 0 end if if ($note > 127) $note := 127 end if if ($solo_button = 0 or $aa = $cur_track) play_note($note,%cur_preset[96 + ($aa*16)+%cursor[$aa]],0,$dur) end if end if inc(%cursor[$aa]) if (%cursor[$aa] >= %cur_preset[192+$aa]) %cursor[$aa] := 0 end if inc($aa) end while $a := 0 while($a < $steps) if (%cursor[$cur_track] = $a) %grid_table[$a] := 1 else if ($a mod 4 = 0) %grid_table[$a] := 2 else %grid_table[$a] := 0 end if end if inc($a) end while wait($step_length) end while else $cur_id := $EVENT_ID end if end on on release if (%pressed[$EVENT_NOTE] = $EVENT_ID) %pressed[$EVENT_NOTE] := 0 end if if ($mode = 0) exit end if if (%KEY_DOWN_OWN[$EVENT_NOTE] = $EVENT_ID) if ($mode = 2 and $last_note > -1) ignore_event($EVENT_ID) exit end if %KEY_DOWN_OWN[$EVENT_NOTE] := 0 if ($EVENT_ID = $cur_id) $a := 0 $max := 0 $max_note := 0 while($a < 128) if (%KEY_DOWN_OWN[$a] > $max) $max := %KEY_DOWN_OWN[$a] $max_note := $a end if inc($a) end while if ($max = 0) $cur_id := 0 $a := 0 while($a < $steps) if ($a mod 4 = 0) %grid_table[$a] := 2 else %grid_table[$a] := 0 end if inc($a) end while set_table_steps_shown(%grid_table,$steps) else $cur_id := $max $cur_note := $max_note end if end if end if end on {***} on ui_control (%pitchdisplay) $a := 0 while($a < 16) %cur_preset[($cur_track*16) + $a] := %pitchdisplay[$a] inc($a) end while end on on ui_control (%veldisplay) $a := 0 while($a < 16) %cur_preset[96+($cur_track*16) + $a] := %veldisplay[$a] inc($a) end while end on on ui_control ($steps) %cur_preset[192+$cur_track] := $steps set_table_steps_shown(%veldisplay, $steps) set_table_steps_shown(%pitchdisplay, $steps) $a := 0 while($a < $steps) if ($a mod 4 = 0) %grid_table[$a] := 2 else %grid_table[$a] := 0 end if inc($a) end while set_table_steps_shown(%grid_table,$steps) end on on ui_control ($rate_knob) $sync_knob := ($Rate_knob * 18) /1000001 set_knob_label ($Rate_knob,!tempo_names[$sync_knob]) end on on ui_control ($root_knob) select ($root_knob) case 5 set_knob_label($Root_knob,"-3 Oct") case 6 set_knob_label($Root_knob,"-2 Oct") case 7 set_knob_label($Root_knob,"-1 Oct") case 8 set_knob_label($Root_knob,"Note") case 9 set_knob_label($Root_knob,"+1 Oct") case 10 set_knob_label($Root_knob,"+2 Oct") case 11 set_knob_label($Root_knob,"+3 Oct") case 12 to 115 set_knob_label($Root_knob,!note_class[($Root_knob) mod 12]&((($Root_knob)/12)-2)) end select %cur_preset[200+$cur_track] := $root_knob end on on ui_control ($octave) %cur_preset[206+$cur_track] := $octave end on on ui_control ($semitone) %cur_preset[212+$cur_track] := $semitone end on on ui_control ($t1) $cur_track := 0 $t1 := 1 $t2 := 0 $t3 := 0 $t4 := 0 $t5 := 0 $t6 := 0 %cur_preset[232] := $cur_track $steps := %cur_preset[192+$cur_track] $octave := %cur_preset[206+$cur_track] $semitone := %cur_preset[212+$cur_track] $root_knob := %cur_preset[200+$cur_track] $a := 0 while($a < 16) %pitchdisplay[$a] := %cur_preset[$cur_track*16 + $a] %veldisplay[$a] := %cur_preset[96 + $cur_track*16 + $a] inc($a) end while set_table_steps_shown(%veldisplay,$steps) set_table_steps_shown(%pitchdisplay,$steps) $a := 0 while($a < $steps) if ($a mod 4 = 0) %grid_table[$a] := 2 else %grid_table[$a] := 0 end if inc($a) end while set_table_steps_shown(%grid_table,$steps) select ($root_knob) case 5 set_knob_label($Root_knob,"-3 Oct") case 6 set_knob_label($Root_knob,"-2 Oct") case 7 set_knob_label($Root_knob,"-1 Oct") case 8 set_knob_label($Root_knob,"Note") case 9 set_knob_label($Root_knob,"+1 Oct") case 10 set_knob_label($Root_knob,"+2 Oct") case 11 set_knob_label($Root_knob,"+3 Oct") case 12 to 115 set_knob_label($Root_knob,!note_class[($Root_knob) mod 12]&((($Root_knob)/12)-2)) end select end on on ui_control ($t2) $cur_track := 1 $t1 := 0 $t2 := 1 $t3 := 0 $t4 := 0 $t5 := 0 $t6 := 0 %cur_preset[232] := $cur_track $steps := %cur_preset[192+$cur_track] $octave := %cur_preset[206+$cur_track] $semitone := %cur_preset[212+$cur_track] $root_knob := %cur_preset[200+$cur_track] $a := 0 while($a < 16) %pitchdisplay[$a] := %cur_preset[$cur_track*16 + $a] %veldisplay[$a] := %cur_preset[96 + $cur_track*16 + $a] inc($a) end while set_table_steps_shown(%veldisplay,$steps) set_table_steps_shown(%pitchdisplay,$steps) $a := 0 while($a < $steps) if ($a mod 4 = 0) %grid_table[$a] := 2 else %grid_table[$a] := 0 end if inc($a) end while set_table_steps_shown(%grid_table,$steps) select ($root_knob) case 5 set_knob_label($Root_knob,"-3 Oct") case 6 set_knob_label($Root_knob,"-2 Oct") case 7 set_knob_label($Root_knob,"-1 Oct") case 8 set_knob_label($Root_knob,"Note") case 9 set_knob_label($Root_knob,"+1 Oct") case 10 set_knob_label($Root_knob,"+2 Oct") case 11 set_knob_label($Root_knob,"+3 Oct") case 12 to 115 set_knob_label($Root_knob,!note_class[($Root_knob) mod 12]&((($Root_knob)/12)-2)) end select end on on ui_control ($t3) $cur_track := 2 $t1 := 0 $t2 := 0 $t3 := 1 $t4 := 0 $t5 := 0 $t6 := 0 %cur_preset[232] := $cur_track $steps := %cur_preset[192+$cur_track] $octave := %cur_preset[206+$cur_track] $semitone := %cur_preset[212+$cur_track] $root_knob := %cur_preset[200+$cur_track] $a := 0 while($a < 16) %pitchdisplay[$a] := %cur_preset[$cur_track*16 + $a] %veldisplay[$a] := %cur_preset[96 + $cur_track*16 + $a] inc($a) end while set_table_steps_shown(%veldisplay,$steps) set_table_steps_shown(%pitchdisplay,$steps) $a := 0 while($a < $steps) if ($a mod 4 = 0) %grid_table[$a] := 2 else %grid_table[$a] := 0 end if inc($a) end while set_table_steps_shown(%grid_table,$steps) select ($root_knob) case 5 set_knob_label($Root_knob,"-3 Oct") case 6 set_knob_label($Root_knob,"-2 Oct") case 7 set_knob_label($Root_knob,"-1 Oct") case 8 set_knob_label($Root_knob,"Note") case 9 set_knob_label($Root_knob,"+1 Oct") case 10 set_knob_label($Root_knob,"+2 Oct") case 11 set_knob_label($Root_knob,"+3 Oct") case 12 to 115 set_knob_label($Root_knob,!note_class[($Root_knob) mod 12]&((($Root_knob)/12)-2)) end select end on on ui_control ($t4) $cur_track := 3 $t1 := 0 $t2 := 0 $t3 := 0 $t4 := 1 $t5 := 0 $t6 := 0 %cur_preset[232] := $cur_track $steps := %cur_preset[192+$cur_track] $octave := %cur_preset[206+$cur_track] $semitone := %cur_preset[212+$cur_track] $root_knob := %cur_preset[200+$cur_track] $a := 0 while($a < 16) %pitchdisplay[$a] := %cur_preset[$cur_track*16 + $a] %veldisplay[$a] := %cur_preset[96 + $cur_track*16 + $a] inc($a) end while set_table_steps_shown(%veldisplay,$steps) set_table_steps_shown(%pitchdisplay,$steps) $a := 0 while($a < $steps) if ($a mod 4 = 0) %grid_table[$a] := 2 else %grid_table[$a] := 0 end if inc($a) end while set_table_steps_shown(%grid_table,$steps) select ($root_knob) case 5 set_knob_label($Root_knob,"-3 Oct") case 6 set_knob_label($Root_knob,"-2 Oct") case 7 set_knob_label($Root_knob,"-1 Oct") case 8 set_knob_label($Root_knob,"Note") case 9 set_knob_label($Root_knob,"+1 Oct") case 10 set_knob_label($Root_knob,"+2 Oct") case 11 set_knob_label($Root_knob,"+3 Oct") case 12 to 115 set_knob_label($Root_knob,!note_class[($Root_knob) mod 12]&((($Root_knob)/12)-2)) end select end on on ui_control ($t5) $cur_track := 4 $t1 := 0 $t2 := 0 $t3 := 0 $t4 := 0 $t5 := 1 $t6 := 0 %cur_preset[232] := $cur_track $steps := %cur_preset[192+$cur_track] $octave := %cur_preset[206+$cur_track] $semitone := %cur_preset[212+$cur_track] $root_knob := %cur_preset[200+$cur_track] $a := 0 while($a < 16) %pitchdisplay[$a] := %cur_preset[$cur_track*16 + $a] %veldisplay[$a] := %cur_preset[96 + $cur_track*16 + $a] inc($a) end while set_table_steps_shown(%veldisplay,$steps) set_table_steps_shown(%pitchdisplay,$steps) $a := 0 while($a < $steps) if ($a mod 4 = 0) %grid_table[$a] := 2 else %grid_table[$a] := 0 end if inc($a) end while set_table_steps_shown(%grid_table,$steps) select ($root_knob) case 5 set_knob_label($Root_knob,"-3 Oct") case 6 set_knob_label($Root_knob,"-2 Oct") case 7 set_knob_label($Root_knob,"-1 Oct") case 8 set_knob_label($Root_knob,"Note") case 9 set_knob_label($Root_knob,"+1 Oct") case 10 set_knob_label($Root_knob,"+2 Oct") case 11 set_knob_label($Root_knob,"+3 Oct") case 12 to 115 set_knob_label($Root_knob,!note_class[($Root_knob) mod 12]&((($Root_knob)/12)-2)) end select end on on ui_control ($t6) $cur_track := 5 $t1 := 0 $t2 := 0 $t3 := 0 $t4 := 0 $t5 := 0 $t6 := 1 %cur_preset[232] := $cur_track $steps := %cur_preset[192+$cur_track] $octave := %cur_preset[206+$cur_track] $semitone := %cur_preset[212+$cur_track] $root_knob := %cur_preset[200+$cur_track] $a := 0 while($a < 16) %pitchdisplay[$a] := %cur_preset[$cur_track*16 + $a] %veldisplay[$a] := %cur_preset[96 + $cur_track*16 + $a] inc($a) end while set_table_steps_shown(%veldisplay,$steps) set_table_steps_shown(%pitchdisplay,$steps) $a := 0 while($a < $steps) if ($a mod 4 = 0) %grid_table[$a] := 2 else %grid_table[$a] := 0 end if inc($a) end while set_table_steps_shown(%grid_table,$steps) select ($root_knob) case 5 set_knob_label($Root_knob,"-3 Oct") case 6 set_knob_label($Root_knob,"-2 Oct") case 7 set_knob_label($Root_knob,"-1 Oct") case 8 set_knob_label($Root_knob,"Note") case 9 set_knob_label($Root_knob,"+1 Oct") case 10 set_knob_label($Root_knob,"+2 Oct") case 11 set_knob_label($Root_knob,"+3 Oct") case 12 to 115 set_knob_label($Root_knob,!note_class[($Root_knob) mod 12]&((($Root_knob)/12)-2)) end select end on on ui_control ($mode) select ($mode) case 0 set_knob_label($mode,"Off") if ($last_mode # $mode) $cur_id := 0 $a := 0 while($a < $steps) if ($a mod 4 = 0) %grid_table[$a] := 2 else %grid_table[$a] := 0 end if inc($a) end while end if set_table_steps_shown(%grid_table,$steps) $a := 0 while($a < 128) %KEY_DOWN_OWN[$a] := 0 inc($a) end while $last_note := 0 case 1 set_knob_label($mode,"On") $b := 0 $a := 0 while($a < 128) if (%pressed[$a] # 0) %KEY_DOWN_OWN[$a] := %pressed[$a] inc($b) else %KEY_DOWN_OWN[$a] := 0 end if inc($a) end while {if (($b = 0 and $last_mode = 2) or $last_mode = 0)} if ($last_mode # $mode) $a := 0 $max := 0 $max_note := 0 while($a < 128) if (%KEY_DOWN_OWN[$a] > $max) $max := %KEY_DOWN_OWN[$a] $max_note := $a end if inc($a) end while if ($max = 0) $cur_id := 0 $a := 0 while($a < $steps) if ($a mod 4 = 0) %grid_table[$a] := 2 else %grid_table[$a] := 0 end if inc($a) end while else $cur_id := $max end if {end if} set_table_steps_shown(%grid_table,$steps) $last_note := 0 end if case 2 set_knob_label($mode,"Hold") end select $last_mode := $mode end on on ui_control (%grid_table) $a := 0 while($a < $steps) if ($a mod 4 = 0) %grid_table[$a] := 2 else %grid_table[$a] := 0 end if inc($a) end while set_table_steps_shown(%grid_table,$steps) end on on ui_control ($edit_menu) select($edit_menu) case 4 $a := 0 while($a < 16) %helper2_arr[$a] := %cur_preset[$cur_track*16 + $a] %helper2_arr[16 + $a] := %cur_preset[96+ $cur_track*16 + $a] inc($a) end while %helper2_arr[32] := %cur_preset[192+ $cur_track] %helper2_arr[33] := %cur_preset[200+ $cur_track] %helper2_arr[34] := %cur_preset[206+ $cur_track] %helper2_arr[35] := %cur_preset[212+ $cur_track] %helper2_arr[36] := %cur_preset[218+ $cur_track] %helper2_arr[37] := %cur_preset[224+ $cur_track] case 5 $a := 0 while($a < 16) %cur_preset[$cur_track*16 + $a] := %helper2_arr[$a] %cur_preset[96+ $cur_track*16 + $a] := %helper2_arr[16 + $a] inc($a) end while %cur_preset[192+ $cur_track] := %helper2_arr[32] %cur_preset[200+ $cur_track] := %helper2_arr[33] %cur_preset[206+ $cur_track] := %helper2_arr[34] %cur_preset[212+ $cur_track] := %helper2_arr[35] %cur_preset[218+ $cur_track] := %helper2_arr[36] %cur_preset[224+ $cur_track] := %helper2_arr[37] case 6 $a := 0 while($a < 16) %cur_preset[$cur_track*16 + $a] := %default_preset[$cur_track*16 + $a] %cur_preset[96+ $cur_track*16 + $a] := %default_preset[96+ $cur_track*16 + $a] inc($a) end while %cur_preset[192+ $cur_track] := %default_preset[192+ $cur_track] %cur_preset[200+ $cur_track] := %default_preset[200+ $cur_track] %cur_preset[206+ $cur_track] := %default_preset[206+ $cur_track] %cur_preset[212+ $cur_track] := %default_preset[212+ $cur_track] %cur_preset[218+ $cur_track] := %default_preset[218+ $cur_track] %cur_preset[224+ $cur_track] := %default_preset[224+ $cur_track] end select $cur_track := %cur_preset[232] $a := 0 while($a < 16) %pitchdisplay[$a] := %cur_preset[$cur_track*16 + $a] %veldisplay[$a] := %cur_preset[96 + $cur_track*16 + $a] inc($a) end while $steps := %cur_preset[192+$cur_track] $root_knob := %cur_preset[200+$cur_track] $octave := %cur_preset[206+$cur_track] $semitone := %cur_preset[212+$cur_track] set_table_steps_shown(%veldisplay,$steps) set_table_steps_shown(%pitchdisplay,$steps) select ($root_knob) case 5 set_knob_label($Root_knob,"-3 Oct") case 6 set_knob_label($Root_knob,"-2 Oct") case 7 set_knob_label($Root_knob,"-1 Oct") case 8 set_knob_label($Root_knob,"Note") case 9 set_knob_label($Root_knob,"+1 Oct") case 10 set_knob_label($Root_knob,"+2 Oct") case 11 set_knob_label($Root_knob,"+3 Oct") case 12 to 115 set_knob_label($Root_knob,!note_class[($Root_knob) mod 12]&((($Root_knob)/12)-2)) end select $t1 := 0 $t2 := 0 $t3 := 0 $t4 := 0 $t5 := 0 $t6 := 0 select($cur_track) case 0 $t1 := 1 case 1 $t2 := 1 case 2 $t3 := 1 case 3 $t4 := 1 case 4 $t5 := 1 case 5 $t6 := 1 end select set_table_steps_shown(%grid_table,$steps) $edit_menu := 100 end on on _pgs_changed if(_pgs_key_exists(SEQ_ON_OFF)) $mode := _pgs_get_key_val(SEQ_ON_OFF,0) select ($mode) case 0 set_knob_label($mode,"Off") if ($last_mode # $mode) $cur_id := 0 $a := 0 while($a < $steps) if ($a mod 4 = 0) %grid_table[$a] := 2 else %grid_table[$a] := 0 end if inc($a) end while end if set_table_steps_shown(%grid_table,$steps) $a := 0 while($a < 128) %KEY_DOWN_OWN[$a] := 0 inc($a) end while $last_note := 0 case 1 set_knob_label($mode,"On") $b := 0 $a := 0 while($a < 128) if (%pressed[$a] # 0) %KEY_DOWN_OWN[$a] := %pressed[$a] inc($b) else %KEY_DOWN_OWN[$a] := 0 end if inc($a) end while {if (($b = 0 and $last_mode = 2) or $last_mode = 0)} if ($last_mode # $mode) $a := 0 $max := 0 $max_note := 0 while($a < 128) if (%KEY_DOWN_OWN[$a] > $max) $max := %KEY_DOWN_OWN[$a] $max_note := $a end if inc($a) end while if ($max = 0) $cur_id := 0 $a := 0 while($a < $steps) if ($a mod 4 = 0) %grid_table[$a] := 2 else %grid_table[$a] := 0 end if inc($a) end while else $cur_id := $max end if {end if} set_table_steps_shown(%grid_table,$steps) $last_note := 0 end if case 2 set_knob_label($mode,"Hold") end select $last_mode := $mode end if end on {END OF SCRIPT}