PV_Control:
Filter:
PV_Control (extension) | UGens > FFT

PV_Control
ExtensionExtension

Tracks Magnitudes and Reduces Output of Bins

Description

Tracks the Magnitudes of N bins of an FFT and Reduces Output of those Bins whose magnitude exceeds a threshold for a finite period.

Class Methods

.new

Arguments:

buffer0

Buffer created by the FFT when analysing the incoming signal.

buffer1

Buffer to which PV_Control writes the alterations to be made to the magnitude of each bin. These values are scaled to be sent to MidEQ UGens, which will reduce the magnitude of the bins being attenuated.

thresh=0.6, mulFactor=0.8, limiter=10, attackReleaseFrames=50, sustainZeroFrames= 100, waitGoFrames=50, tripCount=2, tripBlockFrames=500, highestBin

thresh

Magnitude is summed over time and multiplied by mulFactor. When a bin accumulates magnitude that crosses this threshold, it will be zeroed out. Lower numbers == quicker detection of feedback.

mulFactor

Summed amplitude over time is multiplied by this number. Lower numbers == quicker detection of feedback.

limiter

Limits the maximum magnitude of each of the bins.

attackReleaseFrames

The number of frames the algorithm takes to ramp the magnitude of the bin down from 1*mag to 0*mag.

sustainZeroFrames

The number of frames the bin is held to a magnitude of 0.

waitGoFrames

The number of frames algorithm waits before it starts to duck the incoming signal.

tripCount

After the algorithm ducks a bin this many times, it will then duck the bin for an extended period based on tripBlockFrames. This will force the algorithm to avoid oscillating between only 2 frequencies.

tripBlockFrames

After tripCount is reached, the bin will then be ducked for a different time period, based on this number of frames.

highestBin

The highest bin the algorithm will look at. Generally around 200-400. Frequencies above this bin should be removed from the signal. (In PV_Control, they are removed. With PV_Control2, the user should set a LFP at SampleRate.ir/2/numBins).

Examples

A rather large SynthDef. Notice that input 0 is sent to output 0. I face a microphone right at the speaker. It should also work going through your internal mic and speakers.

Adjust the parameters to find the right setting. As with any feedback situation, it works differently every time.

Turn up the volume slowly!