How to implement IIR filter code snippet?

If you think this is impressive, people have done millions of sinusoids on the GPU… a decade ago, and in real time. The only issue is that there’s not much of a musical application of that many partials, insofar. See Skare and Able (2019) and/or Renney, Gaster, and Mitchell (2020) for recent round-ups of GPU-based audio. The recent on-die (Intel) GPUs make it possible have low latency GPU audio too.


Pretty hard to say what the Reaktor compiler really does.

Also worth noting that there are different kinds of block/control clocks in different parts of Reaktor. In Core the control rate is the same as audio rate by default, but in other NI Reaktor lib it’s not so. Quoting from the Reaktor Core manual:

The SR bus is intended to be used for audio processing Modules like oscillators and filters, while the CR bus is intended to be used for control processing Modules like envelopes and LFOs. However, this SR/CR distinction is purely conventional and is made with the sole purpose of being able to provide different audio and control clocks ‘by default’. There is always a possibility of overriding the default connection and/or providing even more clocks by defining further buses with different names and the same Structure.
The default CR source in REAKTOR Core is identical to SR signal-wise, runs at the audio
rate and has nothing to do with the Control Rate source in the REAKTOR Primary. If
desired, the Primary Control Rate can be ‘imported’ into the CR bus by using the Library
Clk Bundle > Control > CR From Prim Macro.

Pd’s [block~] (= temporary reblocking/upsampling/overlapping) is indeed very powerful. Of course, reblocking to 1 sample incurs some CPU overhead, but only for the reblocked subpatch.

Also, there’s the [fexpr~] object which let’s you access previous input and output samples. This would be a better fit for IIR filters.