Sound As Pure Form: Music Language Inspired by Supercollider, APL, and Forth
18 comments
·June 22, 2025creata
Off-topic: I'm committing the sin of commenting on just the title here, but sclang (the SuperCollider language) is also a little inspired by J, an APL derivative.[0] Sclang has a really unconventional blend of features, and I wonder why it is the way it is - it has a mostly Smalltalk-ish syntax, with some J ideas, and also coroutines, and I think it more-or-less uses a tracing-style eDSL (like JAX; I'm sure there's a more common name for it) to turn the program into a graph to send off to the server.
pierrec
Neat, I've been meaning to check out this language! I believe it's been in the works for a long time, but only recently published. The syntax may seem esoteric at first, but it turns out the concatenative approach is uniquely suited to creative audio DSP. It's fairly simple once you get the basic idea.
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...
ofalkaed
What are the chances of getting this to compile on linux? I have no idea about how to deal with an Xcode project or have enough C++ knowledge to know if this can even be compiled on linux. CoreFoundation.h looks to be OSX? and on my quick glance that looks to be the main hurdle but that is as much as I can say.
tempodox
To get it compiled on other platforms than macOS, you'll need to port the platform-specific parts, like sound output and time measurements.
mstep
look here: https://github.com/ahihi/sapf
ViscountPenguin
Any chance of a flatpak (or some form of Linux Binary) for this? I've been wanting to play around with Music Programming for ages, but none of the options I looked at play well with Ubuntu. SonicPi in particular didn't run no matter what I did, I had to dualboot into Windows to get it working :'(
iainctduncan
Supercollider, faust, chuck, csound, pure data, common music, common lisp music, and nyquist all work on Linux. Most of the open source music programming languages make Linux a high priority!
ofalkaed
Perhaps you should try installing kxstudio, it is a collection of packages and all the configuration stuff for tuning Ubuntu or Debian for audio work. I have never used it but many seem to swear by it and I believe it takes care of setting up and configuring any of the common synthesis DSLs like SC, pd and Csound. Perhaps someone else can fill in the massive gaps I left.
ViscountPenguin
I'll have a look, maybe it'll help solve my problems!
chr15m
You should try Strudel. All you need is a web browser. https://strudel.tidalcycles.org/
ViscountPenguin
Oh wow, thanks! This is good fun.
mindcrime
I've been able to run SuperCollider on PopOS (an Ubuntu derived distro) with no problems, FWIW. Have you tried SC at all during your explorations?
ViscountPenguin
I couldn't get super collider to work, but I'm getting the impression that something may just be wrong with my install based on the replies I've gotten.
heavyset_go
SuperCollider, Csound, ChucK and Tidal all work on Linux if you want something you can easily install.
ViscountPenguin
Weirdly I've not had luck with Super collider. But I might have just fucked up my audio config at some point. It seems like other people aren't having my issues.
creata
I can second the sibling comment - it works well for me with pipewire-jack. Might be obvious to you, but the Arch Wiki page on PipeWire is useful.
heavyset_go
Give a distro with up-to-date Pipewire/Wireplumber + pipewire-jack packages a spin.
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.
cyforms
[dead]
https://www.youtube.com/watch?v=FY2WYXOdXoM