VCV Prototype

GIL isn’t really the blocker here. Various crashes with Numpy, and the build system on Mac/Windows is. See https://github.com/VCVRack/VCV-Prototype/blob/master/src/PythonEngine.cpp#L13 and propose patches in the issue tracker if you want to push this along.

Any plans to support polyphony? After writing my script I realized that Prototype isn’t polyphonic so I will try switching to Formula.

How would that work? outputs[i][blockIndex][channel]? What about backwards compatibility? What about performance being 16x worse?

1 Like

in the case of javascript, it wouldn’t be 16x worse, given that the transition between c++ and javascript is still fairly expensive, even with quickjs (though not as expensive as v8). if I had to make an educated guess, I’d say 4x worse. I can’t make those guesses for other languages though.

that said, for backward compatibility, it could be a configuration option:

config.polyphonic = true

where default would be false. someone could make a proposal and if it made sense across enough languages and were performant enough, it might be doable.

What I’m doing is inexpensive and isn’t audio rate (calculations based on the notes being played on a keyboard), so I’m not too concerned about performance.

But presumably there would a config variable with the number of channels currently in use, so you wouldn’t pay the cost for computing channels you’re not using?

I have added support for Vult language. If anyone wants to test it, you can find it in my fork https://github.com/modlfo/VCV-Prototype

15 Likes

I’ve added preliminary support for Csound, but there is an issue. Csound is LGPL licensed. As far as I know this means it can’t be statically linked. Does that mean Csound support is a no-no in this case or is there some way we can make it work?

I am not an expert. As far as I can see this is not a complete no-no in general terms. Your specific circumstances might have additional constraints.

  • you can statically link an LGPL library into a GPL compatible project.
  • you can statically link an LGPL library into a more restrictive project, but you would have to also make your project available in an object file format, so that someone could swap out the LGPL library for a replacement and relink it.

But IANAL; do you own research before you take my word for it.

That’s what it looks like they say here: Frequently Asked Questions about the GNU Licenses - GNU Project - Free Software Foundation (though I have to admit that licensing terms are an obscure matter to me).
Anyway, do dynamic linking with pre-installed runtimes shouldn’t go fine? Isn’t it the case as with libpd/Pure Data, that spans with a modified BSD license, if I am not wrong?

Thanks for the feedback @carbon14 and @dizzy

I assume all the script engines in the official VCV-Prototype package are statically linked?

I’m afraid I don’t know.

1 Like

Hmm. I’d rather not sink lots of time and energy into making an official PR until I know if dynamic linking is Ok for the official Prototype package. Maybe I should file a github issue.

1 Like

I realize that every bit of information about licensing terms that I read about, puts some more noise in my head… but I was looking again at the GNU compatibility matrix, and doesn’t it looks like things could actually work?
Here’s the link, where I’m assessing VCVRack licensed under GPLv3, and the formula “I want to use a library under:” LGPLv2.1 only. https://www.gnu.org/licenses/gpl-faq.html#AllCompatibility Sure, probably a definitive help about this dilemma can be given only by @Vortico (sorry Andrew for shouting out).

EDIT: Nice, I see now that Andrew already summed it up, clearing all our doubts :slight_smile: LGPL scripting engines? · Issue #48 · VCVRack/VCV-Prototype · GitHub Thanks!

1 Like

Great. I’m happy to take Andrew’s word on it. I’ll take a look now and how the deps are taken care off. Building them is simple on Linux but I think it’s easier on Windows and MacOS to simple grab the pre-built libraries. It might take a while before it’s production ready, but at least I can follow up with it now.

1 Like

Heads up to people interested in this module, I just pushed the last bit of work needed to enable the SuperCollider engine, so it should be ready to use.

8 Likes

Hi Brian, very interested over here!

I tried using it but when I load a .scd script in the prototype module I get the following error: No engine for .scd extension. I have supercollider installed on my laptop which is working fine. I tried saving the script in different locations. Am I doing something wrong?

Prototype version: v1.3.0; rack version: v1.1.6; SuperCollider version 3.11.2.

Very excited about this!

1 Like

Just stopping by to say thanks for developing VCV Prototype. Made it super easy to get started!

Thanks for this wonderful toy! I can hardly remember having this much fun for a long time. Is there a way to change the knobs range from 0-1 to 0-16?

multiply the values by 16?

That’s what I’m doing to get the values I need. But with right-click onto the knobs it still offers 0-1 range. I’m wondering if there’s a (insanely easy) way to change that. :slight_smile: