I am trying to replicate the kontakt script "limit keyrange", but with 4 independent voices and ranges... I understand that the problem is in "$EVENT_NOTE" since it modifies the range in the 4 voices... I need to know if there is another way to do it, can you help me?
on note
if ($voice_1 = 1)
if ($learn_keyrange = 1)
if ($learn_counter = 0)
$min_1 := $EVENT_NOTE
inc($learn_counter)
else
$max_1 := $EVENT_NOTE
$learn_counter := 0
$learn_keyrange := 0
if ($min_1 > $max_1)
$a := $max_1
$max_1 := $min_1
$min_1 := $a
end if
end if
ignore_event($EVENT_ID)
exit
end if
if (not in_range($EVENT_NOTE,$min_1,$max_1))
ignore_event($EVENT_ID)
exit
end if
end if
if ($voice_2 = 1)
if ($learn_keyrange = 1)
if ($learn_counter = 0)
$min_2 := $EVENT_NOTE
inc($learn_counter)
else
$max_2 := $EVENT_NOTE
$learn_counter := 0
$learn_keyrange := 0
if ($min_2 > $max_2)
$a := $max_2
$max_2 := $min_2
$min_2 := $a
end if
end if
ignore_event($EVENT_ID)
exit
end if
if (not in_range($EVENT_NOTE,$min_2,$max_2))
ignore_event($EVENT_ID)
exit
end if
end if
if ($voice_3 = 1)
if ($learn_keyrange = 1)
if ($learn_counter = 0)
$min_3 := $EVENT_NOTE
inc($learn_counter)
else
$max_3 := $EVENT_NOTE
$learn_counter := 0
$learn_keyrange := 0
if ($min_3 > $max_3)
$a := $max_3
$max_3 := $min_3
$min_3 := $a
end if
end if
ignore_event($EVENT_ID)
exit
end if
if (not in_range($EVENT_NOTE,$min_3,$max_3))
ignore_event($EVENT_ID)
exit
end if
end if
if ($voice_4 = 1)
if ($learn_keyrange = 1)
if ($learn_counter = 0)
$min_4 := $EVENT_NOTE
inc($learn_counter)
else
$max_4 := $EVENT_NOTE
$learn_counter := 0
$learn_keyrange := 0
if ($min_4 > $max_4)
$a := $max_4
$max_4 := $min_4
$min_4 := $a
end if
end if
ignore_event($EVENT_ID)
exit
end if
if (not in_range($EVENT_NOTE,$min_4,$max_4))
ignore_event($EVENT_ID)
exit
end if
ignore_event ($EVENT_ID)
if ($voice_1 = 1)
$transposition := ($octave_1 * 12) + $semi_1
$transposed_note := $EVENT_NOTE + $transposition
if ($transposed_note < 0)
$transposed_note := 0
end if
if ($transposed_note > 127)
$transposed_note := 127
end if
play_note ($transposed_note, $EVENT_VELOCITY, 0, -1)
end if
if ($voice_2 = 1)
$transposition := ($octave_2 * 12) + $semi_2
$transposed_note := $EVENT_NOTE + $transposition
if ($transposed_note < 0)
$transposed_note := 0
end if
if ($transposed_note > 127)
$transposed_note := 127
end if
play_note ($transposed_note, $EVENT_VELOCITY, 0, -1)
end if
if ($voice_3 = 1)
$transposition := ($octave_3 * 12) + $semi_3
$transposed_note := $EVENT_NOTE + $transposition
if ($transposed_note < 0)
$transposed_note := 0
end if
if ($transposed_note > 127)
$transposed_note := 127
end if
play_note ($transposed_note, $EVENT_VELOCITY, 0, -1)
end if
if ($voice_4 = 1)
$transposition := ($octave_4 * 12) + $semi_4
$transposed_note := $EVENT_NOTE + $transposition
if ($transposed_note < 0)
$transposed_note := 0
end if
if ($transposed_note > 127)
$transposed_note := 127
end if
play_note ($transposed_note, $EVENT_VELOCITY, 0, -1)
end if
end on