Blue Cat's Plug'n Script 3.3 Released - DSP DIY Summer?

Official support for: bluecataudio.com
User avatar
KVRAF
4693 posts since 8 Sep, 2004 from Paris (France)

Post Mon Jun 15, 2020 6:07 am

Please welcome Blue Cat's Plug'n Script 3.3, the ultimate tool for DSP DIY!

With many new features to build your own custom user interface (GUI) and export it with plug-ins, KUIML 2.7 GUI programming language support, and many other improvements and fixes, it is a recommended update!

The update is free for existing customers (from the link received by email upon purchase), and new customers can get Plug'n Script at a special introduction price (20% off), either alone, or as part of the Crafters Pack bundle until July 10th.

Image

New in Blue Cat's Plug'n Script 3.3:
- Custom graphics and resource files are now be copied when exporting scripts as independent VST, VST3, AU or AAX plug-ins (SCRIPT_DATA_PATH folder).
- New version of the KUIML GUI programming language (2.7), with new widgets, new mouse and keyboard events handling features, system script function to execute shell commands and more.
- New version of the Angelscript Engine (2.34).
- New high resolution graphics for knobs.
- New background mode ("None") to create entirely custom user interfaces.
- New icon for the Plug'n Script Application.
- Reduced disk footprint.
- Fixed crash in exported VST3 plug-in when using input strings in scripts.
- Fixed crashes when using build-time script in KUIML widgets.
- Fixed gui.capture objects that could be exposed twice in KUIML objects.
- Fixed png or svg images alpha mask not properly loaded (was ignored)
- Fixed ignore_missing attribute for LOAD_FONT that still triggered an error.
- Mac application now fully supports dark mode on Mac OS Mojave and newer.
- Mac: fixed settings panel rendering issues in dark mode on Mac OS Mojave and newer.
- Mac: Fixed keyboard not responding in registration panel in some host applications (LUNA, Garage Band...).
- Mac: Fixed demo version that could hang Logic when reloading projects using the plug-in.
- Mac: fixed Retina scaling issue on buffered widgets in apps built with Mac OS 10.14 SDK and newer.

Enjoy!

User avatar
KVRAF

Topic Starter

4693 posts since 8 Sep, 2004 from Paris (France)

Post Mon Jun 15, 2020 6:23 am

And thanks to Ilya Orlov (a.k.a. " Letimix"), Plug'n Script developer of the year, there are now two great video tutorials to get started with Plug'n Script and create your own VST plug-in:

https://www.youtube.com/watch?v=UuKffpOFgWY
https://www.youtube.com/watch?v=If0t5fjc-YU

Do not miss his Plug'n Script website either, it's full of great resources for Plug'n Script developers! :party:

KVRAF
1845 posts since 14 Mar, 2006

Post Mon Jun 15, 2020 10:10 am

No doubt he is the PNS programmer extraordinare! I am looking forward to seeing what is possible with the updates to angelscript and KUML. I am also really curious what could be done with the scripting extension.
MacPro 5,1 12core x 3.46ghz-128gb 10.15 (opencore), X32+AES16e-50

KVRist
279 posts since 28 May, 2011

Post Tue Jun 16, 2020 8:31 am

Yohoooo!!! :party: As always, great to see PnS evolving! Thank you for your work, Blue Cat Audio! :tu:
Dewdman42, thanks! :oops: :)

A couple questions:
1) I see there's a new "scaling" attribute that seems to work for all elements? Maybe some notes on that?
2) What is a "new background mode ("None") to create entirely custom user interfaces."? How to use it?

KVRist
279 posts since 28 May, 2011

Post Wed Jun 17, 2020 7:38 am

A fresh update to Letimix Skin is available to compliment newly released PnS 3.3.
Download * Tutorial * What's new
You do not have the required permissions to view the files attached to this post.

User avatar
KVRAF

Topic Starter

4693 posts since 8 Sep, 2004 from Paris (France)

Post Mon Jun 22, 2020 10:33 am

ilyaorlov wrote:
Tue Jun 16, 2020 8:31 am
A couple questions:
1) I see there's a new "scaling" attribute that seems to work for all elements? Maybe some notes on that?
2) What is a "new background mode ("None") to create entirely custom user interfaces."? How to use it?
(1) There is indeed an experimental scaling attribute but it is not fully implemented - I don't think it is documented either. Where did you see it?
(2) There is an example that shows this background mode. It just removes the entire background so that you can draw your own or load an image instead.

User avatar
KVRAF

Topic Starter

4693 posts since 8 Sep, 2004 from Paris (France)

Post Mon Jun 22, 2020 10:33 am

ilyaorlov wrote:
Wed Jun 17, 2020 7:38 am
A fresh update to Letimix Skin is available to compliment newly released PnS 3.3.
Download * Tutorial * What's new
Well done! :tu: :tu: :tu:

KVRist
279 posts since 28 May, 2011

Post Mon Jun 22, 2020 12:15 pm

Blue Cat Audio wrote:
Mon Jun 22, 2020 10:33 am
(1) There is indeed an experimental scaling attribute but it is not fully implemented - I don't think it is documented either. Where did you see it?
If found it cause I had "scaling" attr for my custom knobs and "image_scaling" for the factory knobs, and after update they both started to work for factory knobs. I checked and found that scaling works on mostly everything, which is cool. Can we not rely on that yet?
(2) There is an example that shows this background mode. It just removes the entire background so that you can draw your own or load an image instead.
Ah, I see!

KVRist
279 posts since 28 May, 2011

Post Fri Jun 26, 2020 7:08 am

Another request for future is arrays in KUIML, if this is possible :)

User avatar
KVRAF

Topic Starter

4693 posts since 8 Sep, 2004 from Paris (France)

Post Sun Jun 28, 2020 11:24 pm

ilyaorlov wrote:
Fri Jun 26, 2020 7:08 am
Another request for future is arrays in KUIML, if this is possible :)
There is actually something like this in KUIML already, but it's not mature enough yet to be made public. It's a rather complex topic actually, if you want to create arrays that are truly compile-time safe (which is not the case in most languages).

KVRist
279 posts since 28 May, 2011

Post Mon Jun 29, 2020 4:22 am

That's interesting!

I've got a bunch of params holding number of instances in each group.
instances_in_group0
instances_in_group1
... etc

and param "group" holding current group number

So if in KUIML I want to get number of instances in current group I have first alias these params to array of params in AngelScript, then do work in AngelScript and return it back to KUIML.

It would be good if we could do it in KUIML only somehow.

KVRist
30 posts since 5 Feb, 2009

Post Mon Jul 20, 2020 11:06 am

Fantastic platform! I had some plugins exported and running right away.

I'm pretty new to coding, though I'm quite used to various modular DSP environments. Getting the hang of it though. Adding parameters, tweaking the math etc.

What I'd like to try next is to chain a few different effects in the same code. Example, compressor into a delay, or a filter into a clipper etc. So I'm trying to get a handle on how to route the serial processing. If I'm using processSample, and ioSample, do I need to define intermediate audio streams for each effect? And would I need to use void processSample more than once in the same code?

Thanks, Eric

KVRist
279 posts since 28 May, 2011

Post Wed Jul 22, 2020 6:13 am

Hey, Eric!
ericbridenbaker wrote:
Mon Jul 20, 2020 11:06 am
What I'd like to try next is to chain a few different effects in the same code. Example, compressor into a delay, or a filter into a clipper etc. So I'm trying to get a handle on how to route the serial processing. If I'm using processSample, and ioSample, do I need to define intermediate audio streams for each effect? And would I need to use void processSample more than once in the same code?
I'd say you probably just process each sample by your compressor function first, then by delay function, they by filter, etc. Just like if you had multiple plugins, they'd work one after another. You definitely use processSample (or processBlock) just once in your code and do your processing inside it.

KVRist
279 posts since 28 May, 2011

Post Wed Jul 22, 2020 6:17 am

I'm experimenting now with shared memory on both Windows and Mac, using CreateFileMapping/MapViewOfFile on Windows and shm_open/mmap on Mac. So far it seems to be ok. The question is: if I want to share audio streams, do I have to copy all the data.samples into/from this shared memory, or I can just pass a pointer to data.samples into another instance of a plugin?

User avatar
KVRAF

Topic Starter

4693 posts since 8 Sep, 2004 from Paris (France)

Post Wed Jul 22, 2020 6:32 am

ilyaorlov wrote:
Wed Jul 22, 2020 6:17 am
I'm experimenting now with shared memory on both Windows and Mac, using CreateFileMapping/MapViewOfFile on Windows and shm_open/mmap on Mac. So far it seems to be ok. The question is: if I want to share audio streams, do I have to copy all the data.samples into/from this shared memory, or I can just pass a pointer to data.samples into another instance of a plugin?
You definitely have to copy the entire buffers there, as the memory pointed by the data.samples pointer will be modified for every call to the Process function.

Return to “Blue Cat Audio”