Notifications
Clear all

BlackCat Scripting Plugin

7 Posts
4 Users
3 Likes
716 Views
(@chris-massa)
Active Member
Joined: 4 years ago
Posts: 9
Topic starter  

This might be interesting to some:

 

 


   
Bernd@PDX reacted
Quote
(@getdunne)
Illustrious Member Admin
Joined: 5 years ago
Posts: 4410
 

@chris-massa

Blue Cat's products are very impressive. I am VERY interested in any feedback about their choice of the AngelScript scripting language, as opposed to e.g. lua, ECMAScript (aka JavaScript), etc.

PS: I edited your post a bit, to make the original link show up better, and also to add a link to the official product page at bluecataudio.com.


   
ReplyQuote
Nico5
(@nico5)
Trusted Member
Joined: 4 years ago
Posts: 52
 

@getdunne

I've been bumping into Lua more often lately, because I've been doing a little scripting in Steinberg's HALion (sampling and synth platform), Native Instruments Creator Tools (adjunct software for Kontakt developers), and ProtoPlug (which you had mentioned in another post in this forum).

I imagine Blue Cat Audio picked AngelScript a long time before the more recent momentum around Lua.

 

 

Cubase 13 Pro, Win 10 Pro (x64), several different midi controllers


   
ReplyQuote
(@dewdman42)
Trusted Member
Joined: 2 years ago
Posts: 49
 

BCA PlugNScript is pretty cool and has some advantages, but it also has plenty of disadvantages.  I'm not sure all the reasons why they decided to go with Angelscript, but that is really the biggest problem in my view.  The upside of Angelscript is that its very similar to C++ in its basic syntax, which I guess BCA must feel helps them to prototype some of the plugin ideas and then convert it to C++ later.  But in my view Lua or javascript would have been a much better choice.

 

There are some other LUA scripter possibilities out there, for example, the opensource ProtoPlug is free and provides midi and audio scripting in LUA..  (HINT HINT, the license there permits someone like Unify to re-use the code that is there, I know at least one other product that is using this scripter engine to get started, but in my opinion ProtoPlug could use a more complete API for handling midi.

Information here: https://www.osar.fr/protoplug/api/

More info here: https://www.osar.fr/protoplug/

Source here: https://github.com/pac-dev/protoplug

In addition KushView Element has been adding its own LUA scripting, its still in development but some of it works with hardly any documentation.  

In addition Soundigy MidiLab has a plugin which basically is basically using the above-mentioned ProtoPlug code, plus some additions added to it...to provide Lua midi and audio scripting in their standalone or their plugin version.

 

I would love to see Unify embed LUA scripting directly into it as a built in midi plugin.  But at the very least, ProtoPlug can be used right now today...and probably Kushview's will be quite nice when its done but putting Kushview inside of Unify is overkill and complicated.

 

 


   
ReplyQuote
(@getdunne)
Illustrious Member Admin
Joined: 5 years ago
Posts: 4410
 

@dewdman42

I have been thinking about scripting for a long time. The question of which script language to use is a tricky one, because whatever is chosen, there will be some who would prefer a different one.

Can you explain why you think AngelScript is a poor choice? Lua is indeed widely used, but as far as I'm aware, it's mainly known in the world of computer games, and much less well-known elsewhere. ECMAScript (Javascript) is of course the most widely-known programming language in the world, but it's also one of the worst ever devised.

Also, if Unify did have a scripting capability, what kinds of scripts would you want to write? Can you give some specific examples?


   
ReplyQuote
(@dewdman42)
Trusted Member
Joined: 2 years ago
Posts: 49
 

I am extremely expert on LogicPro's Scripter plugin, which uses Javascript, and I actually would prefer that, as well as a few nice things about how Apple chose to define the midi-only api of LogicPro's scripter....making it much easier for non-programmers to write some simple scripts...  I actually don't care that Javascript is the way it is, I find it extremely flexible, more flexible then LUA in this regard, but I only have small experience with LUA myself, but my initial attempts with it, I found Javascript easier and better then LUA, "more flexible" perhaps.  Keep in mind that the vast majority of noise about Javascript is related to web programming issues in the browser DOM and basically none of that is relevant in LogicPro's scripter, which does not provide access to any of that stuff.  You basically just use the basics of Javascript, which means yes, no typing, virtually unlimited ways to build objects on the fly JSON style, associative arrays and other cool things that can be very useful for quick scripting....but on the other hand if you are trying to build an enterprise level web application with multiple developers, shared code, object classes, etc.., Javascript would be a nightmare probably, I wouldn't know, I came from C/C++ world mostly.

The only reason to consider LUA is because LUA ProtoPlug is already out there, is open source and the license permits what work that author did to be reused in other products.  Soundigy MidiLab is doing that for example, he grabbed the code for Lua ProtoPlug and is building up on that.  For whatever the reason, KushView Element is also using LUA for the scripter they are working on, I don't know if he is using ProtoPlug as starting place or not, but I think he wants to take it in more directions enabling cool GUI access to other KushView Element objects, etc.  its still under development honestly, its there, but no docs, nobody is using it yet.

I own BNC PlugNScript for a long time already and have made a couple simple scripts with it, but I found Angelscript to be VERY limiting in numerous ways, we should probably chat off line in more detail if you like send me PM or email.  It does have an interesting GUI mechanism using a declarative model, which I don't know much about, but people are able to make very nice looking script-based plugins and they can even export it as a standalone VST if they want...so that's all cool, but anyway hit me up with email and I will be glad to try to recollect what I can remember about it, but as a casual user, what I can say is that similar as LUA ProtoPlug it has a very rudimentary midi API, which made some tasks more complicated to do, compared to LogicPro's Scripter, so I basically have only used it a few times for very simple tasks when not using LogicPro.  AngelScript looks Kind of like C++ so BNC basically developed that scripter in house to develop their ideas, and based it on Angelscript at the time, then later made the plugin available generally, but in my view the AngelScript language is very limited, and I would have to go back to my notes to give you more specifics.  Also there is no help from anyone anywhere about how to use Angelscript.  LUA and Javascript information is all over the place.  There are great Javascript and LUA JIT systems that can be embedded into anything.  

But anyway as to which I would prefer, I personally would prefer Javascript compared to LUA.  But LUA could also work.  The bigger consideration is making a very user-friendly API for how to process midi events and audio data in a Script, to make simple use cases very simple to script.  More elaborate cases can obviously be more elaborate.  I am happy to corresponding with you privately in more detail about what a good and simple API for midi might be.  Lua ProtoPlug's version could be better, as could BCA's.

I have made a lot of use in LogicPro's Scripter specifically for articulation management, handling keyswitching duties and similar things where its just necessary to have that much exact control, or overcome limitations of LogicPro's articulation set features.  I have some of them on gitlab and can point you to them if you want to see them.

In Unify I think it would be good to be able to also control Unify itself...which Apple's also allows in a limited way.  For example, in Apple's Scripter, you can create in script an automation parameter that will be exposed to its corresponding LogicPro track as an automatable parameter which can be used together with Scripter.  Unfortunately Scripter provides hardly any other ways to control LogicPro itself.  But Anyway, inside Unify, I could see it being useful to be able in Script to control how layers are turned on and off and various things like this that would make it possible to do advanced instrument trickery that some people might think of.  So in Unify it would be useful not only for filtering/generating midi and audio, but also to interact with some of Unify's controls.

That's enough for now.  Feel free to reach out privately if you want to have an ongoing discussion.

 


   
mj_prod reacted
ReplyQuote
(@getdunne)
Illustrious Member Admin
Joined: 5 years ago
Posts: 4410
 

@dewdman42

Working on an email to you now...


   
mj_prod reacted
ReplyQuote
Share: