DT Block Fx - Buzz effect plugin

by Darrell Tam


Description

DT Block Fx performs FFT block based effects. Example uses are:

  • equalization
  • brick-wall (sharp roll off) filtering
  • noise reduction (or increase)
  • sound smearing/loop click removal
  • non-harmonic frequency shifting (without aliasing)
  • new filtering effects such as "electrosparkle" and "liquid"

    Short theory

    This effect works differently to most others - instead of filtering or distorting sample data directly it does its thing directly on the frequency spectrum.

    How does it do it?

    1. The input sample data is cut into overlapping blocks
    2. Each block is transformed to a frequency spectrum using the Fast-Fourier-Transform
    3. An effect is applied to the spectrum
    4. The frequency spectrum is inverse transformed back to sample data

    Installation

    Buzz installation

    Copy dt_blockfx.dll, dt_blockfx.prs to your <buzz root>\Gear\Effects directory.

    Copy fftw_2.1.3_float.dll to <buzz root>.

    The default <buzz root> is c:\Program Files\Jeskola\Buzz

    FruityLoops installation

    The dt_blockfx_allglobal.dll version is included for use with FruityLoops and the Buzz Effect Adapter. It differs from dt_blockfx.dll in that it has the equivalent of 4 sets of track params implemented as global params. If you load dt_blockfx.dll into FruityLoops there will only be one set of track params availble.

    To use with FruityLoops, copy dt_blockfx_allglobal.dll, dt_blockfx_allglobal.prs to your <fruity loops root>\Plugins\Fruity\Effects\Buzz Effect Adapter directory.

    Copy fftw_2.1.3_float.dll to <fruity loops root>.

    The default <fruity loops root> is C:\Program Files\FruityLoops3.5.

    Usage

    Global Parameters

    Block Synchronization Only available in the pattern editor. Forces synchronization of the block with the start of tick for use with block sizes of 512 or longer.

    Set to 1 if you want an audio block to be aligned exactly with the current tick. If the paramaters aren't changed then this can generally be left unset.

    If not set then effects will not be in precisely time with your music. For block sizes longer than a tick (e.g 125 beat/min, 4 ticks/beat, the tick length in samples is 5292) then paramaters from some ticks will be ignored unless this is set.

    If need be you can set to 1 on every tick at the expense of CPU.

    Parameter Interpolation Mode Only available in the pattern editor. Generally only useful for block sizes of 4096 or shorter.

    The following values are valid:

    0: Normal interpolation of parameters - overlap, freqA, freqB, etc are calculated using values from the current tick, next tick and the playing sample position.

    1: No interpolation - parameters are fixed for the duration of each tick.

    2: Continue previous - Parameter interpolation is continued from the previous tick (i.e. overlap, freqA, freqB, etc are calculated using values from the previous tick, the current tick and the playing sample position).

    MixBack Percentage mix back of original sound. If you want DT Block Fx to be off but keep the fixed delay, set this to 100% to save CPU.
    OutAmp Output Amplification - reduce if your sound clicks or increase if you like hard clip distortion.
    TickDelay Number of ticks for which the audio is delayed. Since audio is processed in blocks, then the delay must be longer than the required block length.
    BlockLen Maximum block length to use. If the specified TickDelay is sufficient then the requested BlockLen will be used, otherwise the largest possible block length will be used.

    Longer block lengths result in a smoother sound and give a higher frequency resolution but need more delay and more CPU. Short block lengths can add a liquid or sparkling quality to the sound.

    Overlap Percentage overlap of blocks to use. Larger overlap results in a smooth transit ions between blocks but more CPU.

    Track Parameters

    FreqA Start frequency for effect
    FreqB End frequency for effect - if the end frequency is less than the start frequency then the frequency range is excluded for effect
    Amp Relative amplitude of processed spectrum segment. Note that the overall output power is fixed using the OutAmp parameter. Raising the Amp of the segment effectively decreases the Amp of frequencies outside of the segment.
    Effect Effect to run on frequency segment. Refer to the table below.
    Value Effect amount. Refer to the table below.

    Effects

    Contrast

    This effect changes the contrast or dynamic range of frequencies present in the sound.

    Increasing contrast (Value > 0.5) results in the reduction of noise and softer frequency components. When applied heavily all but the loudest frequencies remain and the envelope is removed. Useful for reducing distortion and un-muddying sound.

    Decreasing contrast (Value < 0.5) results in the increase of lower level frequency components. This tends to flatten the frequency spectrum and increase noise. Useful for adding "body" to samples.

    Smear

    This effect randomizes the phase of the spectrum data which results in the reduction of the sound envelope.

    The Value parameter controls how much randomization: 0 for none and 1 for 100%

    Sound smearing can be used to remove loop clicks and give sustain to any sound. It is similar to a super-soft reverb with large BlockLen.

    Clip

    Clip causes frequency components greater than a particular level (set using Value) to be clipped to that level.

    This is another way of reducing the dynamic range of frequency components but it differs from Contrast in that the lower level components are not increased.

    Weed

    Weed removes frequency components above (Value < 0.5) or below (Value > 0.5) a particular level.

    Removing components below a particular level increases the dynamic range of frequency components by leaving only the louder components. This can be used to remove noise from the spectrum or if applied strongly, leave only the loud components.

    Removing components above a particular level means that only the softer components remain. This means that background and lower level harmonics of a sound are increased.

    ShiftAdd

    ShiftAdd shifts the spectrum segment by the Value specified (0.5 corresponds to no shift). The shift is non-harmonic meaning that it will not generally sound musical on tuned sounds. ShiftAdd mixes the original spectrum with the shifted segment.

    ShiftReplace

    The notes for ShiftAdd apply except ShiftReplace replaces the original spectrum with the shifted data.

    Source

    Full source code is included. Feel free to modify and experiment with the source code. If you create interesting effects, please send them to me. The Fastest-Fourier-Transform-in-the-West is used to perform frequency transforms. I have not included the source - download this from www.fftw.org but you don't need it to recompile DT Block Fx. Thanks to the guys that made FFTW.

    Contact Information

    Author Darrell Tam
    Email ymtam2@tpg.com.au