@froos i've since found simple replacements for the remaining stuff i usually miss from libc:
qsort: i turned this macrofied qsort back into a stdlib.h-compatible one: https://github.com/nothings/stb/blob/31c1ad37456438565541f4919958214b6e762fb4/deprecated/stb.h#L8721-L8846
malloc/free: turns out the original K&R book ("The C Programming Language") chapter 8.7 has an elegant malloc, meant as a teaching example, but it works: https://github.com/noncombatant/kr-malloc/blob/main/original_kr_malloc.c
bad sines only ♥️
@froos on the topic of bad sines: how cheap is a triangle function as opposed to taking x and x^2?
I wonder how much (computational) effort it is to approximate a sine with a few triangles (or mix in a square wave, idk). It dawns on me that I am talking about additive synthesis... 🤔
Does kabelsalat (or strudel?) have a way to do a phase shift?
Since tri has a lot of overtones (odd multiples of the base frequency, with alternating signs and with magnitude 1/1, 1/9, 1/25, 1/49... ) one needs some higher order tri waves to cancel these out.
I think tri(x) + 1/9 tri (3x) - 1/25 tri (5x) might be interesting as a start, but idk how to do the minus (ie phase shift). Interesting things might happen for 9x because these are the first overtones of the 2nd tri.