Hi folks, After working on it on and off for about three years now, I figured it was time to shill my little program to you fine people.
https://sndc.studio It's a small (<10k SLOC) program to compile JSON-like "source" files into sound effects. Its main feature is its simple-yet-powerful modularity: you can design synthesizers or other instruments using built-in low level DSP functions and import them as stand-alone modules into higher level files. Its main non-feature is that it's non-real time so it simplifies the code a *lot*, and it can generate the same sound on super fast war machines or old 2004 thinkpads. It does mean that you can't tweak or experiment live however. It fits very well the git/Makefile scheme, you can version your sound effects, only re-generate the parts that you modified and so on. It's completely audio-agnostic, in fact you can use it for anything vaguely DSP-related, there are only three internal types: - floats - buffers (of floats) - strings It takes in SNDC files and spits a raw stream of floats in stdout, leaving it to the user to play it with aplay or export it to more civilized formats with sox. It doesn't even have a notion of channels. Everything is mono until you decide to interlace multiple channels into one buffer. Finally, it has quite a bunch of built-in modules like basic oscillator, noise, reverb, echo, filters, fft and reverse fft and all that stuff. It only has one dependency to build it: FFTW3. I'm keen to get feedback if anyone is into DSP/audio synthesis as much as I am. Cheers, syg