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