The Filter Remembers Its Output — FIR → IIR

Remember what feedback did to our delay? Now we use the same idea inside a filter, at sample level. Instead of using only previous inputs, we let a previous output contribute to the next result.

Conceptual bridge: FIR = stored inputs. IIR = stored inputs plus previous outputs fed back into the calculation.

1. The simplest feedback filter

y[n] = x[n] + a·y[n−1]
INPUT x[n]
→
+
→
OUTPUT y[n]
↑
z−1
previous output
←
× a
feedback coefficient
←

The output is stored for one sample, multiplied by a, and added back into the next calculation.

2. Trigger one impulse — watch it keep going

Why “Infinite Impulse Response”? With non-zero feedback, the response can continue mathematically forever: 1 → a → a² → a³ → … It may become tiny, but it does not have a fixed tap-length where it abruptly stops.

3. FIR versus IIR — same idea as delay feedback

FIR
Use current and previous input samples. Once the impulse has passed all taps, the response ends.
IIR
Previous outputs can feed back into the next output. The response can persist indefinitely.
Delay analogy
Delay without feedback → one repeat. Delay with feedback → repeated returns. Same conceptual move.
Remember those mysterious b and a coefficients?

On our first filter page we saw coefficients labelled b0, b1, b2, a1 and a2. At the time they looked like a collection of fairly arbitrary numbers. We can now see what the two groups are doing.

b coefficients = feedforward / input taps
They multiply the current and stored input samples: x[n], x[n−1], x[n−2]...

a coefficients = feedback / previous outputs
They multiply stored output samples: y[n−1], y[n−2]...

y[n] = b0·x[n] + b1·x[n−1] + b2·x[n−2] − a1·y[n−1] − a2·y[n−2]
b = INPUT / FEEDFORWARD     |     a = OUTPUT / FEEDBACK

So the apparently complicated equation is really just the two ideas we have already built:

FIR-style input taps + IIR feedback = the complete recursive filter.

Small technical note: the feedback terms are commonly written with a minus sign, although implementations may store the coefficient signs differently. The useful idea to remember here is b = feedforward and a = feedback.

4. Turn feedback into resonance

Feedback becomes especially useful when the loop is frequency-selective. Certain frequencies can be reinforced every time they circulate, producing a resonant peak.

Resonance is not a magic EQ bump. It is energy around a particular frequency being repeatedly reinforced by the feedback structure.
Remember physical modelling? We've heard this before.

When we used a very short delay with feedback, the individual repeats merged together until we couldn't hear them separately. Instead, energy circulating around the loop reinforced specific frequencies, causing the system to ring at a distinct pitch.

That was the foundation of Karplus-Strong physical modelling. Here, we are using that exact same principle at the sample level: feedback repeatedly reinforces particular frequencies, creating filter resonance.

Why the sign difference?
You might notice some equations write feedback with a plus sign (+ a·y[n−1]) while general DSP textbooks use a minus sign (− a1·y[n−1]). Mathematically, a minus sign makes positive feedback values subtract from the input, which is convenient for keeping phase relationships consistent in filter design. Code implementations often store the negative sign directly inside the coefficient itself so the DSP loop can stick to simple addition. The core mechanic remains identical: output feeds back into input.

The Core DSP Takeaway:
The same small set of ideas keeps reappearing in different contexts. Delay, filtering, resonance, physical modelling, phasing, and reverb may sound like completely different audio effects, but under the hood, they are all built by rearranging four primitive operations: STORE, MULTIPLY, ADD, and FEEDBACK.

5. Hear the resonance grow

Noise makes the resonant frequency easy to hear. Increase resonance and the broad noise starts to develop an obvious pitched ring around the selected frequency.

6. What changes as feedback rises?

a = 0
No recursive contribution. Output only reflects the direct input path.
a ≈ 0.5
Feedback decays quickly.
a ≈ 0.9
Long memory / strong ringing.
a → 1
Very long persistence; system approaches sustained oscillation.
a > 1
Energy grows on every pass → unstable.
Practical filters use carefully chosen coefficients and structures to remain stable. The point here is to see why feedback creates long-lived, resonant behaviour.

7. Back to the DSP toolbox

STORE PREVIOUS OUTPUT → × COEFFICIENT → + BACK IN → STORE AGAIN

We have not invented a new operation. We have simply changed where the stored value comes from: previous outputs now participate too.

Next: use these ideas to build practical filter responses — low-pass, high-pass, band-pass, notch, bell, shelf, Q/resonance — and then the special all-pass filter that leads us back to phasing and reverb diffusion.