Scripting language to allow users to create new synths and effects.

Post Reply
CoryCulley
Posts: 30
Joined: Wed Aug 03, 2016 1:09 am

Scripting language to allow users to create new synths and effects.

Post by CoryCulley »

Basically, a scripting language for lower level synth/effect design would be crazy awesome. Maybe something like PixiLang? But for module design.
User avatar
queries
Posts: 316
Joined: Tue May 10, 2016 9:51 pm

Re: Scripting language to allow users to create new synths and effects.

Post by queries »

There are some prior discussion around this, including:

https://warmplace.ru/forum/viewtopic.ph ... ing#p17025

The consensus so far seems to be:

- SunVox audio engine itself probably will never have module types where you code your own low-level DSP. Its modular environment is full-featured enough that you can create fully interactive pong games with it. So I'm sure with some creativity and patience, you could make it do almost anything. :)

- You can do a lot of SunVox audio engine things, outside of SunVox, using PixiLang.

- NightRadio has hinted that he would like to some day integrate PixiLang into the SunVox editor.

- There is an unofficial library for Python and JavaScript called Radiant Voices that lets you script SunVox module creation/editing outside of SunVox itself. I'm working on making this more accessible via a web app.

Here's the pong demo if you haven't seen it:

CoryCulley
Posts: 30
Joined: Wed Aug 03, 2016 1:09 am

Re: Scripting language to allow users to create new synths and effects.

Post by CoryCulley »

Thanks for sharing.
I guess my issue with Sunvox is more of an edge case. Sunvox is a very powerful synthesizer. It's Frequency/Phase Modulation synthesis is still not quite there however and it's been years waiting after various users' feature requests. I just thought that scripting would allow us to come up with solutions for issues like these. Maybe even other new types of modules or tools that are outside of Sunvox's capabilities.
User avatar
AutumnCheney
Posts: 507
Joined: Sun Dec 29, 2019 8:16 am
Location: tahlequah, ok, usa
Contact:

Re: Scripting language to allow users to create new synths and effects.

Post by AutumnCheney »

CoryCulley wrote: Tue Mar 23, 2021 11:35 pm Thanks for sharing.
I guess my issue with Sunvox is more of an edge case. Sunvox is a very powerful synthesizer. It's Frequency/Phase Modulation synthesis is still not quite there however and it's been years waiting after various users' feature requests.
hi

sorry to advertise, but i made a module that tries to extend the pm synthesis capabilities of sunvox, and i thought you'd like it. check it out here: https://warmplace.ru/forum/viewtopic.php?f=11&t=5676
Attachments
AutumnC 4OP PM.sunsynth
(54.6 KiB) Downloaded 97 times
my website: https://acheney.xyz

it features my music, sunvox content, and social media links!
CoryCulley
Posts: 30
Joined: Wed Aug 03, 2016 1:09 am

Re: Scripting language to allow users to create new synths and effects.

Post by CoryCulley »

AutumnCheney wrote: Wed Mar 24, 2021 9:44 pm hi

sorry to advertise, but i made a module that tries to extend the pm synthesis capabilities of sunvox, and i thought you'd like it. check it out here: https://warmplace.ru/forum/viewtopic.php?f=11&t=5676
I'm aware of it and you did an impressive job on it. Btw I've found a way to make monophonic MetaModules like yours polyphonic. It involves making multiple instances of the MetaModule within another MetaModule, leveraging MultiSynth's out.port options to send each note to the seperate instances, and forwarding all the controllers of all those instances to the main MetaModule.

The only issue with doing that is Sunvox can't pass controller types (binary, semitone, etc) when chaining Metamodules and I think controllers in general. In other words if it's an on/off controller, expect to have to turn the controller all the way up to 0x8000 just to turn it "on", like Sustain for example. Also the controller limit on MetaModules is unfortunate. Hoping for controller page tabs one day to fix this and organization.

Besides that, I've found no way to implement operator feedback with the phase modulator which is my biggest gripe at the moment.
User avatar
Logickin λ
Posts: 172
Joined: Sat Sep 08, 2018 8:31 pm
Contact:

Re: Scripting language to allow users to create new synths and effects.

Post by Logickin λ »

The only issue with doing that is Sunvox can't pass controller types (binary, semitone, etc) when chaining Metamodules and I think controllers in general. In other words if it's an on/off controller, expect to have to turn the controller all the way up to 0x8000 just to turn it "on", like Sustain for example. Also the controller limit on MetaModules is unfortunate. Hoping for controller page tabs one day to fix this and organization.
For binary, I often use a trick using an amplifier with 128 dc offset, then use the inverse parameter to act as an On/Off switch, along with a sound2control with low frequency, no smooth, no absolute, and in LQ mode.
User avatar
Logickin λ
Posts: 172
Joined: Sat Sep 08, 2018 8:31 pm
Contact:

Re: Scripting language to allow users to create new synths and effects.

Post by Logickin λ »

I think I am going to bring this thread back due to a little discussion in the discord group. Seems like Lua is possible for iOS, while they are quite common in audio scripting: https://forums.developer.apple.com/forums/thread/38566

I do think some basic scripting support does have some merits, like a more dynamic way to make waveshaping, custom filter type, or building more efficient logic circuit for some complex modules to make it more versatile, or using that as a memory storage. Although more time will be put into this module, it save time for making new built-in modules because the work can now be passed to the users. They want a M-0-0-g filter? They want a specific oscillator? They want to build a multiplexer? They can just script it instead of leaving a lot of feature requests.

Thus, I would like to propose the interface of the scripting module:

There could be an input field for some basic codes, to manipulate the audio, incoming and outgoing controllers, conditionally. While it could supports limited number of variables and arrays, making it useful for memory storage, multiplexer or any effects that rely on buffers. To reduce the computation cost to simple control logic, the sample rate can be in audio rate, or in any fixed rate like sound2ctl. It have some options as well, which you can toggle whether the buffer should be clear or not once the stop button is doubly pressed. The Controller button is used for setting the data type of the controller, like int or float, range, etc, to make the input intuitive to use. User can make use of the load and save features as well to save their own script with the controller settings.

This module is not a replacement to other modules, due to performance concern, so it should have restrictions which it won't support external libraries, don't support functions, with limited size of arrays and variables, and restricted loop (or no loop, because it is re-triggered by the sample rate), but it will be used for enhancing the experience to build metamodules.
Attachments
Formula Mockup.png
Formula Mockup.png (46.84 KiB) Viewed 104 times
Post Reply