# Feedback suppressor

> Feedback suppressor: tracks howling tones and places up to eight narrow time-domain notches on them, with no added latency.

Source: https://docs.tune.toys/nodes/std.suppressor/

Catch the howl of a microphone feeding back through speakers and notch it out before it takes over.

## What it does

The suppressor listens to its input in narrow frequency bins (4096-point analysis up to 48 kHz, 8192 above, about 12 Hz apart), a quarter frame at a time. It looks for the signs of feedback: a single peak between 60 Hz and 18 kHz, louder than −50 dBFS, that stands far above the average level, is much louder than the bins a few steps either side, and has no partner at twice or half its frequency. Notes have harmonics; feedback is a pure tone. A peak that keeps those signs for several frames places a 6 dB notch on its exact frequency, and each time it persists the notch deepens by 3 dB, up to Max depth.

The notches are narrow bell cuts that run on the audio itself, so the suppressor adds no latency. Depth changes glide at 3 dB per 10 ms. Once a howl stops, its notch recovers over Release and is freed. Every lane has its own detector and notches.

## When to use it

Use it in a live chain after a microphone: a talk-back mic, a vocal, a kit mic in a small room, or a Toy that routes its own output back into an input. It is not a substitute for good mic placement or a lower monitor level. To tame resonances in a mix rather than feedback, use the [Resonance suppressor](https://docs.tune.toys/nodes/std.resonance/).

## Ports

<!-- ports:start -->

| Port    | Direction | Signal | Lanes                   |
| ------- | --------- | ------ | ----------------------- |
| `audio` | Input     | Audio  | Inferred from the cable |
| `audio` | Output    | Audio  | Inferred from the cable |

<!-- ports:end -->

## Parameters

<!-- parameters:start -->

| Parameter     | Label       | Range    | Default | Unit | Scale  | Notes                                                                                                                                                       |
| ------------- | ----------- | -------- | ------- | ---- | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `sensitivity` | Sensitivity | 0 to 1   | 0.5     | %    | linear | How readily a steady, pure tone counts as feedback. Higher catches howls sooner but may notch held notes. Stored as a fraction; shown ×100 as a percentage. |
| `max_depth`   | Max depth   | 3 to 40  | 18      | dB   | linear | The deepest any notch may go. A notch deepens in steps while its howl persists.                                                                             |
| `q`           | Q           | 5 to 100 | 30      | Q    | log    | Notch width: 30 is about a twentieth of an octave. Higher is narrower and colours the sound less.                                                           |
| `notches`     | Notches     | 1 to 8   | 6       |      | linear | How many notches may be active. When all are in use, a new howl replaces the shallowest notch.                                                              |
| `release_s`   | Release     | 1 to 120 | 20      | s    | log    | Time for a notch at Max depth to recover fully once its howl is gone. Notches that recover to nothing are freed.                                            |
| `freeze`      | Freeze      | 0 to 1   | 0       |      | linear | On holds every notch as it is: no new notches and no release. Choices: 0 Off, 1 On.                                                                         |
| `reset`       | Reset       | 0 to 1   | 0       |      | linear | A change from Idle to Clear fades every notch out over 10 ms and starts tracking afresh. Choices: 0 Idle, 1 Clear.                                          |

<!-- parameters:end -->

### Sensitivity (`sensitivity`)

How readily a steady, pure tone counts as feedback. Higher values react sooner and to quieter howls; lower values wait longer and may let a howl build. At 50 % a clear howl gets its first notch within about 0.2 seconds and 15 dB of cut within half a second.

### Max depth (`max_depth`)

The deepest any notch may go, from 3 to 40 dB.

### Q (`q`)

The width of every notch. 30 is about a twentieth of an octave. Higher values are narrower and take less of the music with them.

### Notches (`notches`)

How many notches may be active at once, from 1 to 8. When all are in use, a new howl takes over the shallowest notch.

### Release (`release_s`)

The time, in seconds, for a notch at Max depth to recover once its howl is gone. Long releases keep a room rung out; short ones give the sound back quickly.

### Freeze (`freeze`)

On holds every notch exactly as it is: no new notches and no release. Ring out the room, then freeze.

### Reset (`reset`)

A change from Idle to Clear fades every notch out over 10 ms and starts listening afresh. Bind it to a Trigger control.

## Tips

- Ring out before the show: raise the monitor level slowly until a howl starts, let the suppressor catch it, repeat, then switch Freeze on.
- Lower Sensitivity if held notes from a flute or synth get notched.
- The notches are kept only while the Toy runs. Run the ring-out again after reloading.

## See also

[Parametric EQ](https://docs.tune.toys/nodes/std.eq/), [Resonance suppressor](https://docs.tune.toys/nodes/std.resonance/), [Limiter](https://docs.tune.toys/nodes/std.limiter/), [Compressor](https://docs.tune.toys/nodes/std.compressor/).
