Limit Keyrange

Options
Eduardo Gamero
Eduardo Gamero Member Posts: 30 Member

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


Comments

  • Eduardo Gamero
    Eduardo Gamero Member Posts: 30 Member
    Options

    I already understood what I was doing wrong... I already corrected it and now it works perfectly... thank you very much anyway.

Back To Top