The author probably hasn't tried them (otherwise they would be in the Readme), but there are actually a couple of existing Forth-like audio languages. Quite the niche. I'm one of the most avid users of one such language called Sporth, for which I made an online live playground at https://audiomasher.org/
The Sporth author created multiple stack-based audio languages and I haven't even kept up with all of it. He has some interesting projects at https://git.sr.ht/~pbatch/
In any case, sapf looks very carefully designed, and the addition of functional elements inspired by APL seems like it complements the stack approach very well. And the examples actually sound good to my ears, which isn't a requirement but generally a good sign. I'm tempted to get cracking on a WASM build right away...
Between this and Uiua I'm starting to think that the APL and Forth fans (or more generally array language and concatenative language fans) should team up more often. The paradigms seem to complement each other quite nicely.
Based on the WHY section of the readme I get the impression that the author of this language would agree with me.
SAPF was originally written in 2011 and only recently made open source.
The syntax is hardware-inspired, wysiwyg-style lazy diff graph updating. you can use it directly through wasm on the web page; there is also a cross-platform cli version:
https://github.com/glicol/glicol-cli
I am currently working on porting it to no std embedded systems
Here's an online presention by James about SC, SAPF and some other recent endeavours: https://youtu.be/fmVdfQNPzkE?t=1537
Does anyone else find this extremely cool from a conceptual point of view, even without the music language context? (very tempted to make an "it's music to my ears" dad joke right now)
Admittedly I haven’t used any other sound programming language, so my opinion is heavily biased ;-)
If you've never used anything other than SC, it's well worth learning some others. Different paradigms make different things easier, and thus affect what you are most likely to do with them.
Personally, my axe of choice these days is running text languages from within the patchers, such as Csound in Max or PD.
100% this - strangely I just discovered that very thing by taking Node-RED and porting it to Erlang[1]. In doing that, I realised that Erlang has concepts (supervisor, gen_server, gen_statem,...) that would be very applicable to Node-RED and that could be reverse "ported" to the NodeJS based Node-RED. Might do that but the way NodeJS works, it might be more difficult.
The reason I thought Erlang would be a good fit for flow based programming are the independence of processes and their communication via messages. This is the exact same thing that happens in flow based programming, so Node-RED should fit well - I thought.
> Pure Data's UI works identically on all platforms.
How weird - PDs UI is exactly the same as Node-RED only built in the 1990s! The idea of flow-based visual programming is what Node-RED is about. It would be interesting to investigate the granularity of nodes in PD versus NR.
> Pure Data (or just "Pd") is an open source visual programming language for multimedia.
Have there been any efforts to transport those ideas for other applications? E.g., has anyone created a website with PD?
Most rolling release distros will have the latest Pipewire. Ubuntu freezes packages for months to years depending on the release you're using and you really want the latest Pipewire for a good experience.
- Focusing on upper harmonic content. Starting with a saw wave gets you far here, as it starts with _all_ the odd and even harmonics which you can then gently trim away. In particular, even harmonics in the mid range are often described as 'warm.'
- Using resonant filters. These too contribute to a sense of richness and warmth, especially if the resonant peak is closer to the mid range.
- Adding a sub oscillator below the primary one to give it a subtle low hum.
- Adding more oscillators and detuning them slightly with respect to each other for stereo width and play in the harmonics.
- Modulating pitch and filter parameters with slow, gentle LFOs.