Scripting API

Post Reply
pierco
Posts: 3
Joined: Mon Jan 02, 2017 8:58 pm

Scripting API

Post by pierco » Thu Feb 23, 2017 2:39 am

Hi,

It's more a thought than a real feature request but I think having a scripting API that exposes various parts of the application would be a great improvement. It will allow developers to create custom plugins. When I say "various parts" I mean the UI, the pattern edition, the pattern order table, the modules... I don't know how difficult it could be to implement but there are some existing language interpreters like LUA that can be easily embedded into an existing software.

voilà!

User avatar
queries
Posts: 130
Joined: Tue May 10, 2016 9:51 pm

Re: Scripting API

Post by queries » Thu Feb 23, 2017 2:49 am

It's not embedded within SunVox but there is a Python package called radiant-voices that can read/write/modify SunVox files. 99% compatible with SunVox. :)

https://github.com/metrasynth/radiant-voices

pierco
Posts: 3
Joined: Mon Jan 02, 2017 8:58 pm

Re: Scripting API

Post by pierco » Thu Feb 23, 2017 10:48 am

Thank you so much!! I was not aware of that Python lib. Currently I'm writing a small tool that parses custom scripts and compile into XM files so this library opens new horizons to me :Yahoo!:

I will give a try this week but I'd still like to know what NightRadio thinks about the scripting API.

User avatar
leondustar
Posts: 10
Joined: Tue Feb 28, 2017 12:40 am

Re: Scripting API

Post by leondustar » Tue Feb 28, 2017 3:13 am

iirc this would put certain builds (ios) at risk because scripting engines and appstores usually don't mix.
On one hand I could imagine the non-mobile apps support some kindof scripting language, but that could introduce the following effects:

A: some platforms would not include certain machines (ios)
B: that would break the every-sunvox-patch-runs-everywhere tradition

If sunvox would include a scripting language, I would go for the smallest footprint and only allow a small set of operations.
I would go for integrating one of these, and disabling bindings to keep things portable:

* libPd https://github.com/libpd which supports dsp + logic + huge amount of vanilla synth/effect patches (ps. pdlib has around 25 operators)
* lua by 'borrowing' protoplug code: http://www.osar.fr/protoplug/
* javascript, the most popular scripting language of the web using this tiny javascript lib: https://github.com/MarcoLizza/tiny-js for dsp+logic
* faust: http://faust.grame.frdsp + (harder to write) logic + small amount of faust synth/effect patches

Post Reply