Introduction and Setup
Document Conventions
Constants and functions in this reference document are described using the following conventions:
constant_name: constant_type function_name(argument_name: argument_type, ...) -> return_type
Optional arguments or return values are marked by a question mark ?
. If a table can be passed as an argument, or is returned by a function, its key-value pairs are described below the function.
Basic Usage
Kontakt Lua API scripts can be executed either from Kontakt's user interface, or passed as a command line argument when running Kontakt from a command line.
In Kontakt's main menu the entry “Run Lua script…” (F11
) opens a file select dialog. In order to run the same script again, press Ctrl+F11
(Cmd+F11
on macOS).
Lua scripts also show up in Kontakt's Files browser and can be executed by a double-click or by dragging and dropping a script onto the rack. Drag and drop is also possible from operating system’s file manager (Finder on macOS or Explorer on Windows).
Kontakt Lua API is designed to cooperate with Kontakt's rack and edit views. Running a script operates on the current state of Kontakt, without resetting it. This allows for utility scripts which can do specific tasks that can be cumbersome to do manually in the edit view. If you need to start with a clean state, simply call Kontakt.reset_multi()
. The constants edit_instrument provide necessary information to retrieve the current context.
In order to start using Kontakt Lua API facilities, please enable Developer Options checkbox in Kontakt’s Options > Developer pane.
Tutorials
Tutorial scripts demonstrating various aspects of Kontakt Lua API are available here. These tutorials contain workflow examples with ample comments to get you up to speed, as well as test samples to support various mapping operations.
Command Line and Debugging
If a filename with the extension .lua
is passed as an argument when opening Kontakt from the command line, the script is executed. The script output is directed to the terminal.
On Windows, a terminal window will open automatically with Kontakt standalone.
On macOS, a terminal window will only open if Kontakt is started from the package. Right-click on
Kontakt 7.app
and select Show Package Contents, then openContents/macOS/Kontakt 7
.
On both platforms, messages from Lua scripts will be visible in the terminal panel of the text editor if Kontakt was launched within the editor. KSP messages, warnings, script errors and variable watching will also be routed to this terminal. However, if Creator Tools is running, all messaging from Kontakt will be redirected to its debugger instead.
This is the recommended workflow. Follow the instructions below for your preferred text editor in order to set this up.
VS Code Setup
Press
Ctrl+Shift+P
(Cmd+Shift+P
on macOS) to open the Command Palette.Search for command Tasks: Open User Tasks, then choose Others from the list.
Paste the text below in the newly created file (replacing everything else), then save.
Back in VS Code, in the main menu go to Terminal > Run Task... and select Kontakt 7 to open the terminal along with Kontakt.
tasks.json
:
{ "version": "2.0.0", "tasks": [ { "label": "Kontakt 7", "type": "shell", "command": "\"/Applications/Native Instruments/Kontakt 7/Kontakt 7.app/Contents/macOS/Kontakt 7\"", "windows": { "command": "\"C:\\Program Files\\Native Instruments\\Kontakt 7\\Kontakt 7.exe\"", "options": { "shell": { "executable": "cmd.exe", "args": ["/d", "/c"] } } }, "args": [], "problemMatcher": [], "presentation": { "echo": true, "reveal": "always", "focus": false, "panel": "shared", "showReuseMessage": true, "clear": true }, } ] }
Sublime Text Setup
Navigate to Tools > Build System > New Build System...
Paste the text below in the newly opened file.
Save this file as
Kontakt.sublime-build
.Navigate to Tools > Build System > Kontakt to execute.
Kontakt.sublime-build (macOS):
{ "shell_cmd": ["\"/Applications/Native Instruments/Kontakt 7/Kontakt 7.app/Contents/macOS/Kontakt 7\"", "$file"], }
Kontakt.sublime-build (Windows):
{ "cmd": ["c:\\Program Files\\Native Instruments\\Kontakt 7\\Kontakt 7.exe", "$file"], }
Note: Sublime Text does not support colored console output. Set colored_output to false in order to disable sending ANSI color codes to output. If the logger is not working, try using cmd
instead of shell_cmd
.
Version History
API Access
Kontakt Lua API is defined in the global table Kontakt
, i.e. all constants and functions need to be prefixed with that name. For example:
Kontakt.reset_multi() -- also works local kt = Kontakt kt.reset_multi()
Errors
All functions potentially fail and print an error message pointing to the line causing the error. The reason is usually an invalid argument. Consider using pcall in order to handle errors.
Modules
It is recommended to move reusable functionality into Lua modules and include them via the require
keyword. Lua's package.path
is initialized with the folder pointing to the script.
Security
Since potentially unsafe libraries e.g. Operating System Facilities are available, it is highly recommended to run scripts or include modules from trusted parties only!
Available Lua Libraries
Standard libraries are documented in the Lua manual.