alt.hn

3/15/2026 at 12:58:13 PM

Show HN: What if your synthesizer was powered by APL (or a dumb K clone)?

https://octetta.github.io/k-synth/

by octetta

3/15/2026 at 4:35:43 PM

Marshall Lochbaum's APL-derived language BQN has some nods towards audio synthesis too:

https://mlochbaum.github.io/BQN-Musician/synth/index.html

by jodrellblank

3/15/2026 at 4:41:30 PM

BQN kicks-ass and I've spent hours listening to the Array Cast podcast while in SoCal traffic. I'll check his stuff out with an eye towards the audio stuff.

I'm an APL newb... while I've been writing code-for-cash forever (C, etc.) I've had a long-time interest in APL languages, but I'm just messing around after working on waveform generation for another sound project I have in the works (https://github.com/octetta/skred ... https://youtu.be/L5-3gBpJsAo?si=JdBlntzn4doY-c3s).

While I was working on this I remember the first book I saw in the public library on computer programming was about APL (probably sometime around 1976)... I didn't have access to a "real computer" for another year after that and no APL for decades, but some ideas stick around, LOL.

by octetta

3/15/2026 at 5:43:40 PM

Also Uiua:

https://www.uiua.org/tour#audio

https://www.uiua.org/tutorial/audio

by bradrn

3/15/2026 at 5:50:37 PM

Wowie! I'M NOT WORTHY! Cool stuff!

by octetta

3/15/2026 at 5:54:57 PM

It’s not my language, to be clear! In fact I’ve never even tried it… my array programming experience so far has mostly been with J.

by bradrn

3/15/2026 at 5:57:55 PM

Doesn't matter. Just happy people are doing weird stuff like this and appreciate the share. I looked at a bunch of APL-ish implementations and kind of ran with the K-simple code (links on the repo). What background do you come to J from? Another programming language? How do you like it?

by octetta

3/15/2026 at 6:15:44 PM

> What background do you come to J from? Another programming language?

Yes, I’m very fond of trying out different languages. My main language for personal projects is Haskell.

> How do you like it?

I haven’t used J for a while, actually, but I recall finding it a bit confusing, especially when rank manipuations are involved. It has a larger vocabulary than most array languages, which I felt made it hard to learn. It was great fun though!

by bradrn

3/15/2026 at 6:40:58 PM

Fun. I've lost count of the languages I've learned and gotten paid to use over the years, but it's mostly very exciting to add a new one to the list.

Haskell is one I haven't used yet. The closest I've come to that is a weekend fling with OCaml... much respect for the ML work though!

I hear you for the complexities in J though. I've intentionally limited k-synth to single letter upper case variables and the verbs are also one character... I might regret this at some point.

Have fun! It makes the world a better place!

by octetta

3/15/2026 at 3:47:29 PM

How do we get it to play Kompressor? https://youtu.be/9tlA0IyKjiI

by jart

3/15/2026 at 3:56:29 PM

Wowie... Jart commented! I'm on it my friend. Certainly sequencing is a good thing to add.

by octetta

3/16/2026 at 11:04:01 AM

Could a K-style array language be a practical way to design audio waveforms and DSP patches?

by swaminarayan

3/16/2026 at 11:49:56 AM

that's what i'm playing with... thoughts?

by octetta

3/16/2026 at 9:22:24 AM

I fixed a few broken examples in the README.md file but I don't have the related readme.html file used in the web app getting automatically updated, so they're out of sync at the moment.

by octetta

3/15/2026 at 6:23:29 PM

A warning... if you save a setup to JSON, it naively stores the generated waveforms put in slots and the notebook, so the files can become quiet large. I have a plan to just keep the code behind the waves and regenerate the waveforms at load time.

by octetta

3/15/2026 at 6:15:22 PM

On the C-side, I'm going to add a UDP listener to the code so I can send k-synth incantations live from Emacs (something I did for my skred program at the suggestion of an Emacs user). Let me know if anyone wants to know about this when it's usable. On the desktop app side, I use miniaudio (thank's Macron) so this is portable to the usual suspects. I also made a single header file cross platform midi library which I have some devious plans for in this space. Stay tuned.

by octetta

3/15/2026 at 3:34:42 PM

Pretty cool, one suggestion for the site would be to have templates you can quickly load, copy, edit, and share. Sort of like strudel.cc has!

by hmokiguess

3/15/2026 at 4:59:30 PM

At any rate, in case it's hard to see, definitely try loading the dm-bell.ks patch, putting it in slot one so the melodic pad can play it... it's quick and dirty to see what's capable in a few keystrokes... although I'm sure the PD and ChucK and SC and ... wizards could put me to shame in a showdown, LOL.

by octetta

3/15/2026 at 3:42:11 PM

i wimped out and just have the patches being loaded from my github repo. good suggestion though.

by octetta

3/15/2026 at 4:34:10 PM

Did you know you can embed strudel?

https://strudel.cc/technical-manual/project-start/

by xrd

3/15/2026 at 4:55:57 PM

Strudel (and PureData, and ChucK, and SuperCollider, and AMY) are all great projects, but they weren't scratching my itch, so after I got laid off from a FAANG role, I rage/anxiety started writing code for stuff fun-ner than writing code for radios and routers and satellites... this is where my cortisol / dopamine lead me. No disrespect to those other projects... all have been inspirational and are a heck of a lot more "respectable" than my playground code.

by octetta

3/15/2026 at 4:48:54 PM

I don’t think this is relevant to my analogy there, what were you thinking here?

by hmokiguess

3/15/2026 at 5:28:39 PM

You are right but I wondered if octetta had considered combining his ui with strudel. I am fascinated by it and have been attempting to riff off it and create new creative interfaces.

by xrd

3/15/2026 at 5:35:37 PM

I'll take a look... it's probably not obvious, but the language engine is actually written in C and emscripten-ed to WASM, so I've already crossed several bridges to get this done. Absolutely riff off this interface... would love to see what you can make. My stuff is MIT licensed, so tear it up! On a side note, I was able to meet Sam Aaron of SonicPi / Tau5 at Goarmire back in September which was cool... he teased us with Super Collider in JS then and since, he's crossed the finish line on that stuff. We live in amazing times! Have fun!!!

by octetta

3/15/2026 at 9:19:40 PM

That's a great story. It's beautiful you are building on the shoulders of giants and putting it out there for others to build upon. Very exciting times, indeed!

by xrd

3/15/2026 at 5:17:59 PM

See also: Stanley Jordan, "APL For Music".

https://dl.acm.org/doi/pdf/10.1145/75144.75174

(!!!)

(Wait, what? That Stanley Jordan?) (Yep.)

by jdontillman

3/15/2026 at 5:31:25 PM

Wow! I had no idea, will look here for inspiration too. Thanks!

by octetta

3/15/2026 at 3:42:10 PM

This is great

by steveBK123

3/15/2026 at 3:42:24 PM

thanks!

by octetta

3/15/2026 at 6:28:41 PM

> ...and the right-to-left evaluation logic.

The evaluation order doesn't matter as much as you don't really know what kind of function/operator you have at parse time so have to do a bunch of shenanigans to defer that decision until runtime while still keeping it efficient. Kind of fiddly to get right but once it works, it just works.

Claude and me (and a ton of decades old research) pretty much figured out all the complications in the APL parse/eval stack (https://github.com/dan-eicher/AiPL).

by UncleEntity

3/15/2026 at 6:42:06 PM

I'm looking forward to checking out your stuff...

by octetta

3/16/2026 at 2:52:00 AM

[flagged]

by stainlu

3/15/2026 at 10:59:30 PM

[dead]

by useftmly