In this tutorial we will learn how to dynamically change labels and display the knob’s current value for the time the knob gets moved. After releasing the knob the default label shows up again after a certain delay. See video
Also see these more conveniant solutions, using less code
Please accept YouTube cookies to play this video. By accepting you will be accessing content from YouTube, a service provided by an external third party.
If you accept this notice, your choice will be saved and the page will refresh.
It is recommended to follow the User Interface with multiple Screens tutorial first.
Any Questions? Use the comments below
Requirements: no requirements, the script works without sublime text compiling
Unfortunately in Kontakt we can not receive any mouse event like “mouse over”, “on click”, “on release” etc which would have made this pretty easy. So instead of a mouse event, when a knob is tuned the “on ui_control” callback gets called which stubbornly “reels off” our code. On mouse release the “on ui_control” simply is not executed anymore so there’s no possibility to call any function or code on a mouse release. That’s why we have to make up a workaround using a watchdog or time monitoring and time delays.
Content
-
how it works (in simple words)
-
setting ui space, wallpapers & global vars
-
defining the labels for our Images
-
setting variables for the watchdog timer (dynamic labels)
-
defining all the other ui elements
-
The actual watchdog timer function (Dynamic Knob Label’s)
-
full code of all Knobs
Download all files to this tutorial premium
- Open Resource Container: Buttons, Knobs, Wallpapers
- NKI file: the working script
- the script as txt file
Download this UI USING the NEWER CallBack ID method
License:
MIT International License.
https://blog.yummybeats.com/license-text-mit/
You may use this script, modify it, build upon it, as you like (also commercially), as long as you keep all credits within the code visible to others. You may put them into an extra open script tab or inside an about section of your instrument. But you may not hide them. If you would like to remove the credits or publish them somewhere else, please contact us
YOU MAY NOT commercialize, share, distribute, whatsoever the included image files and other media (© 2024 all rights reserved).
Requirements:
no requirements, the script works without sublime text compiling
1. This is how it works (in simple words)
Please accept YouTube cookies to play this video. By accepting you will be accessing content from YouTube, a service provided by an external third party.
If you accept this notice, your choice will be saved and the page will refresh.
- a default label is displaying the knob’s units in words (like dB, Hz, Bits etc)
- while turning a knob, the label “swaps” and displays the knob’s live value now
- a certain wait period prevents the label to fall back to its original state when the knob is still turned
- when releasing the knob this prevention timer runs out and the default label gets restored
2. Setting ui space, wallpapers & global vars
This script is licensed under the MIT license
you must include the full license text & credits above the actual script: visible / accessible to anyone and closely together with the actual script code
(you may also put the license into another, unlocked script tab or into an about section of your instrument). If you want to put the license somewhere else or remove it please contact us
If you don’t know how to include the license, simply download the full script from above. The license is already placed in the right place
on init {INIT UI} set_ui_height_px(540) make_perfview set_script_title("Dyanmic Labels") set_control_par_str($INST_ICON_ID,$CONTROL_PAR_PICTURE,"yb_ico") {DECLARE : Global Vars} declare $count declare const $TOTAL_KNOB_COUNT := 4 {set the total number of knobs in your UI} {SET: WALLPAPERS} declare @wp_init declare @wp_about @wp_init := "bg_main" set_control_par_str($INST_WALLPAPER_ID,$CONTROL_PAR_PICTURE,@wp_init)
First we define the ui area and make it visible outside the script tab (make_perfview). Also we set all global vars. You can read this chapter in detail in the User Interface with multiple Screens tutorial.
3. Defining the labels for our Images
{declare bottom knob label images & text vars} declare @display_val {holds the current knob value on mouse event} declare @lbl_blank @lbl_blank := "lbl_blank" {set blank bg image when turning the knob} declare !arr_lbl_units[4] {declare array which holds allunit images} !arr_lbl_units[0] := "lbl_bits" !arr_lbl_units[1] := "lbl_hz" !arr_lbl_units[2] := "lbl_db" !arr_lbl_units[3] := "lbl_%"
now we define the knob’s default labels which are holding the images showing the knob’s units. For this tutorial we only take a closer look at the LoFi FX, so the knob’s units are: bits (bit crusher), Hz (sampling rate), dB (noise level) and % (noise color). Of course you can use any units you like or even create icons.
We also need a blank image because when the the knob is turned we want to display the knob’s values suplied by the Kontakt engine.
Except the blank image we store all other label images (their filenames) into a string array !arr_lbl_units[]
since it is easier to work with later on.
4. Setting variables for the watchdog timer (dynamic labels)
{SET : Watchdog Timer & dynamic labels} {declare global vars} declare $wait_time := 2000 {ms} declare %arr_timestamp[$TOTAL_KNOB_COUNT] {array which holds the current engine uptime for each knob (in microseconds). Gets refreshed upon each mouse event} declare $wait_flag := 1 $wait_time := $wait_time * 1000 {convert to milliseconds}
here we decalre and prepare alle the variables for our watchdog timer. When a knob is turned the current KSP clock time will be stored into a time stamp array (%arr_timestamp). Thereby each knob uses an individual time stamp.
With the $TOTAL_KNOB_COUNT
constant above we can easily extend that array depending on how many knobs or dynamic labels we are using for our instrument.
The $wait_time
and the $wait_flag
will be explained later
premium content
unlock the full article
including all downloads!
unlock premium content
T
Man these are awesome Tutorials, do you include the photoshop files as well??YummyBeats
Thx! No sorry, currently there's no raw material or templates (except the script) included. But the Kontakt resources are always open, so you can access and analyze any png files (like custom knobs, buttons etc) and maybe learn or utilize some techniques to build and design your own instruments. You know, these tutorials are rather about the scripting not about the graphic design, so the instrument design is always very rudimental and nothing you wanna copy :) But if you are missing some technical templates like for measuring and stuff, let me know.