How does SOUL compare? Many questions

SOUL is certainly being bold with that “future of audio coding” slogan, but I am not one to judge, since I am completely new to DSP programming. But maybe it’s time to start. Assume one knows very little about these things but wants to be the next Urs Heckmann. Hopefully someone could answer some questions I have.

How does SOUL compare to languages like Csound, Max — or perhaps modular systems like Reaktor, SynthEdit or SynthMaker? (some of which apparently support custom code extensions beyond stock modules…).

How does SOUL compare to coding in C++ (JUCE etc.). Are there obvious limitations? Are CPU optimizations a la SSE/AVX/NEON out of the question? Could SOUL be used to produce VST/AU/LV2 plugins?

Could open source plugins (VST / AU / LV2) C++ synth code such as Dexed or OxeFM be ported to something like SOUL or Csound/Max? For example sound engines with specific methods of oscillator generation (analog modelling, physical modelling etc.), filters, anti-aliasing (or allowing for aliasing), different interpolations of sampled audio, etc.

If I were to get into synth programming, I would want to faithfully recreate the synthesis techniques used in PPG Wave, Yamaha DX7, Casio CZ etc. And do so unencumbered by the limitations of something like Reaktor or SynthMaker which I have heard, can only go so far.

Do you think SOUL will be comprehensive/flexible enough to make convincing results?

Also - none of the demos work on either Chrome/Firefox… but I guess those are growing pains.

none of the demos work on either Chrome/Firefox

Ah… looks like you decided to try it at the exact moment when our server decided to run out of storage space and fall over.

It does of course work in Chrome and Firefox, but not when the server is having a lie down… we’ll get it back up asap!

How does SOUL compare to coding in C++ (JUCE etc.). Are there obvious limitations? Are CPU optimizations a la SSE/AVX/NEON out of the question? Could SOUL be used to produce VST/AU/LV2 plugins?

It’s dynamically JIT compiled, not compiled ahead of time, so can be live coded. It’s safe, can’t crash, but still matches C++ in speed. Yes, our tools will convert it into C++ code that you can build a plugin from. And we’ll have a plugin that dynamically loads soul patches. It has vector primitives that LLVM does a good job of turning into vectorised code.

Could open source plugins (VST / AU / LV2) C++ synth code such as Dexed or OxeFM be ported to something like SOUL or Csound/Max? For example sound engines with specific methods of oscillator generation (analog modelling, physical modelling etc.), filters, anti-aliasing (or allowing for aliasing), different interpolations of sampled audio, etc.

Yep. It’s code. You can write whatever you want.

If I were to get into synth programming, I would want to faithfully recreate the synthesis techniques used in PPG Wave, Yamaha DX7, Casio CZ etc. And do so unencumbered by the limitations of something like Reaktor or SynthMaker which I have heard, can only go so far.

Ces already wrote some TX emulators. And yes, there’s no limit on what you can write with it, it’s not like the kind of toolkit where all you can only plug together a set of pre-built units. You can go all the way down and write the low-level code.

Do you think SOUL will be comprehensive/flexible enough to make convincing results?

Wouldn’t have spent over 2 years working on it if we didn’t think it was a goer!

3 Likes

Ah the demos are working now, just my horrible luck as always!

And we’ll have a plugin that dynamically loads soul patches

That sounds amazing actually. Live coding a synth directly in a DAW?! SOUnds Like a good time to start audio programming! Ha…ha…

I have been skeptical of browser-based synthesis. There are a lot of web audio frameworks that have “code editors”, but they all seemed to be quite limited by the Web Audio API. I tried making a synth with the bare API itself—it was a nightmare even to do an ADSR envelope. But with Web Assembly and Audio Worklets, it seems real synths can be run in the browser.

there’s no limit on what you can write with it, it’s not like the kind of toolkit where all you can only plug together a set of pre-built units. You can go all the way down and write the low-level code.

I’ll quote ya on that! BRB while I code the first decent SY77 softsynth that can load SysEx. But seriously–sounds like this could be ‘it’. Will definitely have to look into it more.

Ces already wrote some TX emulators.

Ah, I think I found it (LatelyBass.soul). In only 500 lines of code?! All 8 waveshapes too. A mad man. I will definitely have to look into this.

So another question. What about GUIs? I noticed that you can expose certain controls directly in the playground, perhaps similar to a GUI-less plugin. But what about polished interfaces? For example: https://www.webaudiomodules.org/wamsynths/. Is this something delegated to a third party, possibly compiled solution, or some sort of grid layout language? Personally as a web developer I haven’t touched anything like WPF or Qt. But if it could be written in HTML or JS - that could work well.