pierrec 35 days ago [-]
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...

vanderZwan 35 days ago [-]
> the addition of functional elements inspired by APL seems like it complements the stack approach very well.

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.

lfnoise 34 days ago [-]
It doesn't appear in the Readme because I wrote the Readme in 2011 before Sporth existed.
lfnoise 34 days ago [-]
Hello, I am the author of Sound as Pure Form and SuperCollider. I also have a YouTube channel for my video synthesis experiments (over 2600 videos): https://www.youtube.com/@VideoSynthExperiment

SAPF was originally written in 2011 and only recently made open source.

heavyset_go 33 days ago [-]
Great stuff
spacechild1 35 days ago [-]
For those who don't know: lfnoise is James McCartney, the original author of Supercollider.
chaosprint 35 days ago [-]
If you are interested in music language, you might also want to try Glicol:

https://glicol.org/

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

zX41ZdbW 35 days ago [-]
Also, I'd like to share a musical synthesizer in SQL: https://github.com/ClickHouse/NoiSQL (my project).
spacechild1 34 days ago [-]
If anyone has questions, there is SAPF section on the Supercollider forum: https://scsynth.org/c/sapf/34. James shows up from time to time to answer questions.

Here's an online presention by James about SC, SAPF and some other recent endeavours: https://youtu.be/fmVdfQNPzkE?t=1537

vanderZwan 35 days ago [-]
> It intends to do for lazy sequences what APL does for arrays: provide very high level functions with pervasive automatic mapping, scanning, and reduction operators.

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)

ssfrr 34 days ago [-]
Cool and surprising to see built-in support for the Snyderphonics Manta [1], which is a pretty niche controller. I wrote the `libmanta` library [2] that is vendored into sapf. Haven't touched the library in a few years (though I still use my Manta), so it feels good to see it pop up!

[1]: https://snyderphonics.com/manta.htm

[2]: https://github.com/ssfrr/libmanta

lantertronics 33 days ago [-]
Hi! This is Aaron Lanterman, who created the video. Thanks to mindcrime for posting this here (I was wondering why I saw a sudden spike in views!)
ofalkaed 35 days ago [-]
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.
mstep 35 days ago [-]
35 days ago [-]
35 days ago [-]
ViscountPenguin 35 days ago [-]
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 35 days ago [-]
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!
Towaway69 35 days ago [-]
I would recommend supercollider because it’s UI components also translate well from Mac to Linux - I created a single app with a nice UI in supercollider and it worked seamlessly on both Linux and Mac.

Admittedly I haven’t used any other sound programming language, so my opinion is heavily biased ;-)

iainctduncan 35 days ago [-]
Pure Data's UI works identically on all platforms. The others I mentioned are text languages.

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.

Towaway69 34 days ago [-]
> Different paradigms make different things easier, and thus affect what you are most likely to do with them.

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?

[1] = https://github.com/gorenje/erlang-red

wwweston 35 days ago [-]
Like, using the patchers for flow, and the text to define node behavior? If so, can you offer pointers to where that’s explained for pd?
flats 34 days ago [-]
+1, Max for the rapid prototyping & flexible control, Csound for its concision & high fidelity.
ofalkaed 35 days ago [-]
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 35 days ago [-]
I'll have a look, maybe it'll help solve my problems!
chr15m 35 days ago [-]
You should try Strudel. All you need is a web browser. https://strudel.tidalcycles.org/
ViscountPenguin 35 days ago [-]
Oh wow, thanks! This is good fun.
mindcrime 35 days ago [-]
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 35 days ago [-]
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 35 days ago [-]
SuperCollider, Csound, ChucK and Tidal all work on Linux if you want something you can easily install.
ViscountPenguin 35 days ago [-]
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.
heavyset_go 35 days ago [-]
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.

creata 35 days ago [-]
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.

https://wiki.archlinux.org/title/PipeWire

cyforms 35 days ago [-]
Might not be what you're looking for and also not FOSS but you could look into Bitwig
polotics 35 days ago [-]
I am then quite torn: keep using SuperCollider with all the accumulated UGens and example code, or switch to this elegant language and start over with a lot of basics... Leading to the question: any bridges or ways to integrate and reuse between the two?
semi-extrinsic 35 days ago [-]
I guess you know about them already, but TidalCycles / Strudel / Sardine / Bacalao / Overtone can be interesting to explore in this direction. Not specifically sapf-integration, but various ways of using SC with more elegant langs.
polotics 22 days ago [-]
I didn't know of all of them, so thanks a lot!
6r17 35 days ago [-]
I wonder if AI could help you translate those or write a translater ? Idk if the language is complex tough
bjt12345 35 days ago [-]
How does it have such a warm analog-like sound in the demo?
jrajav 35 days ago [-]
I don't know which demo you mean exactly, but 'analog' qualities can be achieved in a number of simple ways in the digital realm (without even getting into advanced modeling). A few of them:

- 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.

bwanab 34 days ago [-]
Having just tried it out, it has the same warm sound in the actual implementation.
SomeHacker44 35 days ago [-]
Seems to be MacOS only.
spacechild1 35 days ago [-]
There's a cross-platform fork (WIP): https://github.com/ahihi/sapf
curtisszmania 35 days ago [-]
[dead]