DtBlkFx Revision 1.1
No GUI in this one...
sorry!
VST audio effect plugin by Darrell Tam (darrell.barrell@gmail.com)
User Guide
Compile date 15 December 2007, Mac version
This software incorporates code from fastest-fourier-transform-in-the-west 3.1.2 (www.fftw.org) and Steinberg VST plugin SDK 2.3. VST is a trademark of Steinberg Media Technologies GmbH User manual diagrams incorporate graphics from ian.umces.edu.
DtBlkFx is a Fast-Fourier-Transform (FFT) based Virtual Sound Technology (VST) plug-in for use in a variety of audio software running under Microsoft Windows 2000 or newer.
Use it for...
You can select up to 8 of the above effects to be run in series! Combining the effects in this way allows you to make completely new and surprising sounds.
DtBlkFx is freely distributable and is covered by
the terms of the GNU licensing agreement.
This effect works differently to most others - instead of filtering
or distorting audio data directly, it finds the frequency spectrum
via a fast-fourier-transform and then does stuff to that.
The steps are:
Note: The effect must delay the audio the length
of at least a block. By default it is set to 1 beat but you
can adjust this down to a fraction of a beat.
No installer... manually copy DtBlkFx.dll and DtBlkFxS.dll
to the VST plug-ins directory of your music software.
Here's the user interface from the 1.0 version and it
is very colourful. There is no GUI in this version (1.1) - it was
taking
too long to sort out.
What is all that stuff? Read on...
These are the parameters along the top.
MixBack |
Percentage mix back of original sound. Set this to 100% to save CPU if you don't want any effect apart from delay. VstParam: MixBack |
Power |
Power can be set to match or filter. Match causes the output "power" to be amplified or attenuated to be the same as the input "power". This means individual effect amplitudes are relative to one another. It also means that if you remove a large portion of your frequency spectrum then left over stuff may end up sounding very loud. Filter mode operates like a traditional filter where the output power may be very different to the input power. This mode is of most use when using DtBlkFx as a parametric equalizer. VstParam: MixBack shared parameter, if MixBack param < 0.5 then power is match otherwise power is filter. |
Delay |
Since DtBlkFx processes audio in blocks it must delay the sound to operate . Delay controls the amount of delay introduced in music-beats. Hopefully this isn't too painful because if you shift your audio track forward by the same number of beats then all the timing is back to normal. Some people complained to me about the delay... but they left it at the default of 1 beat when they could have set it to much less! The maximum block size that can be processed is limited by the delay that you specify (i.e. small delays will only allow small block sizes). VstParam: Delay |
Overlap |
Percentage overlap of blocks to use. A large overlap results in a smooth transit ions between blocks but more CPU while a smaller overlap can give interesting effects. VstParam: Overlap |
BlkSync |
If BlkSync is turned on then DtBlkFx will try align the blocks with the song tempo and any parameter changes. When turned off then the position of blocks will have no particular relationship with the song tempo. VstParam: Shared with Overlap param (on when > 0.5) |
BlkLen |
Specify the maximum length of block to process audio data. If the specified Delay is less than the BlkLen specified then a smaller block length will be used and displayed with an asterisk (*). Longer block lengths give a higher frequency resolution but need more delay and CPU. Short block lengths can introduce interesting artefacts. VstParam: BlkLen |
FreqA / FreqB |
Use these sliders to select a frequency range for the effect. The frequency is displayed in the format note octave:cents Hertz. For example c#2:-13 68.7Hz means note c# octave 2 flat 13 cents is equivalent to 68.7Hz. For non-harmonic effects FreqA & FreqB are used to select or exclude a frequency range to process. Set FreqA less than FreqB to include the region between them otherwise the range is excluded. ![]() Use the smallest possible frequency range for an effect to save on CPU. VstParam: <n>: FreqA / <n>: FreqB |
Amp |
Amplitude controls the amplitude of the effect. If the overall power parameter is set to match then this is relative because raising the Amplitude of the selected frequency range effectively decreases that of the other frequencies. VstParam: <n>: Amp |
Type |
Type controls which effect will be run. Click for a pop-up menu of many different effects - these are described in the next section. VstParam: <n>: Type |
Value |
The meaning of value depends on which effect type has been selected. VstParam: <n>: Value |
The effect type is selected from the Type pop-up menu for each effect position.
There are 2 categories of effects as described below: Normal and Masking.
Normal Effects
Filter |
Parametric equalizer - adjust the amplitude of the frequency range specified. This does not use the effect value control. Some of the other effects have this capability too but will tend to use more CPU if this is all you want to do. |
Contrast |
Contrast changes the dynamic range of frequencies present in the sound. Positive contrast results in the reduction of noise and softer frequency components. Small amounts are useful for reducing distortion and un-muddying sound. When applied heavily only the loudest tones remain but can end up sounding like nasty audio compression on dodgey web videos. Negative values flatten the frequency spectrum and increase noise. Small to medium amounts are useful for adding "body". ![]() |
Smear |
Randomizes the phase of the spectrum data which results in a flattening of the sound envelope. Sound smearing can be used to remove loop clicks and give a sustain effect. Similar to reverb in other plugins except that outcome is both forwards and backwards in time! |
Thresh |
Boost or reduce frequency components with an amplitude above or below a particular threshold (set by the effect value) within the selected frequency range. ![]() You can get a similar sound to contrast. In previous versions of DtBlkFx this was known as "Weed". |
Clip |
Clip frequency components greater than a particular level (set by the effect value). ![]() |
Resize |
The resize effect
takes the selected range(s) and resizes them about the centre of each
range. The effect value
controls the amount of "resize" and whether to reverse in time and/or
frequency.
Squeezing the spectrum (resizing less than 100%) results in a
pitch shift towards the
range centre and also slows down the sound in time. Expanding the
spectrum (resizing greater than 100%) tends to make the block repeat. For some fun try in combination with the masking effects. |
Resample |
Resample is just the same as what resample normally does - it changes the pitch and speed together.
When used with long block sizes (>300msec) you can hear the
segment of sound being repeated. If you use it with medium sizes
(say 50msec) it becomes more of a
pitch shifting effect. It is easy to get lots of clicking and popping with this
effect - one way to remove is to set a threshold mask for less than 40%
(say) followed by a 100% smear afterwards. Check the resample preset
for this. |
Shift |
Modify the pitch of the selected spectrum.
The constant shift mode may be similar to frequency modulating effects or listening to single-side-band CB radios. It tends to give a metallic quality as the sound loses its normal harmonic relationships. Shift resolution is affected by the block length - longer lengths result in higher shifting resolution. |
HarmShift |
Harmonic frequency shift by a constant number of notes (HarmShift)
or to a particular note (HarmRepitch). These effects will only
work correctly on single voice or single note sounds (i.e. a chord
won't be properly pitch shifted). HarmShift
is similar in function to Shift
except it will generally do a better job for a single voice sound. ![]() DtBlkFx shifts the frequency spectrum in blocks that are aligned to harmonics of the sound (shown in alternating pink & blue). The fundamental frequency (centre of the first block) is automatically set to the loudest tone below 1/8th of the sample rate (i.e. 5.5Khz/F-8 at 44.1Khz sampling). Use the AutoHarmMask effect (described later) in the effect position immediately previous to control harmonic width and all/even/odd/between setting (refer oto the HarmFilt diagram) . In this case the fundamental is found from the loudest peak within the AutoHarmMask FreqA/B range (instead of below 1/8th of the sample rate). Note that the DtBlkFx's spectrogram display will not show the harmonic ranges as equally spaced as shown above because of the way it spaces the frequencies (logarithmic). |
HarmFilt |
HarmFilt (Harmonic Filter) is a comb filter that allows you to modify amplitude at regular intervals or harmonics but leave the gaps between unchanged. You can use this to control the amplitude of a particular note or to produce interesting sweeping effects (similar to "phasing"). Be sure to set the effect Amp to be non-0 dB (e.g. try -inf or +40 dB) to make the effect do something. ![]() The above diagram shows the possible frequency ranges selected by the effect (semi-transparent red squares). The fundamental frequency corresponds to which ever FreqA/FreqB control has a lower frequency while the other controls the maximum frequency limit. The effect value sets the width around each harmonic and which harmonics you want to modify - all, dd, even or between. Note that the DtBlkFx's spectrogram display will not show the harmonic ranges as equally spaced as shown above because of the way it spaces the frequencies (logarithmic). |
AutoHarm |
AutoHarm is similar to HarmFilt except that the fundamental frequency is automatically determined as the loudest tone below 1/8th of the sample rate (i.e. 5.5Khz/F-8 at 44.1Khz sampling). Use this to automatically track a pitched sound and change its amplitude. ![]() The harmonic width and all/odd/even/between setting is controlled by the effect value (see HarmFilt). |
Triangles |
These effects change the timbre of a pitched
input sound by power matching harmonics to various built-in
envelopes. Like AutoHarm, HarmShift & HarmRepitch these
effects only work as described on a single voice or note and the
fundamental is automatically determined from the loudest tone below
1/8th of the sample rate (i.e. 5.5Khz/F-8 for 44.1Khz sampling) ![]() The effect value varies the harmonic envelope according to a built-in sequence of envelopes. Use the AutoHarmMask effect (described later) in the effect position immediately above to control harmonic width and all/even/odd/between setting (refer oto the HarmFilt diagram) . In this case the fundamental is found from the AutoHarmMask FreqA/B range while the HarmShift/HarmRepitch FreqA/B range specifies the inclusion or exclusion range. |
DoNotUse |
Effects marked DoNotUse don't
do anything - they are called this because I may put an effect there in
future. |
Mask Effects
Mask effects don't change the sound in
anyway by themselves but affect which frequencies a normal effect
immediately following will be applied. For example if you set the
first effect as ThreshMask and the second effect as Contrast
you can now choose to apply Contrast only to
frequency components above or below the threshold.
Masks will operate with any other non-mask effect
unless specifically noted.
Note: A normal effect can only have one mask (i.e. if you set 2 masks in a row then the first mask will be ignored).
HarmMask |
HarmMask is the masking version of HarmFilt and allows you to apply any normal effect to the harmonics of a particular note. |
AutoHarmMask | AutoHarmMask is the masking version of AutoHarm and has the same effect value meaning. |
ASubH1Mask ASubH2Mask ASubH3Mask |
These effects are all variants of AutoHarmMask differing in that the fundamental frequency is taken as 1/2 (ASubH1Mask), 1/3 (ASubH2Mask) or 1/4 (ASubH3Mask) of the loudest frequency component within the selected range. |
ThreshMask | Thresh mask is the masking version of Thresh and lets you apply the following "normal" effect to only frequencies above or below a particular threshold. |
Stereo Only Effects
These effects are only available in the stereo version of DtBlkFx because they require 2 channels to operate
Vocode |
Vocode mixes the two channels by taking the frequency envelope of the left channel and applying it to the right channel (with the result in both the left and right). Example: feed voice into the left channel (red spectrum) and some strings into the right (blue spectrum). DtBlkFx will mix the voice and the strings to produce talking strings (which is just just what we need).
Vocode takes the frequency envelope of the left channel and applies it to the right channel. It operates by dividing the spectrum into a number of blocks (controlled by effect value) and adjusting the amplitude of each block from the right channel so as to power-match with the corresponding block in the left channel. When FreqA < FreqB then processing on the right channel is limited to that range while the entire spectrum is used from the left channel. If FreqB < FreqA then the entire spectrum of the right channel is processed while the envelope from the left channel is limited to the FreqB-FreqA range. Mask effects are not supported and will do nothing. |
HarmMatchLR |
HarmMatchLR & HarmMatchRL match the power from each harmonic in one channel to the corresponding harmonic in the other resulting in a different type of vocoding. HarmMatchLR uses the left channel as a reference and adjusts the right channel to match while HarmMatchRL goes the other way (right is reference, left is adjusted). Both versions of the effect output the adjusted channel on both left & right channels (i.e. reference is not output) and always set the overall output power to match the left channel. ![]() The fundamental frequency (centre of the first block) for each channel is automatically set by the loudest peak within the FreqA/FreqB range. The effect value controls the harmonic width and all/odd/even/between setting. Refer to AutoHarm for more information - as with all other harmonic effects these only work as described for single voice sounds (although it will do interesting things on chords). Use AutoHarmMask in the effect position immediately above to allow individual control over channel 1 & channel 2. The AutoHarmMask settings (FreqA/FreqB & value) refer to channel 1 while the HarmMatch settings refer to channel 2 - this means you can set different fundamental search ranges and harmonic settings for each channel. ThreshMask and HarmMask are not supported and will do nothing. The above diagram differs from what you will see in the spectrogram because of a different frequency scale (logarithmic). |
CrossMix |
CrossMix
combines the left & right channels by multiplying the frequency
components (time-convolution) of the selected range(s). The value controls the ratio of left to right mix and which channel will be output for all other frequencies. ![]() |
WarpMix |
WarpMix
produces an output by warping and combining the frequency spectrum of
the left and right channels as follows: 1. Divide the spectrum of each channel into segments of equal power (the number of segments is determined by the Amp percentage in for mode-1 WarpMix) 2. Resize each segment to a frequency and width intermediate to both channels (determined by the effect value) 3. Add the resized segments together using a ratio determined by the effect value ![]() The effect value also controls what mode WarpMix should operate in. Mode-1 proceeds as shown above while Mode-0 divides the spectrum into as segments as there are frequency bins. |
DtBlkFx can be quite hard on your CPU! How can you reduce it?? Try these...
I agree this would be good... If anyone wants to write
some, please do!
Have a look through the presets for some hints.
Please send me bug reports, comments and suggestions..
especially if you like it!
Author | Darrell Tam |
darrell.barrell@gmail.com |