PNS CUSTOMIZABLE SKIN
Blue Cat Audio has released a great tool for people entering VST plugin development world. It's called Plug'n Script, and it's fantasic!
Plug'n Script let's you build your own VST/VST3/AU/AAX plugins very quickly. You can write you own DSP code for processing audio/MIDI and create your own GUI using KUIML language. If you don't want to spend time developing the GUI, it can be created automatically according to the parameters you've added to your DSP script.
Although Plug'n Script is so great, there are few things about the default skin that can be improved. That's why we've developed our own highly customizable skin for Plug'n Script (version 3.3 and up) that you can use for free in non-commercial projects. If you sell your plugin with our skin, consider a one-time donation of $19+.
Version history
Version 1.192 Build 240613
- [Fixed] Loading and export issues with latest PnS build
Version 1.191 Build 201024
- [Fixed] Mac: Skin could crash in some cases due to error in AngelScript datetime object
- [Fixed] Mac: Some LMR knobs caused errors when tallness was 0
- [Fixed] Mac: Updated input controls to support MacOS dark theme
Version 1.19 Build 201014
- [Improved] LMR controls now use INVISIBLE_ elements introduced in KUIML 2.7 (PnS 3.3)
- [Improved] Export: post-build application section (click on the LED on the left to "Build!" button to open section, right-click for menu)
- Select an application and attributes to run after successful build (auto-run or manual execution). This way you can run a host app to open built plugin, or run a system script (.bat or .sh) to further prepare and publish your plugin.
- Applications can be saved as presets for quick access. Left-click on cog for menu. Right-click on cog to select preset. Right-click on "run post-build app" icon to select and run application in one go.
- [Improved] Export GUI settings separated in two sections - rewrites and options
- [Improved] Export now adds missing info into Mac packages .plist (version, descriptions, etc.)
- [Improved] Export now also optimizes Model and About
- [Improved] Export also searchs for <EXPORT requires="ELEMENT;function;classname" /> in main
- [Improved] Export intense stripping better detection of used script objects
- [Improved] Loading dynamic kuiml body: removed async loading, .kuiml SKIN colors and fonts have priority over skin settings
- [Fixed] Possible crashes on loading .kuiml body in several plugins simultaneously
- [Fixed] Export with flattening skin missed legacy BC controls if used
Version 1.18 Build 200617
Work-in-progress update to support released PnS 3.3
- [New] Skin settings editor is disabled by default to speed up skin loading. Enable or disable skin sections from menu ("Menu->Enable sections")
- [New] "Auto-reload scripts" feature (save your script/kuiml file and it's automatically reloaded in PnS)
- [New] "Controls generator" module to easily customize or make new widgets (knobs, meters, faders etc). Any widget based on TEMPLATE can be edited (currently enabled only for LMR_TPL_KNOB).
- [New] Drag to resize: plugin main window can be resizeable (disabled by default), see skin xml <MAKE_RESIZEABLE ... > option (experimental). Make sure to set .kuiml skin width and height to 100% to use with resizeable skin.
- [Added] Data model support for plugin intercommunication (shared data model is implemented in all Blue Cat Audio plugins, but is not intended to use in Plug-n-Script, probably because of implementation complexity when using multiple different scripts in one plugin)
- [Improved] Export:
- build and immediately open your plugin in external application. Right click on "Build results" LED icon to set up application and param, click on it to execute app. Optionally enable "auto-" mode to be executed upon successful build.
- optimization routine: additionally reduce skin size by 5-40% stripping usused blocks of code from copied files.
- In "Normal" mode optimization removes blocks marked as <!-- NO_EXPORT --> ... <!-- END_NO_EXPORT --> and /* NO_EXPORT */ ... /* END_NO_EXPORT */
- In "Strong" mode it also removes unused TEMPLATES and DEFINES.
- In "Intense" mode it also removes unused classes and functions from script files.
- If strong/intense optimization uncorrectly removes the items you need, you can explicitly mention them in .kuiml file like that: <EXPORT requires="myfunc;myClass;MYTEMPLATE;MYDEFINE" />
- Optionally strip all comments and whitespaces/newlines (which can lead up to 20% of size reduction and almost obfuscate your KUIML code).
- flattening skin (tries to put all includes and scripts into single xml file)
- support for exporting data model (copies required data model files and [scriptName].model located in current script folder)
- option to select another skin for export (for example export with debug skin for testing)
- option to replace right click action on export (in addition to existing replacements)
- option to make custom .kuiml body statically included after export (instead of dynamically loading via KUIML_WIDGET), which speeds up GUI loading time
- auto copy 'About', 'Legal' and 'Presets' folders from scripts directory
- add builddate on export into default.xml and About/about.xml
- [Added] Support for SCRIPT_DATA_PATH variable in PnS 3.3
- [Added] Support for hi-resolution controls in PnS 3.3
- [Added] EXTENSIONS_DIR for reusing pieces of code in .kuiml
- [Added] Extensions: Log (experimental, may change) and color_preview
- [Added] Auto-check for updates (disable "About LM Skin" section to skip update check every 14 days)
- [Improved] Skins now can be saved (via Skin Save As...) to any folder/subfolder
- [Improved] status() can be used to read value as well
- [Improved] status can be animated - status("text", duration_in_sec)
- [Improved] Faster skin reloading
- [Improved] Skin scanner: shortens too long paths, fixes in copying template code, close and back buttons
- [Fixed] Skin settings window unexpected changing position
- [Fixed] Skin scanner browser limits length of too long filenames on screen
- [Fixed/Changed] all _DIR variables end with "/" and contain full path, all _SUBDIR vars don't have start/end slashes (old skins may fail to load - update <INC .. /> and <LOAD_FONTS .. /> parts)
- [Changed] /scripts/RenderObjects are moved to /controls/LMR_Scripts
- [Changed] All KUIML scripts now have .as (AngelScript) extension
Version 1.01 Build 200229
- [Fixed] Export could freeze on GUI preparation
Version 1.0 Build 200216
Feature list:
- Easily change background colors, add gradients and shadows
- Add your own background images, groups of images, layer them, resize them, stretch and so on
- Live preview of changes on working plugin; toggle between old/new to compare two themes
- Save new skin configuration for every plugin you make (used skin file is remembered in PnS presets)
- Save and load themes with all skin settings for quick reusing and sharing; selectively load themes and theme parts
- Change body/toolbar/status bar size and padding, icon sizes and colors
- Change body/toolbar/status bar fonts, sizes and colors. Try custom .ttf/.otf fonts easily.
- Easily show or hide toolbar, meters, decorations, statusbar; additional statusbar option - show up only on errors
- Choose your own action for clicking on title (or no action); for example - click on the title to reload script/skin while in development mode;
- Customizable toolbar; use pre-build items or add your own. Easily add you own url or file link/manual to toolbar. Make toolbar single row or multiple rows. Two ways of using presets. Add your own elements using <TEMPLATE id="TOOLBAR_MYLOGO" ... />
- Customizable status bar. Add additional items to status bar. Printing to status bar from KUIML using status("text"). Add your own elements using <TEMPLATE id="STATUS_MYINFO" ... />
- Freely remove any skin part (with no warnings) and write your own toolbar, body or statusbar
- Convenient debug skin for development: see all the variables, params and actions available in KUIML, easy copy and use.
- Fully customizable meters with several styles (flat, gradient, LEDs)
- Show/hide/limit the number of meters, change it's size/orientation and position.
- NEW TOOL! Skin scanner (built-in option) lets you see what knobs/faders/meters/icons etc are defined in your skin. Easily browse/find/copy the name of the knob you need and paste into your code.
- Skin scanner lets you examine skin structure, see what elements/templates are defined in which files, how much they are used and where. You can load other skins (from other Blue Cat Audio plugins) to examine. Filter and save lists of elements for future use.
- Improved auto-layout for scripts with no custom .kuiml. Two auto-layouts present - text controls only (useful for development and testing) and graphic controls (evolved from default skin). In graphic controls use any elements (including your own), change knobs/cells size, padding, grouping, colors etc.
- COOL EXPERIMENTAL! Customizable knobs/faders/switches/meters drawn insize your skin (no need for rendering external png strips). Make knob/fader of any size and color, change it's properties, opacity etc. These elements also support basic properties like zoom, offset, reverse etc and some additional attributes like "disabled", "angle_from", "angle_to" and others.
- Built-in 3D light/shadows engine that draws custom shadow for each knob/fader in the layout depending on it's position. Adjust light source properties and see how your shadows change. Adjust camera properties to get 3D look of rendered controls.
- Export enhancements: select which plugin formats you want to build
- SMART EXPORT copies only the files that are used in your skin/custom .kuiml. Usual skin size after export is ~400 Kb, and can go even lower.
- Now inside your .kuiml you can use external graphics/scripts/includes, current folder is defined in KUIML_DIR variable. All included files/scripts/defines are automatically copied while export. In addition you can mention extra files to export using directive <EXPORT files="readme.txt;sample.wav" dirs="imagesDir;dataDir" manual="myplugin.pdf" /> inside your .kuiml