Hey Brendon
Csound has tonnes in the box. Just some thoughts...
You could create a whole bunch of wavetables with all different sorts of shapes using the GEN opcodes, then plug those into distort or similar.
You could make UDOs running at 1-sample block rate, and write some formulas..this is similar to Faust
I reckon you could go a whole lot further than Faust when you start adding convolution/spectral opcodes into the mix, as Faust doesn’t have this out of the box (sounds like something is in the post soonish though).
Maybe something there helps?
Si