Question on the the suitability of SOUL for a project

Hello everyone,

I’ve been following SOUL’s development with excitement!! Having years of experience using the SuperCollider language I’ve always been quite frustrated with its lack of tools for creating audio plugins and proper industry grade audio applications in general. I am hoping that SOUL will provide a way in without having to dive into C++.

So, I am thinking of starting a project of converting some products we currently sell as Kontakt sampler instruments at fasmatwist.com to plugins. I would like to start creating the custom sampler engine in SOUL but I am unsure about a couple of things:

  1. Is this possible with the current implementation (including packaging as VST/AU with a GUI etc.)?
  2. Is the syntax of the language in flux to an extend that would necessitate making major frequent changes to my code?

I guess I am more or less asking: is it too early to start using SOUL in production?

Thanks! :upside_down_face:

Dionysis

There’s not much point in me saying “it’s amazing and totally stable” because I’m completely biased and that’s exactly what you’d expect me to say.

…but I would say that we’re really keen to help out with anyone who’s using it for real-world projects, as that’s exactly the kind of feedback we’re looking for. So you’ll get very responsive help from us if you do choose it!

1 Like

It would be very interesting to see some performance benchmarks between SOUL implementations vs basic Juce SDK implementations. From simple gain processors to a more compilicated setups ie. basic synth structure: Osc+Env+Filter+VCA.

2 Likes

Fair enough, you didn’t say no so that’s good enough for me to start exploring :stuck_out_tongue:

Thanks for your effort with this project Jules. I am truly excited about it!

Yes, we also wish is was easier to generate that kind of data, but it’s really quite difficult to create tests which actually make sense and are comparing apples-with-apples in a way that’s meaningful. Something we do have a test for in our CI is a comparison of the freeverb algorithm in soul vs as a normal C++ class, and soul generally wins that one by a small margin. Though obviously every algorithm you test is going to have different characteristics - some may be better in c++ and others in soul, which makes the whole exercise a bit futile IMHO. It’s like saying “is C++ faster than [insert name of a language here]”… there’s no answer that is true for all benchmarks.

Something we can do is to compare the same soul code when converted to C++ and compiled in clang, vs the same code in our JIT engine, but TBH it’s not very informative because both code-paths use the same optimiser and generally end up with pretty much the same performance.

However… if anyone does come up with an example of something they’ve written in both C++ and soul, where the soul version goes more slowly, we’d be really interested to have a look. Usually there’ll be some obvious reason for it which we can smooth out by tweaking our compiler, but unless we have examples it’s very hard to know where these bottlenecks might be.

1 Like

I’m eager to know about performance aswell, specially for those of us that target embedded platforms (mostly ARM SoCs). Once I finish my project I’m open to try implementing some parts of it in SOUL to do some A-B comparision in the embedded platform

@johngalt91 some info here: https://github.com/soul-lang/SOUL/issues/33#issuecomment-670977536

2 Likes