DT Block Fx - Buzz effect plugin
by Darrell Tam
Description
DT Block Fx performs FFT block based effects. Example uses are:
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?
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 |
ymtam2@tpg.com.au |