SOUL - Sound Languange for DSP programming

Hi @ll,

I don’t know if the link already was posted here, so forgive me for double posting.

All (DSP/Audio/FX) programmers: take a look at SOUL! It seems to be a very cool C-like language for programming DSP-like things. It reminds me a little bit of chuck or CSound. For me, it’s a very cool thing, because it brings a C-like language together with avoidance of some really error-prone programming problems (like wrapping around array indices and some more features).

Currently the only really “host” seems to be JUCE. But I think creating a LV2 host or a Teensy-Audio-Lib-host should be possible. In the examples there is a TX81Z processor (it does not have all the original features) but for an example very impressive.

Have fun,

Holger

2 Likes

The link is not working for me.

Ah, sorry… fixed it!

Thanks for reporting!

… and got it running (on x64 cmd-line):

  1. Clone the SOUL repository: GitHub - soul-lang/SOUL: The SOUL programming language and API
  2. Download binaries-linux-combined.zip from https://github.com/soul-lang/SOUL/releases/tag/1.0.69
  3. Unzip the files into a folder of your choice and change into this folder
  4. Run an example patch: ./soul play --audio-device-type="HDA Intel PCH, ALC892 Analog; Front speakers" <path-to-your-cloned-soul-repo>/examples/patches/PadSynth/PadSynth.soulpatch

You can take a look at all available sound devices with ./soul play --list-devices

There are also arm32 and arm64 binaries for the soul programm available :sunglasses:

Regards, Holger

2 Likes

That’s what we want to see :grinning_face_with_smiling_eyes: .

I’m uncomfortable with the idea of a soul patch.

Could be worse:

image
(David Soul with soul patch)

4 Likes

“I think my least-hated favorite fish is sole. Sole has no eyes.”

You’re listening to k.a.o.s. in Los Angeles.

1 Like

Have a look at FAUST too. According to what I read from SOUL creator, there’s a bit of FAUST behind the SOUL concept, as he found FAUST was a great tool but too complex of a language for an average programmer, which sort of led him to creating SOUL. FAUST is indeed a purely functional language like LISP or HASKELL, so a nightmare for doing certain things while SOUL is very C-like… but FAUST includes simple GUI design and can export to many targets including ready to compile LV2 plugin source code. Both languages have a nice online IDE for testing code (but with FAUST you get an instant GUI as well)

Hi, one of the SOUL designers here.

It sounds like SOUL is a great match for this device, as the intention is to build a large corpus of DSP algorithms written in SOUL, which can then be JIT compiled onto various processors, including arm32/64, and hence you’ll get native support for this Pi based platform.

As for Faust, there is a faust2soul converter which means that any Faust code can be converted into a soulpatch, and hence can be played with the soul runtime. We’ve been looking at providing better integration between the two languages, which would allow a patch to combine Faust and SOUL code for example.

6 Likes

Thank you cesare!

Yeah, welcome onboard, maybe you could set up a barebones zynth (rpi + usb audio interface) as a testing platform for your proyect, I myself am really excited to have this kind of features on the zynthian