# Resonance suppressor

> Spectral resonance suppressor: finds narrow peaks that stand above the local spectral average and pulls them down dynamically, bin by bin.

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

Smooth out harsh, ringing frequencies only when and where they appear, without a fixed EQ cut.

## What it does

The suppressor splits the sound into narrow frequency bins (2048-point frames up to 48 kHz, 4096 above) and compares each bin with the average of its neighbours, over a window that is wide at low Sharpness and narrow at high Sharpness. Where a bin between Low and High stands more than Threshold above that average, it is pulled back down to Threshold, but never by more than Depth. The comparison leaves out the bin itself and its closest neighbours, so a peak cannot raise its own reference. Cuts grow with Attack and recover with Release, so a resonance is only cut while it rings.

The node delays its output by one frame, 2048 samples (about 43 ms at 48 kHz, 4096 above), and reports that latency, so the rest of the Toy stays aligned.

## When to use it

Use it on a boxy or whistling microphone, a harsh synth, a guitar amp that rings at one note, or a mix bus that turns shrill when it gets loud. A fixed narrow EQ cut works when the frequency never moves; this follows peaks that come and go. For feedback in a live system, use the [Feedback suppressor](https://docs.tune.toys/nodes/std.suppressor/), which adds no latency.

## 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                                                                                                                                                                                                  |
| ------------ | --------- | ----------- | ------- | ---- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `depth`      | Depth     | 0 to 30     | 9       | dB   | linear | The most any bin is turned down.                                                                                                                                                                       |
| `sharpness`  | Sharpness | 0 to 1      | 0.5     | %    | linear | Narrows the average a peak is compared with, from one octave around it at 0 to a sixth of an octave at 100 %, so only sharper resonances are caught. Stored as a fraction; shown ×100 as a percentage. |
| `threshold`  | Threshold | 0 to 24     | 6       | dB   | linear | How far a bin may rise above its local average before it is pulled down. A peak is pulled back to this height, by at most Depth.                                                                       |
| `attack_ms`  | Attack    | 1 to 200    | 10      | ms   | log    | How fast a cut grows on a new resonance.                                                                                                                                                               |
| `release_ms` | Release   | 10 to 2000  | 150     | ms   | log    | How fast a cut recovers once the resonance fades.                                                                                                                                                      |
| `low_hz`     | Low       | 20 to 20000 | 200     | Hz   | log    | Lowest frequency the suppressor works on; below it the signal passes untouched.                                                                                                                        |
| `high_hz`    | High      | 20 to 20000 | 12000   | Hz   | log    | Highest frequency the suppressor works on; above it the signal passes untouched.                                                                                                                       |
| `mix`        | Mix       | 0 to 1      | 1       | %    | linear | Blend from the dry input, delayed to stay aligned, to the suppressed signal. Stored as a fraction; shown ×100 as a percentage.                                                                         |
| `listen`     | Listen    | 0 to 1      | 0       |      | linear | Removed plays only what the suppressor takes out, to hear which resonances it catches. Choices: 0 Off, 1 Removed.                                                                                      |

<!-- parameters:end -->

### Depth (`depth`)

The deepest cut, in dB, from 0 to 30. 6 to 12 dB tames most resonances without dulling the sound.

### Sharpness (`sharpness`)

The width of the neighbourhood a peak is compared with: one octave around it at 0 %, a sixth of an octave at 100 %. Higher Sharpness catches only narrow rings and leaves broad tonal character alone; lower Sharpness also evens out wider bumps.

### Threshold (`threshold`)

How far, in dB, a bin may stand above its neighbourhood before it is pulled back. Lower values smooth the spectrum more.

### Attack and Release (`attack_ms`, `release_ms`)

How fast a cut grows on a new resonance and how fast it recovers once the resonance fades.

### Low and High (`low_hz`, `high_hz`)

The frequency range the suppressor works in. Outside it, the signal passes untouched.

### Mix (`mix`)

Blends the suppressed signal with the dry input, delayed by the same frame so the two stay aligned.

### Listen (`listen`)

Removed plays only what the suppressor takes out (the dry sound minus the result, scaled by Mix), to hear which resonances it catches.

## Tips

- Use Listen first: switch to Removed and adjust Threshold and Sharpness until you hear only the ringing, then switch back.
- Keep Low above the fundamental of a voice or instrument so its body is never cut.
- Long Release values sound smoother; short ones follow fast-changing material more closely.

## See also

[Parametric EQ](https://docs.tune.toys/nodes/std.eq/), [Noise reduction](https://docs.tune.toys/nodes/std.denoise/), [Feedback suppressor](https://docs.tune.toys/nodes/std.suppressor/), [Compressor](https://docs.tune.toys/nodes/std.compressor/).
