How to make visible the name of the pasted tune scale in preset menu?

victor6336
victor6336 Member Posts: 1 Member
edited August 2022 in Scripting Workshop

Hi,

I modified the script, so it is possible to store Key position in Preset and show the name of the chosen tuning scale. But the name of tune scale doesn't show after copy-paste procedure. I tried different ways, my attempts were in vain.

How to make visible the name of the pasted tune scale in preset menu?

{***********************************************
Kontakt 4 Factory Library - Microtuning
Author : Native Instruments
Written by: Josef Natterer, Nicki Marinic
Modified: September 11, 2009
*************************************************}

on init
    
    set_script_title("Microtuning")
    
    message("")
    
    declare const $ECO_MODE := 0
    declare const $TUNE_RANGE := 50

    declare $a
    declare $b
    declare %preset_store[288*288]
            make_persistent(%preset_store)
    declare %preset_store_key_knob[288*288]
            make_persistent(%preset_store_key_knob)
declare %preset_store_menu[24*24]
            make_persistent(%preset_store_menu)


    declare %tune_factory[12*12]:= (...
    0,-29,  4, 16,-14, -2,-31,  2, 14,-16, 18,-12, {Pure } ...
    0,  5,  4, -2,-14,-29,-49,  2, 41,  6,-31,-12, {Overtone 16-32}...
    0, 14,  4, -5,  8, -2, 12,  2, 16,  6,  4, 10, {Pythagorean }...
    0,-10,  4, -6,  8, -2,  0,  2, -8,  6, -4, 10, {Pythagorean Middle}...
    0, 14,  4, 18,  8, 22, 12,  2, 16,  6, 20, 10, {Pythagorean Up}...
    0,-24, -7, 10, -14,  3,-21, -3,-27,-10,  7,-17, {Mean Tone 1/4}...
    0,  8,  3,  5, -7,  2,-10, -2,  7, -5,  3, -8, {Silbermann }...
    0,-10, -8, -6,-10, -2,-12, -4, -8,-12, -4, -8, {Werckmeister III}...
    0,-10, -7, -6,-14, -2,-12, -3, -8,-10, -4,-12, {Kirnberger III}...
    0, -6, -4, -4, -8, -2, -8, -2, -4, -6, -4, -8, {Neidhardt I}...
    0, -6, -4, -2, -8,  2, -8, -2, -4, -6,  0,-10, {Valotti } ...
    0,-10, -4, -6, -8, -2,-12, -2, -8, -6, -4, -8) {Young 1 / 6 pC }
    
    declare %helper_tune[12]
    make_persistent(%helper_tune)
    
    {--------UI Elements--------}
    
    declare ui_knob $key_knob(0,11,1)
    make_persistent($key_knob)
    set_control_help ($key_knob,"Key: Sets the first scale degree.")
    _read_persistent_var($key_knob)
    declare ui_label $label (4,1)    
    {set_text ($label, "  C       Db       D       Eb        E        F       Gb       G       Ab       A       Bb       B")}
    
    declare !key_label[12]
    !key_label[0] := "   C    "
    !key_label[1] := "   Db    "
    !key_label[2] := "   D    "
    !key_label[3] := "   Eb    "
    !key_label[4] := "   E     "
    !key_label[5] := "   F    "
    !key_label[6] := "   Gb    "
    !key_label[7] := "   G    "
    !key_label[8] := "   Ab    "
    !key_label[9] := "   A    "
    !key_label[10] := "   Bb    "
    !key_label[11] := "   B    "
    
    set_text ($label,!key_label[(0+$key_knob) mod 12]&""&...
                    !key_label[(1+$key_knob) mod 12]&""&...
                    !key_label[(2+$key_knob) mod 12]&""&...
                    !key_label[(3+$key_knob) mod 12]&""&...
                    !key_label[(4+$key_knob) mod 12]&""&...
                    !key_label[(5+$key_knob) mod 12]&""&...
                    !key_label[(6+$key_knob) mod 12]&""&...
                    !key_label[(7+$key_knob) mod 12]&""&...
                    !key_label[(8+$key_knob) mod 12]&""&...
                    !key_label[(9+$key_knob) mod 12]&""&...
                    !key_label[(10+$key_knob) mod 12]&""&...
                    !key_label[(11+$key_knob) mod 12])
    set_knob_label($key_knob,!key_label[(0+$key_knob) mod 12])
    set_text($key_knob,"Key")
    _read_persistent_var(!key_label)


    declare ui_table %tune_ui[12](4,5,-$TUNE_RANGE)
    make_persistent (%tune_ui)
    set_control_help (%tune_ui,"Tuning Table: Adjust the detuning for each of the twelve notes.")
    
    declare ui_knob $Preset (1,12,1)
    make_persistent ($Preset)
    set_control_help ($Preset,"Preset: Selects a tuning preset. Every change made to the tuning table is immediately written into the current preset location.")
    
    declare ui_menu $preset_menu
    add_menu_item($preset_menu,"Edit ...",100)
    add_menu_item($preset_menu,"--------",99)
    add_menu_item($preset_menu,"Copy Tuning",0)
    add_menu_item($preset_menu,"Paste Tuning",1)
    add_menu_item($preset_menu,"Clear Tuning",2)  
    add_menu_item($preset_menu,"----",99)
    add_menu_item($preset_menu,"Copy curr. Tuning to all Presets",3)
    add_menu_item($preset_menu,"-------------",99)
    add_menu_item($preset_menu,"Pure",4)
    add_menu_item($preset_menu,"Overtone 16-32",5)
    add_menu_item($preset_menu,"Pythagorean",6)
    add_menu_item($preset_menu,"Pythagorean Middle",7)
    add_menu_item($preset_menu,"Pythagorean Up",8)
    add_menu_item($preset_menu,"Mean Tone 1/4",9)
    add_menu_item($preset_menu,"Silbermann",10)
    add_menu_item($preset_menu,"Werkmeister III",11)
    add_menu_item($preset_menu,"Kirnberger III",12)
    add_menu_item($preset_menu,"Neidhardt I",13)
    add_menu_item($preset_menu,"Valotti",14)
    add_menu_item($preset_menu,"Young 1/6 pC",15)
    set_control_help ($preset_menu,"Edit Menu: Choose edit commands and/or factory preset tunings.")
    
    declare ui_knob $Amount (0,100,1)
    $Amount := 100
    set_knob_unit($Amount,$KNOB_UNIT_PERCENT)
    make_persistent($Amount)
    declare $helper_tune
    set_control_help ($Amount,"Amount: Adjusts the amount of the tuning. When set to 100%, each note is tuned to the cent value specified with the table. When set to 0%, no tuning is applied.")

    {---------Layout---------}
    move_control ($Key_knob, 6,2)
    move_control ($label, 2,1)
    move_control (%tune_ui, 2,2)
    move_control ($Preset, 1,3)
    move_control ($Preset_menu, 1,5)
    move_control ($Amount, 6,4)
end on

on note
    if ($ECO_MODE = 1)
        $helper_tune := (%tune_ui[($EVENT_NOTE + 12 - $key_knob) mod 12]*1000*$Amount)/100
        change_tune($EVENT_ID,$helper_tune,0)
    else
        while($NOTE_HELD= 1)
            $helper_tune := (%tune_ui[($EVENT_NOTE + 12 - $key_knob) mod 12]*1000*$Amount)/100
            change_tune($EVENT_ID,$helper_tune,0)
            wait(15000)
        end while
    end if
end on

on ui_control(%tune_ui)
    $a := 0
    while($a < 12)
    %preset_store[($Preset-1)*12+$a] := %tune_ui[$a] {righ code}
    %preset_store_key_knob[(($Preset-1)*12+$a)+%tune_ui[$a]]:= $key_knob
    set_text ($label,!key_label[(0+$key_knob) mod 12]&""&...
    !key_label[(1+$key_knob) mod 12]&""&...
    !key_label[(2+$key_knob) mod 12]&""&...
    !key_label[(3+$key_knob) mod 12]&""&...
    !key_label[(4+$key_knob) mod 12]&""&...
    !key_label[(5+$key_knob) mod 12]&""&...
    !key_label[(6+$key_knob) mod 12]&""&...
    !key_label[(7+$key_knob) mod 12]&""&...
    !key_label[(8+$key_knob) mod 12]&""&...
    !key_label[(9+$key_knob) mod 12]&""&...
    !key_label[(10+$key_knob) mod 12]&""&...
    !key_label[(11+$key_knob) mod 12])
    set_knob_label($key_knob,!key_label[(0+$key_knob) mod 12])
        message( "%tune_ui" & %preset_store_key_knob[($Preset-1)*12+$a])
        inc($a)
    end while
end on



on ui_control ($preset_menu)
    if ($preset_menu < 99)
        select($preset_menu)
            
            {copy}
            case 0
                $a := 0
                while($a < 12)
                    %helper_tune[$a] := %tune_ui[$a]
                    inc($a)
                end while
                
                {paste}
            case 1
                $a := 0
                while($a < 12)
                    %tune_ui[$a] := %helper_tune[$a]
                    %preset_store[($Preset-1)*12+$a] := %tune_ui[$a]
                    inc($a)
                end while
            case 2
                {clear tuning}
                $a := 0
                while($a < 12)
                    %tune_ui[$a] := 0
                    $key_knob :=0
                    %preset_store[($Preset-1)*12+$a] := 0
                     %preset_store_key_knob[($Preset-1)*12+$a] :=    0
                    
                     set_text ($label,!key_label[(0+$key_knob) mod 12]&""&...
    !key_label[(1+$key_knob) mod 12]&""&...
    !key_label[(2+$key_knob) mod 12]&""&...
    !key_label[(3+$key_knob) mod 12]&""&...
    !key_label[(4+$key_knob) mod 12]&""&...
    !key_label[(5+$key_knob) mod 12]&""&...
    !key_label[(6+$key_knob) mod 12]&""&...
    !key_label[(7+$key_knob) mod 12]&""&...
    !key_label[(8+$key_knob) mod 12]&""&...
    !key_label[(9+$key_knob) mod 12]&""&...
    !key_label[(10+$key_knob) mod 12]&""&...
    !key_label[(11+$key_knob) mod 12])
    set_knob_label($key_knob,!key_label[(0+$key_knob) mod 12])
                    inc($a)
                end while
            case 3
                {Copy curr tuning to all presets}
                $b := 0
                while($b < 12)
                    $a := 0
                    while($a < 12)
                        %preset_store[$b*12+$a] := %tune_ui[$a]
                        %preset_store_key_knob[($b*12+$a)+(%tune_ui[$a])] := $key_knob
                        inc($a)
                    end while
                    inc($b)
                end while


            case 4 to 15
                {Tuning systems}
                $a := 0
                while($a < 12)
                        %preset_store[($Preset)*12+$a] := %tune_ui[$a]    
                        %preset_store_key_knob[($Preset)*12+$a] := $key_knob    
                        %tune_ui[$a] := %tune_factory[(($preset_menu-4)*12 + $a)]

                    set_text ($label,!key_label[(0+$key_knob) mod 12]&""&...
    !key_label[(1+$key_knob) mod 12]&""&...
    !key_label[(2+$key_knob) mod 12]&""&...
    !key_label[(3+$key_knob) mod 12]&""&...
    !key_label[(4+$key_knob) mod 12]&""&...
    !key_label[(5+$key_knob) mod 12]&""&...
    !key_label[(6+$key_knob) mod 12]&""&...
    !key_label[(7+$key_knob) mod 12]&""&...
    !key_label[(8+$key_knob) mod 12]&""&...
    !key_label[(9+$key_knob) mod 12]&""&...
    !key_label[(10+$key_knob) mod 12]&""&...
    !key_label[(11+$key_knob) mod 12])
    set_knob_label($key_knob,!key_label[(0+$key_knob) mod 12])
                    inc($a)
                end while
        end select
    end if
    $preset_menu := 100
end on

on ui_control ($Preset)
    $a := 0
    while($a < 12)
        %tune_ui[$a] := %preset_store[($Preset-1)*12+$a]
        %tune_factory[(($preset_menu-4)*12 + $a)] := %tune_ui[$a]
        $key_knob:= %preset_store_key_knob[(($Preset-1)*12+$a)+%tune_ui[$a]]
            message( "$Preset" & $Preset & %tune_ui[$a]  & !key_label [$key_knob] & $key_knob)  
set_text ($label,!key_label[(0+$key_knob) mod 12]&""&...
    !key_label[(1+$key_knob) mod 12]&""&...
    !key_label[(2+$key_knob) mod 12]&""&...
    !key_label[(3+$key_knob) mod 12]&""&...
    !key_label[(4+$key_knob) mod 12]&""&...
    !key_label[(5+$key_knob) mod 12]&""&...
    !key_label[(6+$key_knob) mod 12]&""&...
    !key_label[(7+$key_knob) mod 12]&""&...
    !key_label[(8+$key_knob) mod 12]&""&...
    !key_label[(9+$key_knob) mod 12]&""&...
    !key_label[(10+$key_knob) mod 12]&""&...
    !key_label[(11+$key_knob) mod 12])
    set_knob_label($key_knob,!key_label[(0+$key_knob) mod 12])
        inc($a)
    end while
end on



on ui_control ($key_knob)
    $a := 0
    while($a < 12)
                %preset_store[($Preset-1)*12+$a] := %tune_ui[$a]
                %preset_store_key_knob[(($Preset-1)*12+$a)+%tune_ui[$a]] := $key_knob
set_text ($label,!key_label[(0+$key_knob) mod 12]&""&...
    !key_label[(1+$key_knob) mod 12]&""&...
    !key_label[(2+$key_knob) mod 12]&""&...
    !key_label[(3+$key_knob) mod 12]&""&...
    !key_label[(4+$key_knob) mod 12]&""&...
    !key_label[(5+$key_knob) mod 12]&""&...
    !key_label[(6+$key_knob) mod 12]&""&...
    !key_label[(7+$key_knob) mod 12]&""&...
    !key_label[(8+$key_knob) mod 12]&""&...
    !key_label[(9+$key_knob) mod 12]&""&...
    !key_label[(10+$key_knob) mod 12]&""&...
    !key_label[(11+$key_knob) mod 12])
    set_knob_label($key_knob,!key_label[(0+$key_knob) mod 12])
        message("$key_knob" & $key_knob)
        inc($a)
    end while
    end on


Back To Top