Skip to content

A Collection of Useful C++ Classes for Digital Signal Processing

Notifications You must be signed in to change notification settings

eChirp/DSPFilters

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

A Collection of Useful C++ Classes for Digital Signal Processing

JUCE module for digital signal filtering on block size elements.

is this?

Building on the work of cherished luminaries such as Sophocles Orfanidis, Andreas Antoniou, Martin Holters, and Udo Zolzer, this library harnesses the power of C++ templates to solve a useful problem in Digital Signal Processing: the realization of multichannel IIR filters of arbitrary order and prescribed specifications with various properties such as Butterworth, Chebyshev, Elliptic, and Optimum-L (Legendre) responses. The library is provided under the MIT license and is therefore fully compatible with proprietary usage.

Classes are designed as independent re-usable building blocks. Use some or all of the provided features, or extend the functionality by writing your own objects that plug into the robust framework. Only the code that you need will get linked into your application. Here's a list of features:

  • Exclusive focus on IIR filters instead of boring FIR filters
  • Complete implementation of all "RBJ Biquad" Cookbook filter formulas
  • Butterworth, Chebyshev, Elliptic, Bessel, Legendre designs
  • Low Pass, High Pass, Band Pass, Band Stop transformations
  • Low, High, and Band Shelf filter implementations for most types
  • Smooth interpolation of filter settings, pole/zeros, and biquad coefficients to achieve seamless parameter changes
  • Representation of digital filters using poles and zeros
  • Realization using Direct Form I, Direct Form II, or user provided class
  • Fully factored to minimize template instantiations
  • "Design" layer provides runtime introspection into a filter
  • Utility template functions for manipulating buffers of sample data
  • No calls to malloc or new, great for embedded systems
  • No external dependencies, just the standard C++ library!

Using these filters is easy:

// Create a Chebyshev type I Band Stop filter of order 3
// with state for processing 2 channels of audio.
Dsp::SimpleFilter <Dsp::ChebyshevI::BandStop <3>, 2> f;
f.setup (3,    // order
         44100,// sample rate
         4000, // center frequency
         880,  // band width
         1);   // ripple dB
f.process (numSamples, arrayOfChannels);

Originally forked from

Vinnie Falco's public repository

DSP Filters on the Web

DSP Filters Official Discussion Forum
http:https://www.kvraudio.com/forum/viewtopic.php?t=249926

DSP and Audio Plugin Discussion Forum
http:https://www.kvraudio.com/forum/viewforum.php?f=33

Juce Official Discussion Forum
http:https://www.rawmaterialsoftware.com/index.php

Juce Official Site
http:https://www.rawmaterialsoftware.com

Terms and Conditions

DSP Filters Library and DSP Demo Application Copyright (c) 2009 by Vinnie Falco
Source code is provided under the MIT License
The Juce Library is licensed separately, from Raw Material Software.

About

A Collection of Useful C++ Classes for Digital Signal Processing

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 100.0%
  • C 0.0%
  • Shell 0.0%
  • Objective-C++ 0.0%
  • HTML 0.0%
  • CMake 0.0%