This is a component pack for Delphi 6/7 which is able to do various DSP transformations on 8/16/24/32 bit PCM integer and 32 bit floating point buffers. Some filters, like amplify, 3D sound, bit rate conversion and the FFT (which is used by the equalizer, spectrum analyzer, ...) are optimized to use SSE/3DNow and extended 3DNow instructions.

Included are also wrapper components for all MS DMO filters (available since DX8). These DMO filters can only handle 2 channels and 16 bit integer or 32 floating point buffers.

Winamp2 visualization and DSP plugin wrappers, a spectrum and waveform analyzer and a sample DSP and visualization plugin API are also available in this components pack.

The DSP Components are release under the Mozilla Public License 1.1. Some of the components are based on sources under different licenses (GPL/WOL). These licenses are explicitly mentioned in the headers of these filters.

To get a better performance the DSP components uses John O'Harrow's FastMove library, which is part of the FastCode project and GLScene's RecyclerMM as memory manager replacement (needed for SSE instructions).
DSP filters
 
[TDCAmplify]
DSP component to amplify audio data. Amplification can be done seperate on each channel. 32 Bit floating point data is tuned to use 3DNow/SSE instructions. When using an SSE capable CPU, make sure that data is aligned on a 16 byte boundary.
 
[TDCBandpass]
DSP component to cut off a certain frequency range. Each channel can cut off a seperate frequency range.
 
[TDCBitrateConverter]
DSP component to convert from one bit rate to another.
 
[TDCChannelOrder]
Component to swap channels to any needed position.
 
[TDCCompressor]
DSP compressor filter. Ported from the Audacity project.
 
[TDCDownMix]
DSP component that mixes every channel together to one and then copies that value to every channel.
 
[TDCDynamicAmplify]
DSP filter to automatically keep the volume at a specific maximum value. If the volume is silent for a specific time, the amplification is raised to a specific value. If the current amplification would break the range of the audio data, the amplification is faded out to the maximum possible amplification.
 
[TDCEchoDelay]
DSP echo/delay filter that supports multiple echos (up to 10).
 
[TDCEqualizer]
Equalizer filter component (which uses TDCFFT) that can equalize from 1 (2 point FFT) up to 4096 bands (8192 point FFT). Each channel can be equalized seperate.
 
[TDCFFT]
Fast Fourier Transform component that can do transformations up to a size of 8192 samples (power of 2 only!). Optimized for SSE, 3DNow, 3DNowExt and CPUs that only support FPU instructions. The component chooses automatically the fastest one.
 
[TDCFlanger]
DSP flanger component. Every channel can be controlled seperate.
 
[TDCHighpass]
DSP component that cuts off frequencies from a specified frequency to half of the sampling rate. Each channel can be processed seperate with different cut off values.
 
[TDCLowpass]
DSP component that cuts off frequencies from 0 to a specified frequency. Each channel can be processed seperate with different cut off values.
 
[TDCNotch]
DSP component that cuts off frequencies in a user defined frequency range. Each channel can be processed seperate with different cut off values.
 
[TDCParametricEQ]
Parametric equalizer filter. Supports bandwidths from 1 Hz to 22000 Hz.
 
[TDCPhaseInvert]
Phase invert component that inverts data of all channels or a specific channel.
 
[TDCPhaser]
DSP filter for phasing audio data. Phasing can be done seperate on each channel.
 
[TDCPitchScale]
DSP filter to increase or decrease the pitch of audio data without changing the tempo. The buffer size isn't affected, only the pitch of the data is changed. Note that the filter delays the data for a couple of samples. Based on the SMS Pitch Scale code.
 
[TDCPitchShift]
Pitch shift filter to increase speed and pitch of audio data.
 
[TDCReverse]
DSP component to reverse the content of an audio buffer. Each channel can be reversed seperate.
 
[TDCSound3D]
3D Sound enhancer component that works on 2 channels only. For 32 bit float and SSE CPUs make sure the buffer is aligned on a 16 byte boundary.
 
[TDCTempo]
DSP filter to increase or decrease the tempo without changing the pitch. Based on the Pacemaker DSP plugin for Winamp.
 
[TDCTrueBass]
DSP component to amplify low frequencies of audio data. The frequency range can be adjusted.
DMO filters
 
[TDCDMOChorus]
Microsoft DMO chorus wrapper class.
 
[TDCDMOCompressor]
Microsoft DMO compressor wrapper class.
 
[TDCDMODistortion]
Microsoft DMO distortion wrapper class.
 
[TDCDMOEcho]
Microsoft DMO echo wrapper class.
 
[TDCDMOFlanger]
Microsoft DMO flanger wrapper class.
 
[TDCDMOGargle]
Microsoft DMO gargle wrapper class.
 
[TDCDMOI3DL2Reverb]
Microsoft DMO reverb wrapper class.
 
[TDCDMOParamEQ]
Microsoft DMO parametric equalizer wrapper class.
 
[TDCDMOWavesReverb]
Microsoft DMO waves reverb wrapper class.
Other components
 
[TDCSpectrum]
Designed to retrieve some values to do visual drawing of a spectrum. Output has always the same scaling on every buffer type.
 
[TDCWaveform]
Designed to retrieve some values to do visual drawing of a waveform. Output has always the same scaling on every buffer type.
 
[TDCWADSPWrapper]
Winamp2 DSP plugin wrapper component.
 
[TDCWADSPThreadedWrapper]
Threaded version of TDCWADSPWrapper.
 
[TDCWAVisualWrapper]
Winamp2 visualization plugin wrapper component.
 
[TDCDSPPluginRenderer]
DSP plugin renderer for the sample DSP plugin API.
 
[TDCVISPluginRenderer]
Visualization plugin renderer for the sample visualization plugin API.
Download
  This package contains all classes and files described above, except the DSPack components. They can be downloaded from the link below.
  File: DCDSPFilter_v1.03_Source.zip
Size:
1.17 MB Date: May 24, 2024
Compiling
  To compile/install the DSP components you need to install the DSPack components before. They are available at Progdigy (better to use latest SVN code of it).
Donations
  Thanks to Thaddy de Koning, there is now a KOL version of the DSP components available.
  File: kol_dc_dsp_101.zip
Size:
358.62 kb Date: May 24, 2024
  Jonathan Liu has written some VB wrappers for the DSP components. It also includes a simple VB player that shows how to use them.
  File: DC-DSP_TypeLib.zip
Size:
205.23 kb Date: May 24, 2024

©2024 Milenko Mitrovic