# Help me learn scripting :)



## Scripter (Nov 28, 2021)

Hey I'm a complete Newbie to Kontakt Scripting (started out today), but have the dream of my first own Instrument. Therefore I need your help. So in this Thread I will post Questions, and hope that someone answers. 

So what have I done already? I scripted a basic Kontakt Userinterface with 2 Pages and 1 Slider on it. Unfortunately I don't know how to give the Menu Buttons (NavButton1 and NavButton2) a other "Skin"/look. So that will be my first question. How can I do that?

Best regards 



*Here is the code I have so far:*


on init
{Legt ein Icon fuer die Samplelibrary fest.}
set_control_par_str($INST_ICON_ID,$CONTROL_PAR_PICTURE,"BLANK_ICON")
{Legt das Hintergrundbild fuer den Performance View fest. Das Bild sollte 632x350px sein.}
set_control_par_str($INST_WALLPAPER_ID,$CONTROL_PAR_PICTURE,"Template_Skin")


{Erstellt den Performance View. Benutzt dazu die nckp-Datei welche z.B. mit Creatortools erstellt
werden kann. Die Datei muss unter resources - performance_view vom jeweiligen Instrument 
abgespeichert werden.}
load_performance_view("perfview.nckp")

{Legt die Hoehe und Breite vom gesamten Performance View fest.}
set_ui_height_px(350) 
set_ui_width_px(632)



{-----------------------------------------------------------------------------------------------}
{Verschiedene Userinterface:}


{Definiert ein neues Element. In diesem Fall das 1. Userinterface.} 
declare ui_panel $myPanel1_1 
{Definiert ein neues Element. In diesem Fall das 2. Userinterface.} 
declare ui_panel $myPanel1_2

{Macht das Userinterface 1&2 ($mypanel1_1 & $mypanel1_2) unsichtbar.}
set_control_par(get_ui_id($myPanel1_1),$CONTROL_PAR_HIDE,$HIDE_WHOLE_CONTROL)
set_control_par(get_ui_id($myPanel1_2),$CONTROL_PAR_HIDE,$HIDE_WHOLE_CONTROL)


{***********************************************************************************************}
{Verschiedene Elemente auf dem Userinterface (muessen mit umgeschaltet werden koennen):}

{Definiert ein neues Element. In diesem Fall einen Slider.} 
declare ui_slider $mySlider(0,1000000)
{Legt fest das sich der Slider auf dem 1. Userinterface namens $myPanel1_1 befinden soll.}
set_control_par(get_ui_id($mySlider), $CONTROL_PAR_PARENT_PANEL, get_ui_id($myPanel1_1))
{Legt fest wo sich der Slider auf dem 1. Userinterface namens $myPanel1_1 befinden soll.}
move_control_px($mySlider,300,180)
{Ordnet dem Slider ein Bild zu.}
declare $mySliderId 
$mySliderId := get_ui_id($mySlider)
set_control_par_str($mySliderId, $CONTROL_PAR_PICTURE, "ARC_KNOB")
{Sorgt dafuer das sich der Slider mit der Maus nach oben bewegen laesst.}
set_control_par($mySliderId, $CONTROL_PAR_MOUSE_BEHAVIOUR, -2000)

{***********************************************************************************************}



{Definiert zwei Schalter und deren Position, Aussehen um die Userinterfaces 1&2 umzuschalten.}
declare ui_button $NavButton1
move_control_px($NavButton1,50,320)

declare ui_button $NavButton2
move_control_px($NavButton2,150,320)


end on

{Legt fest welches Userinterface bei welchem Button sichtbar/unsichtbar ist. In dem Fall wird
Userinterface 2 ($mypanel1_2) beim duecken von Schalter 1 ($NavButton1) unsichtbar gemacht.}
on ui_control ($NavButton1)
set_control_par(get_ui_id($myPanel1_1),$CONTROL_PAR_HIDE,$HIDE_PART_NOTHING)
set_control_par(get_ui_id($myPanel1_2),$CONTROL_PAR_HIDE,$HIDE_WHOLE_CONTROL)
$NavButton2 := 0

end on


{Legt fest welches Userinterface bei welchem Button sichtbar/unsichtbar ist. In dem Fall wird
Userinterface 1 ($mypanel1_2) beim duecken von Schalter 2 ($NavButton1) unsichtbar gemacht.}
on ui_control ($NavButton2)
set_control_par(get_ui_id($myPanel1_2),$CONTROL_PAR_HIDE,$HIDE_PART_NOTHING)
set_control_par(get_ui_id($myPanel1_1),$CONTROL_PAR_HIDE,$HIDE_WHOLE_CONTROL)
$NavButton1 := 0

end on


----------



## berto (Nov 28, 2021)

basically on the first nav button's action (on ui_control) use set_skin_offset(0)
and on the second nav button's set_skin_offset(350)
then in photoshop(or else) you double the height of the GUI and the bottom part will be the skin of your second page...hope it's clear


----------



## Scripter (Nov 28, 2021)

berto said:


> basically on the first nav button's action (on ui_control) use set_skin_offset(0)
> and on the second nav button's set_skin_offset(350)
> then in photoshop(or else) you double the height of the GUI and the bottom part will be the skin of your second page...hope it's clear


Not really. I tought I first have to define which picture of a button it should use? And what does skin_offset do? Looks to me like something that just scrolls a wallpaper, right?

I basically want to have a wallpaper that is always there and i just want the NavButtons on the bottom to have a different "Skin" (So a picture I want to applie)


----------



## neblix (Nov 28, 2021)

You have to have the two wallpapers stacked together in one image. The skin offset is to specify the scroll height of your wallpaper.

If you are asking how to actually change the image file of the wallpaper, it is not possible. It's a design flaw of Kontakt it doesn't seem they are ever going to fix. The `set_skin_offset()` technique is what all of us developers use to "change" the wallpaper, by putting all of our wallpapers into a single image.

So if you have two wallpapers of height 350px stacked vertically in an image (700px height total), `set_skin_offset(0)` would show the first image, and `set_skin_offset(350)` shows the second one.


----------



## Scripter (Nov 29, 2021)

neblix said:


> You have to have the two wallpapers stacked together in one image. The skin offset is to specify the scroll height of your wallpaper.
> 
> If you are asking how to actually change the image file of the wallpaper, it is not possible. It's a design flaw of Kontakt it doesn't seem they are ever going to fix. The `set_skin_offset()` technique is what all of us developers use to "change" the wallpaper, by putting all of our wallpapers into a single image.
> 
> So if you have two wallpapers of height 350px stacked vertically in an image (700px height total), `set_skin_offset(0)` would show the first image, and `set_skin_offset(350)` shows the second one.


Ok now I understand what `set skin offset`and yes this trick seems to be really handy and I definitly going to use that later. But actually with my question i didn't want to change the wallpaper, but just give the two buttons a texture. Normally i thought that this should work like with texturing knobs?


----------



## Scripter (Nov 29, 2021)

Scripter said:


> Ok now I understand what `set skin offset`and yes this trick seems to be really handy and I definitly going to use that later. But actually with my question i didn't want to change the wallpaper, but just give the two buttons a texture. Normally i thought that this should work like with texturing knobs?


Ok I've done this:

declare ui_button $NavButton1
move_control_px($NavButton1,50,320)
declare $NavButton1Id 
$NavButton1Id := get_ui_id($NavButton1)
set_control_par_str($NavButton1Id, $CONTROL_PAR_PICTURE, "Button")

But the Picture seems buggy. Also is there a option to resize it and to remove the name of the buttons (so that it doesn't says NavButton1, NavButton2 ... but only shows the picture? (For better understanding of what I mean, I attached a picture below.)

Thanks for helping me out.


----------



## berto (Nov 29, 2021)

the button has 6 different states.
The first is OFF state, the second is ON state. The other states are not really important unless you want to have hovering fx. So in photoshop you do 6 images stacked vertically, OFF ON OFF ON OFF ON (really only 2 copied three times) then in the little TXT files associated with the picture in the resource folder you will have to specified it has 6 animations ( it is a button)


----------



## Scripter (Nov 29, 2021)

berto said:


> the button has 6 different states.
> The first is OFF state, the second is ON state. The other states are not really important unless you want to have hovering fx. So in photoshop you do 6 images stacked vertically, OFF ON OFF ON OFF ON (really only 2 copied three times) then in the little TXT files associated with the picture in the resource folder you will have to specified it has 6 animations ( it is a button)


Thank you that worked. 

Another question... do you know how to hide the background of a XY-Pad, so that only the cursor stays visible?


----------



## berto (Nov 29, 2021)

Check hide_part in the KSP manual there are slot of options for each control


----------



## Scripter (Nov 29, 2021)

Actually found it meanwhile but thanks.


----------



## Scripter (Nov 29, 2021)

berto said:


> Check hide_part in the KSP manual there are slot of options for each control


Also another question for what is make_persistent used? What does it and when to use it? In tutorials i see this all the time but haven't figured out why. To me it seems to do nothing to the interface or parameters.


----------



## neblix (Nov 29, 2021)

Make_persistent means when you save and load snapshots (or the NKI itself), the parameters will be restored to their last position that you had set.

If you don't do this, every time you load the instrument, all the parameters will be reset.


----------



## Scripter (Nov 30, 2021)

neblix said:


> Make_persistent means when you save and load snapshots (or the NKI itself), the parameters will be restored to their last position that you had set.
> 
> If you don't do this, every time you load the instrument, all the parameters will be reset.


So as i understand that i have to make all variables persistent? Right?


----------



## d.healey (Nov 30, 2021)

Scripter said:


> i have to make all variables persistent


No. Only variables that you want to retain their value between reloads.


----------



## berto (Nov 30, 2021)

Scripter said:


> So as i understand that i have to make all variables persistent? Right?


another use of persistent is :
say you have a control:
declare ui_slider $knob (0,1000000)
and a label:
declare ui_label $knob_value (1,1)
and you want to have the value of the knob displayed when you load the instrument
you have to write:
make_persistent ($knob) {so the value is retained at load}
read_persistent_var($knob) {so ksp reads the value at load}
set_text($knob_value,$knob) so the value is displayed

in sublime it would be faster by doing:
declare ui_label $knob_value (1,1)
declare read ui_slider $knob (0,1000000)
set_text($knob_value,$knob)


----------



## EvilDragon (Nov 30, 2021)

Better way still is just not using read_persistent_var() and just do the set_text() in persistence_changed callback, not in init.


----------



## Scripter (Dec 1, 2021)

Thanks, another question according to the XY-Pad.
I made it so that the Y changes the Output of the Reverb Send FX and it works fine, but the values go from -inf db to -3.3db.
How can I define that it should go from lets say -55db to -5db?

_on ui_control (?myXY)_
_{Effekt an der X-Achse.}
set_engine_par($ENGINE_PAR_PAN,real_to_int(?myXY[0] * 1000000.0), 0,0,-1) {Letzte 1
= Insert Effekt}

{Effekt an der Y-Achse.}
set_engine_par($ENGINE_PAR_SEND_EFFECT_OUTPUT_GAIN,real_to_int(?myXY[1] * 350000.0), -1,0,0){Letzte 0_
_ =Send Effekt}_


----------



## Scripter (Dec 1, 2021)

Also another issue i have. When I change the values of the slider to be (0,20000) which should correspond with the Hz of the low cut the low cut doesn't move anymore and I don't know why. If the values are (0,1000000) the Low Cut moves but the values aren't displayed correctly anymore on the ui_label. It's then 0-1000000Hz which is not what I want.


Here the Code:


{Definiert ein neues Element. In diesem Fall einen Slider.} 
declare ui_slider $Slider1_1(0,1000000)
{Legt fest das sich der Slider auf dem 1. Userinterface namens $myPanel1_1 befinden soll.}
set_control_par(get_ui_id($Slider1_1), $CONTROL_PAR_PARENT_PANEL, get_ui_id($myPanel1_1))
{Legt fest wo sich der Slider auf dem 1. Userinterface namens $myPanel1_1 befinden soll.}
move_control_px($Slider1_1,300,180)
{Ordnet dem Slider ein Bild zu.}
declare $Slider1_1Id 
$Slider1_1Id := get_ui_id($Slider1_1)
set_control_par_str($Slider1_1Id, $CONTROL_PAR_PICTURE, "ARC_KNOB")
{Sorgt dafuer das sich der Slider mit der Maus nach oben bewegen laesst.}
set_control_par($Slider1_1Id, $CONTROL_PAR_MOUSE_BEHAVIOUR, -2000)
{Definiert das Label fuer den Schalter.}
declare ui_label $SLlabel1_1(1,1)
{Definiert eine Beschriftung fuer den Schalter mit der Hoehe und Breite z.B. (1,1).}
set_text($SLlabel1_1,"Label")
{Verschiebt die Beschriftung des Labels.}
move_control_px($SLlabel1_1,300,225)
{Legt fest das sich das Label auf dem 1. Userinterface namens $myPanel1_1 befinden soll.}
set_control_par(get_ui_id($SLlabel1_1), $CONTROL_PAR_PARENT_PANEL, get_ui_id($myPanel1_1))
{Macht den Hintergrund des Labels unsichtbar.}
set_control_par(get_ui_id($SLlabel1_1),$CONTROL_PAR_HIDE,$HIDE_PART_BG)



on ui_control($Slider1_1)
set_engine_par($ENGINE_PAR_CUTOFF, $Slider1_1, -1,0,1)

{Steigert den Wert des Labels immer um 1.}
inc(%Timer[1])
{Nimmt den aktuellen Sliderwert und fuegt ihm eine Einheit als Text hinzu.}
set_text($SLlabel1_1,$Slider1_1 & " Hz")

{Hier muss der richtige Wert von Slider geaendert werden (Script einfuegen). 
z.B. set_engine_par($ENGINE_PAR_VOLUME)}

{Zaehlt die festgelegte Zeit runter.}
wait($UIWaitTime)
dec(%Timer[1])
{Setzt den Text des Labels wieder auf Standart sobald der Timer abgelaufen ist.}
if (%Timer[1] = 0)
set_text($SLlabel1_1, "Label")
end if
end on




*Thanks for helping me so much. *


----------



## Scripter (Dec 1, 2021)

Scripter said:


> Also another issue i have. When I change the values of the slider to be (0,20000) which should correspond with the Hz of the low cut the low cut doesn't move anymore and I don't know why. If the values are (0,1000000) the Low Cut moves but the values aren't displayed correctly anymore on the ui_label. It's then 0-1000000Hz which is not what I want.
> 
> 
> Here the Code:
> ...


*Actually found a solution:*

{Definiert ein neues Element. In diesem Fall einen Slider.} 
declare ui_slider $Slider1_1(0,1000000)
{Legt fest das sich der Slider auf dem 1. Userinterface namens $myPanel1_1 befinden soll.}
set_control_par(get_ui_id($Slider1_1), $CONTROL_PAR_PARENT_PANEL, get_ui_id($myPanel1_1))
{Legt fest wo sich der Slider auf dem 1. Userinterface namens $myPanel1_1 befinden soll.}
move_control_px($Slider1_1,300,180)
{Ordnet dem Slider ein Bild zu.}
declare $Slider1_1Id 
$Slider1_1Id := get_ui_id($Slider1_1)
set_control_par_str($Slider1_1Id, $CONTROL_PAR_PICTURE, "ARC_KNOB")
{Sorgt dafuer das sich der Slider mit der Maus nach oben bewegen laesst.}
set_control_par($Slider1_1Id, $CONTROL_PAR_MOUSE_BEHAVIOUR, -2000)
{Definiert das Label fuer den Schalter.}
declare ui_label $SLlabel1_1(1,1)
{Definiert eine Beschriftung fuer den Schalter mit der Hoehe und Breite z.B. (1,1).}
set_text($SLlabel1_1,"Label")
{Verschiebt die Beschriftung des Labels.}
move_control_px($SLlabel1_1,300,225)
{Legt fest das sich das Label auf dem 1. Userinterface namens $myPanel1_1 befinden soll.}
set_control_par(get_ui_id($SLlabel1_1), $CONTROL_PAR_PARENT_PANEL, get_ui_id($myPanel1_1))
{Macht den Hintergrund des Labels unsichtbar.}
set_control_par(get_ui_id($SLlabel1_1),$CONTROL_PAR_HIDE,$HIDE_PART_BG)


*Adding this is the Solution:*
$Slider1_1Id := get_ui_id ($Slider1_1)
set_control_par ($Slider1_1Id,$CONTROL_PAR_DEFAULT_VALUE,630859)
$Slider1_1 := get_engine_par ($ENGINE_PAR_THRESHOLD,-1,0,1)
set_control_par_str ($Slider1_1Id,$CONTROL_PAR_LABEL,...
get_engine_par_disp($ENGINE_PAR_THRESHOLD,-1,0,1) & " dB")

set_text ($SLlabel1_1,get_engine_par_disp($ENGINE_PAR_THRESHOLD,-1,0,1) & " dB")


*+ this:*
on ui_control($Slider1_1)
set_engine_par($ENGINE_PAR_THRESHOLD,$Slider1_1,-1,0,1)
set_control_par_str ($Slider1_1Id,$CONTROL_PAR_LABEL,...
get_engine_par_disp($ENGINE_PAR_THRESHOLD,-1,0,1) & " dB")
set_text ($SLlabel1_1,get_engine_par_disp($ENGINE_PAR_THRESHOLD,-1,0,1) & " dB")

{Steigert den Wert des Labels immer um 1.}
inc(%Timer[1])

{Hier muss der richtige Wert von Slider geaendert werden (Script einfuegen). 
z.B. set_engine_par($ENGINE_PAR_VOLUME)}

{Zaehlt die festgelegte Zeit runter.}
wait($UIWaitTime)
dec(%Timer[1])
{Setzt den Text des Labels wieder auf Standart sobald der Timer abgelaufen ist.}
if (%Timer[1] = 0)
set_text($SLlabel1_1, "Label")
end if
end on


----------



## Scripter (Dec 2, 2021)

EvilDragon said:


> Better way still is just not using read_persistent_var() and just do the set_text() in persistence_changed callback, not in init.


Another Question: Is there any possibility to let play samples of two different groups at the same time?
So like when you press one key it plays Sample 1 in Group 1 and Sample 2 in Group 2?


----------



## EvilDragon (Dec 3, 2021)

Yes, you would use play_note() two times, and store each one to a variable to get the event ID, which you can then use to set_event_par_arr(<event-ID>, $EVENT_PAR_ALLOW_GROUP, <value>, <group-idx>).


----------



## Scripter (Dec 3, 2021)

EvilDragon said:


> Yes, you would use play_note() two times, and store each one to a variable to get the event ID, which you can then use to set_event_par_arr(<event-ID>, $EVENT_PAR_ALLOW_GROUP, <value>, <group-idx>).


Ok thanks is there any example on how to do that? Have ist to ne different variables for each play Note()?


----------



## berto (Dec 3, 2021)

Scripter said:


> Another Question: Is there any possibility to let play samples of two different groups at the same time?
> So like when you press one key it plays Sample 1 in Group 1 and Sample 2 in Group 2?


if both groups need to play the same notes..
and 
if you don't use any allow_group code it will always play all groups that are loaded....

if you want to play 2 specific groups only (ex: group 22 and 32) only just do this:

on note
disallow_group(ALL_GROUPS)
allow_group(22)
allow_group(32)
end on

if you want to be able to select the groups to play and change them, just do 2 menus that contain all the available groups like:

declare ui_menu $layer1
declare ui_menu $layer2
i:=0
while(i<NUM_GROUPS)
add_menu_items($layer1,group_name(i),i)
add_menu_items($layer2,group_name(i),i)
inc(i)
end while

and then :

on note
disallow_group(ALL_GROUPS)
allow_group( $layer1)
allow_group( $layer2)
end on


----------



## Lindon (Dec 3, 2021)

Scripter said:


> Another Question: Is there any possibility to let play samples of two different groups at the same time?
> So like when you press one key it plays Sample 1 in Group 1 and Sample 2 in Group 2?


of course, just load both groups.


----------



## Scripter (Dec 3, 2021)

berto said:


> if both groups need to play the same notes..
> and
> if you don't use any allow_group code it will always play all groups that are loaded....
> 
> ...


Hey thank you very much, would have taking me some hours for sure to figure that out. The 3rd approach is the nearest to what I'm aiming for. I want to have kind of Drop Down menus to control which groups are played when you hit one key. Do I have to define every group with add_menu_items ? Or is there a better way to do this?


So this would be my code to add the drop down menus:
How can I make it that per drop down menu 1 group is triggered and than both play when you press a key?

on init



declare $i 
declare ui_menu $menu1
declare ui_menu $menu2

declare const $LAYER1_FIRST := 0
declare const $LAYER1_LAST := 1
declare const $LAYER2_FIRST := 2
declare const $LAYER2_LAST := 3


$i := $LAYER1_FIRST
while ($i<=$LAYER1_LAST)
add_menu_item($menu1,group_name($i),$i)
inc($i)
end while



$i:= $LAYER2_FIRST
while ($i<=$LAYER2_LAST)
add_menu_item($menu2,group_name($i),$i)
inc($i)
end while


end on


----------



## berto (Dec 3, 2021)

Scripter said:


> Do I have to define every group with add_menu_items ? Or is there a better way to do this?
> 
> 
> 
> How can I make it that per drop down menu 1 group is triggered and than both play when you press a key?


not sure i understand your question...


in this:
i:=0
while(i<NUM_GROUPS)
add_menu_items($layer1,group_name(i),i)
add_menu_items($layer2,group_name(i),i)
inc(i)
end while

the group_name refers to the name you write on each group and NUM_GROUPS is the total amount of groups you have
in my example i used add_menu_items in a while loop and both menus will be able to load all the groups (you would have to do a little trick to not load the same group in both, it would not work properly)
if you had 10 menus for ten layers at once, you could still use only one while loop to add all the groups names to each menu , i only used 2 menus...


the allow_group code i pasted is the one to use to permit the chosen groups to play

on note
disallow_group(ALL_GROUPS)
allow_group( $layer1)
allow_group( $layer2)
end on

when you select a different group in layer_1 menu, the value will be carried out in the layer_1 variable in allow_group, so it will allow the chosen group...

but on ui_control( $layer1)

you will have to purge (unload) all samples and then load only the chosen ones by the menu,

on ui_control( $layer1)
i:=0
while(i<NUM_GROUPS)
purge_group(i,0) {this purge all groups}
inc(i)
end while
purge_group($layer1) {this will re-load layer 1 samples}
purge_group($layer2) {this will re-load layer 2 samples}
end on 

and the same on layer2 control


----------



## Scripter (Dec 3, 2021)

berto said:


> not sure i understand your question...
> 
> 
> in this:
> ...


Hey thank you so much for the detailed comments helps me really to understand whats going on. What I'm basically going for is a kind of preset browser like you find in in Native Instruments Analog Dreams 2.0 or Pharlight, Straylight and so on. So at the end i want to be able to choose two different sounds to mix between /manipulate. 

Also on question according to the code you already sent - I'm getting error messages with the "i" is it meant to be a variable ($i) or something like that?

Thanks so much for helping me, it really makes my coding journey enjoyfull cause I know I can get help when I'm stuck again. :D Of course also thanks to all others helping me.


----------



## berto (Dec 4, 2021)

if you use sublime text all the variables will be compiled correctly so out of speed i almost never use $ % etc... so yes you would have to declare $i


----------



## Scripter (Dec 6, 2021)

berto said:


> if you use sublime text all the variables will be compiled correctly so out of speed i almost never use $ % etc... so yes you would have to declare $i


Ok thanks. Also another question is there any way to "highlight" buttons when hovering over them with the mouse?


----------



## GNP (Dec 6, 2021)

Thanks for this - helps music makers alot!


----------



## berto (Dec 6, 2021)

Scripter said:


> Ok thanks. Also another question is there any way to "highlight" buttons when hovering over them with the mouse?


Try to do different shading on the six images of a button in photoshop and check the results


----------



## Scripter (Dec 8, 2021)

berto said:


> Try to do different shading on the six images of a button in photoshop and check the results


Ok done this. How can I trigger that picture of the button when mouseover?


----------



## geronimo (Dec 8, 2021)

This page will help you greatly _









Kontakt Scripting (KSP) :: Custom UI :: Button Animations (on, off, pressed, mouse over states) - Kontakt 6, User Interface


in this tutorial we will create "animated" buttons for Kontakt 5 or 6 with the following states: off on pressed off pressed on mouse hover off mouse hover on Download all files to this tutorial Open Resource Container: Buttons, Wallpaper NKI file: the working script CONTENT creating th ...




blog.yummybeats.com


----------



## Scripter (Dec 22, 2021)

Hey I created a waveform control. Is there a way to move the position of it in pixels?


----------



## geronimo (Dec 22, 2021)

Yes, it's possible ...









Solved - Waveform size in GUI


Hello, i scripted a waveform view: declare ui_waveform $my_waveform(5,6) {create waveform view} but when i want to move it in the performance view:...




www.native-instruments.com


----------



## Scripter (Dec 23, 2021)

geronimo said:


> Yes, it's possible ...
> 
> 
> 
> ...


Thank you that really helped. Now I wanted to make several buttons to select the right zones, is this possible? I don't want a selector menu cause they look a little ugly. XD


----------



## Scripter (Dec 28, 2021)

Hey I need some help again: I have multiple groups and I want to creat buttons (previous and next) with which you can select the next or previous group. Anyone knows how to do that whitout having to use a ui_menu?
I just want to be able to for example select the next group and unload or mute all the non selected ones. 
Anyone can help me with that? 
Thanks.


----------



## geronimo (Dec 28, 2021)

Found with the forums search engine; when you don't know, this method with the right keywords will become your friend.









Solved - Previous/Next Button in Menu


Please don´t laugh about the following, I´m fairly new to scripting :) I have created a dropdown menu that lets me choose all the groups of the...




www.native-instruments.com


----------



## Scripter (Dec 29, 2021)

geronimo said:


> Found with the forums search engine; when you don't know, this method with the right keywords will become your friend.
> 
> 
> 
> ...


I already know this post, but it's not what I'm searching for. Of course I want to control my groups but without creating a ui_menu. Just to clarify that again.
I just want to be able to have 2 Buttons Previous and Next with which I can cycle trough the groups. But I dont want a ui_menu where you can select specific groups.


----------



## geronimo (Dec 29, 2021)

Yes, I understand: but you can take inspiration from this data by deleting the menu and thus achieve what you want..


----------



## Scripter (Dec 29, 2021)

geronimo said:


> Yes, I understand: but you can take inspiration from this data by deleting the menu and thus achieve what you want..


Of course but as I'm really a newbie I don't get it to work as I want to. Thats the reason I ask here in the hope that someone can tell me what I could do and why it works this way. 
Also thanks for your afford.:D


----------

