yeah Id love to do this stream at some point. one thing bogdan alludes to is that the DSP code is very terse & dumb, written & #39;a sample at a time& #39; just using clang ext_vector extension to represent (eg) 7.1 audio as a & #39;float8& #39; in an AVX register. it turns out to generate ok code!/ https://twitter.com/pervognsen/status/1250391436136071168">https://twitter.com/pervognse...
I didnt do extensive measurements, but I tried comparing doing 5 cascaded biquads (for 5 band EQ) & #39;a sample at a time& #39; with 7.1 samples in a single float8 (becomes AVX register) against & #39;buffer at a time& #39; as its often written, and the sample at a time was easier to read & faster!
after that, I just went all in on & #39;sample at a time& #39;. it means our inner loop fits on a single (landscape) page of C, including chorus, ladder filter, sends, paramater interpolation, ADSR envelope, EQ, etc. in fact, here it is!
all the function calls in that pic are *super dumb* coz they are just & #39;do one sample& #39; and can be written like the textbook. for example, heres the & #39;DirectForm2& #39; function that is called 5 times for 5 band eq:
You can follow @mmalex.
Tip: mention @twtextapp on a Twitter thread with the keyword “unroll” to get a link to it.

Latest Threads Unrolled: