Live data from Hacker News

Show HN: SOUL Language 1.0 – A platform for writing and running audio code

soul-lang.github.io

51–60 of 83 posts

Re: Show HN: SOUL Language 1.0 – A platform for writing and running audio code

#51

Does it support matrix multiplication, matrix inversion, SVD, etc.? These are very important operations for array processing. I cant seem to find them in SOUL's documents.

No, the language does not currently cover matrices. Our primitives include int, float and complex in 32 and 64 bit sizes, and we also have vectors of these types. We have spoken about extending this to matrices, but it's not in the current language.

It would be very nice to include this, as it would open up some useful patterns for analog modelling and ML runtimes.

Re: Show HN: SOUL Language 1.0 – A platform for writing and running audio code

#52
post #42

I tried out SOUL back when it was first unveiled and I have some questions for the 1.0 release: - Is time/frequency analysis and its analogs a first class citizen? (STFT, wavelets, other real-time spectral/cepstral algorithms) - How do I embed the SOUL runtime into an application? Can SOUL scripts be used like user scripts in a larger application?

Full support for wide streams (i.e. streams of overlapping windowed blocks, suitable for frequency-domain work) is still to-do (though we've planned for it all along!) We've tried to make embedding it as easy as possible - there's a DLL, and a simple COM interface and a few header-only C++ classes to load and JIT-compile a patch dynamically. We have an example project showing how to do this. FWIW Tracktion Waveform i…

Good to hear! I'll stay in C/C++ until its ready then - I look forward to not needing to prototype in one language and implement in another, but for now the biggest motivator is how easy it is to do spectral/cepstral things in MATLAB (bit of a pain to write windowing code in C++, hard to test, and easy to get wrong).

Why COM (and is it actually COM, or is it COM-inspired like VST3)? It's a bit of a pain to interface with it from hosting languages (C is much more straightforward, particularly when worrying about C++ exception safety and garbage collection).

Re: Show HN: SOUL Language 1.0 – A platform for writing and running audio code

#53
post #52

Earlier quoted context omitted.

Full support for wide streams (i.e. streams of overlapping windowed blocks, suitable for frequency-domain work) is still to-do (though we've planned for it all along!) We've tried to make embedding it as easy as possible - there's a DLL, and a simple COM interface and a few header-only C++ classes to load and JIT-compile a patch dynamically. We have an example project showing how to do this. FWIW Tracktion Waveform i…

Good to hear! I'll stay in C/C++ until its ready then - I look forward to not needing to prototype in one language and implement in another, but for now the biggest motivator is how easy it is to do spectral/cepstral things in MATLAB (bit of a pain to write windowing code in C++, hard to test, and easy to get wrong). Why COM (and is it actually COM, or is it COM-inspired like VST3)? It's a bit of a pain to interface…

Why COM? Well, I hate COM in general, but it was a much better fit for this particular API than flat C functions. It comes with a bunch of C++ helper classes to make it easy to work with, and the resulting code actually ends up looking OK.

Re: Show HN: SOUL Language 1.0 – A platform for writing and running audio code

#54
I'm certainly not at a level to be able to use this kind of thing fully, and I've had several attempts in the past to try to learn to create audio plugins/instruments (as audio is my main domain, I'm a dabbling programmer), but this looks like it could help get me where I want to go.

I have a (probably dumb) question. I've looked through the docs, and I can't see how you would play a sample back (i.e. to create a simple sampler, which is one of the projects I'm most interested in creating). Am I missing something, or is that something that wouldn't be present at that level, and you'd need to roll your own?

EDIT: I've just read the code for the simple piano, and I see that it implements the sample playback itself, so I guess that answers my own question!

Re: Show HN: SOUL Language 1.0 – A platform for writing and running audio code

#55

I'm certainly not at a level to be able to use this kind of thing fully, and I've had several attempts in the past to try to learn to create audio plugins/instruments (as audio is my main domain, I'm a dabbling programmer), but this looks like it could help get me where I want to go. I have a (probably dumb) question. I've looked through the docs, and I can't see how you would play a sample back (i.e. to create a sim…

Our "Minimum Viable Piano" example is a multi-sampled piano, which should show you how it works:

https://soul.dev/lab/?id=MinimumViablePiano

Re: Show HN: SOUL Language 1.0 – A platform for writing and running audio code

#56

Earlier quoted context omitted.

We've had it running on Bela for ages now. This year we'll be releasing the SOUL network protocol, so that we can properly control remote "SOUL venues" on hardware like Bela (our current Bela network is a bit of a bodge to get it running). Faust has also had SOUL support for a while. Not sure what's new over there but maybe Stephane will see this and comment :)

Nice, it's great to see this project go from C++ rant to reality. Can't wait to never write C++ ever again :) On licensing, how will it work for creators of open source hardware? Will they still need to pay a licensing fee if they are targeting a specific device with closed driver IP? Or could there be an exception there? Do you also see yourselves supporting open low-level hardware (RISC-V, FPGA, ...?), and in that…

Right now, we haven't got an official position on how we'll handle the back-end licensing, but it's a sensible assumption is that we'll have an open-source reference implementation that people can use, and then our own optimised or custom versions that we can license.

RISC-V is an easy one to support, as our JIT uses LLVM so it's just a case of adding a build flag for that.

FPGA is more interesting. I think there could be some really clever tricks we can do for soul programs which are highly parallel, but that kind of rocket-science stuff is probably going to have to wait until we have a couple of PhD students to work on it :)

Re: Show HN: SOUL Language 1.0 – A platform for writing and running audio code

#57
post #33

Earlier quoted context omitted.

Yes - the command-line tool will take a SOUL patch and emit a full, ready-to-build JUCE project that will create all the plugin formats (and a standalone app).

Wait , does that mean I need to install the whole build chain ? Anyway to do that in a Docker container, maybe a ci/cd pipeline where I can just push my code and get an VST as a build artifact.

Yeah, at the moment you need to build it. Our ambition is to eventually offer that as a service via soul.dev so you can just download a binary.

Re: Show HN: SOUL Language 1.0 – A platform for writing and running audio code

#58
post #52

Earlier quoted context omitted.

Good to hear! I'll stay in C/C++ until its ready then - I look forward to not needing to prototype in one language and implement in another, but for now the biggest motivator is how easy it is to do spectral/cepstral things in MATLAB (bit of a pain to write windowing code in C++, hard to test, and easy to get wrong). Why COM (and is it actually COM, or is it COM-inspired like VST3)? It's a bit of a pain to interface…

Why COM? Well, I hate COM in general, but it was a much better fit for this particular API than flat C functions. It comes with a bunch of C++ helper classes to make it easy to work with, and the resulting code actually ends up looking OK.

It seems odd to spend a bunch of time working on a C++ alternative for audio DSP but to rely on one of the most annoying C++ paradigms to deal with to embed it in anything useful. I don't really care how the library code looks (if the secret sauce is proprietary and closed source anyway, that presents zero value to me as a potential licensing customer!), I care how it functions.

I want to script together many soul patches into a complex systems written in higher level languages. Integrating C++ dependencies is avoided because of the headache of FFI, C is quite straightforward. I suspect users like myself will need to wrap your COM API in its C-equivalent through manually written vtables regardless, which is its own minefield rather than a proper API.

I hope it doesn't require the COM runtime...

Re: Show HN: SOUL Language 1.0 – A platform for writing and running audio code

#60
post #33

Earlier quoted context omitted.

Wait , does that mean I need to install the whole build chain ? Anyway to do that in a Docker container, maybe a ci/cd pipeline where I can just push my code and get an VST as a build artifact.

Yeah, at the moment you need to build it. Our ambition is to eventually offer that as a service via soul.dev so you can just download a binary.

Sounds great, if I could just upload a solo file and then have a binary pop out I'd easily pay 10 or $20 a month for the privilege
Post reply on HN