Feedback suppressor

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

  • Filter
  • Since 0.2.0
  • feedback
  • howl
  • ring out
  • notch
  • live sound
  • microphone
  • pa

Open in TuneToys

Feedback suppressor as the Patch draws it, at default values: inlets on the left, outlets on the right.

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.

Ports#

PortDirectionSignalLanes
audioInputAudioInferred from the cable
audioOutputAudioInferred from the cable

Parameters#

ParameterLabelRangeDefaultUnitScaleNotes
sensitivitySensitivity0 to 10.5%linearHow 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_depthMax depth3 to 4018dBlinearThe deepest any notch may go. A notch deepens in steps while its howl persists.
qQ5 to 10030QlogNotch width: 30 is about a twentieth of an octave. Higher is narrower and colours the sound less.
notchesNotches1 to 86linearHow many notches may be active. When all are in use, a new howl replaces the shallowest notch.
release_sRelease1 to 12020slogTime for a notch at Max depth to recover fully once its howl is gone. Notches that recover to nothing are freed.
freezeFreeze0 to 10linearOn holds every notch as it is: no new notches and no release. Choices: 0 Off, 1 On.
resetReset0 to 10linearA change from Idle to Clear fades every notch out over 10 ms and starts tracking afresh. Choices: 0 Idle, 1 Clear.

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, Resonance suppressor, Limiter, Compressor.

Help patches

Each help patch is an ordinary Toy that teaches one idea. The diagram shows the Patch; the preview shows its Frame. Open it in TuneToys to play and edit it.

1. Catch a howl

beginner Teaches: sensitivity, max_depth, freeze, reset

A pure 1250 Hz tone stands in for feedback over a saw and room noise; the suppressor notches it out.

Patch: Oscillator “band” audio output connected to Mixer band.in input. Noise audio output connected to Mixer room.in input. Oscillator “howl” audio output connected to Mixer howl.in input. Mixer audio output connected to Feedback suppressor audio input. Feedback suppressor audio output connected to Patch outputs audio input.
Connections as text
  • Oscillator “band” audio output connected to Mixer band.in input
  • Noise audio output connected to Mixer room.in input
  • Oscillator “howl” audio output connected to Mixer howl.in input
  • Mixer audio output connected to Feedback suppressor audio input
  • Feedback suppressor audio output connected to Patch outputs audio input
  • The sine is a stand-in for feedback: steady, pure and loud. Within a fraction of a second a narrow notch lands on it and deepens to Max depth.
  • The saw is left alone: its harmonics show it is a note, not a howl. Lower Sensitivity if held notes ever get notched.
  • Freeze holds the notches once the room is rung out. Reset fades them all and starts listening afresh.
Frame preview: Catch a howlFrame “Catch a howl” with 6 elements: toggle Freeze, text heading, knob Howl, knob Max depth, trigger Reset, knob Sensitivity.FreezeCATCH A HOWL0.2 linearHowl18 dBMax depthReset0.5 %Sensitivity
Frame preview (static). Controls show their default values.

Open in TuneToys

2. Shape the notches

intermediate Teaches: notches, q, release_s

Three howls, one coming and going: Notches limits how many are caught, Q sets their width and Release how long they stay.

Patch: Noise audio output connected to Mixer room.in input. Oscillator “low” audio output connected to Mixer low.in input. Oscillator “mid” audio output connected to Gain audio input. Control LFO control output connected to Gain @level input. Gain audio output connected to Mixer gate.in input. Oscillator “high” audio output connected to Mixer high.in input. Mixer audio output connected to Feedback suppressor audio input. Feedback suppressor audio output connected to Patch outputs audio input.
Connections as text
  • Noise audio output connected to Mixer room.in input
  • Oscillator “low” audio output connected to Mixer low.in input
  • Oscillator “mid” audio output connected to Gain audio input
  • Control LFO control output connected to Gain @level input
  • Gain audio output connected to Mixer gate.in input
  • Oscillator “high” audio output connected to Mixer high.in input
  • Mixer audio output connected to Feedback suppressor audio input
  • Feedback suppressor audio output connected to Patch outputs audio input
  • Three steady tones stand in for three feedback frequencies. The middle one sounds for 2.5 seconds, then rests for 2.5.
  • With Notches at 2, only two can be caught; a new howl takes the shallowest notch. Raise it to 3 to catch all of them.
  • Q narrows each notch so less of the music goes with it. Release is how long a notch takes to recover once its howl stops.
Frame preview: Shape the notchesFrame “Shape the notches” with 4 elements: text heading, knob Notches, knob Q, knob Release.SHAPE THE NOTCHES2Notches30 QQ4 sRelease
Frame preview (static). Controls show their default values.

Open in TuneToys

  • Parametric EQ Parametric EQ with up to 32 reorderable RBJ bands: cuts, shelves, bells and notches, per-band bypass and output trim.
  • Resonance suppressor Spectral resonance suppressor: finds narrow peaks that stand above the local spectral average and pulls them down dynamically, bin by bin.
  • Limiter Linked or independent sample-peak limiting with hold and adaptive release.
  • Compressor Peak/RMS compression with a sidechain key input, detector filtering, hold, adaptive release and channel linking.

Edit this page on GitHub

esc

↑ ↓ move↩ open⌘↩ new tabesc close