{"id":13418088,"url":"https://github.com/vinniefalco/DSPFilters","last_synced_at":"2025-03-15T02:32:42.376Z","repository":{"id":2640675,"uuid":"3630066","full_name":"vinniefalco/DSPFilters","owner":"vinniefalco","description":"A Collection of Useful C++ Classes for Digital Signal Processing","archived":false,"fork":false,"pushed_at":"2023-08-05T21:06:26.000Z","size":22006,"stargazers_count":1843,"open_issues_count":39,"forks_count":377,"subscribers_count":145,"default_branch":"master","last_synced_at":"2024-10-29T17:57:34.431Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vinniefalco.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2012-03-05T18:37:26.000Z","updated_at":"2024-10-26T03:47:09.000Z","dependencies_parsed_at":"2024-01-31T09:15:33.903Z","dependency_job_id":null,"html_url":"https://github.com/vinniefalco/DSPFilters","commit_stats":{"total_commits":241,"total_committers":10,"mean_commits":24.1,"dds":"0.049792531120331995","last_synced_commit":"acc49170e79a94fcb9c04b8a2116e9f8dffd1c7d"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vinniefalco%2FDSPFilters","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vinniefalco%2FDSPFilters/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vinniefalco%2FDSPFilters/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vinniefalco%2FDSPFilters/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vinniefalco","download_url":"https://codeload.github.com/vinniefalco/DSPFilters/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243675167,"owners_count":20329218,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-07-30T22:00:58.390Z","updated_at":"2025-03-15T02:32:42.369Z","avatar_url":"https://github.com/vinniefalco.png","language":"C++","readme":"## A Collection of Useful C++ Classes for Digital Signal Processing\r\n\r\n\u003e \"Techniques for digital signal processing are well guarded and held\r\n\u003e close to the chest, as they have valuable applications for multimedia\r\n\u003e content. The black art of Infinite Impulse Response (\"IIR\") filtering\r\n\u003e has remained veiled in secrecy with little publicly available source\r\n\u003e code...until now.\"\r\n\r\n\u003ca href=\"https://github.com/downloads/vinniefalco/DSPFilters/DSPFiltersComplete.zip\"\u003e\r\n\u003cimg src=\"https://github.com/vinniefalco/vinniefalco.github.com/raw/master/images/DownloadNow.png\"\u003e\r\n\u003c/a\u003e\r\n\r\n### What is this?\r\n\r\nBuilding on the work of cherished luminaries such as Sophocles Orfanidis,\r\nAndreas Antoniou, Martin Holters, and Udo Zolzer, this library harnesses\r\nthe power of C++ templates to solve a useful problem in Digital Signal\r\nProcessing: the realization of multichannel IIR filters of arbitrary order\r\nand prescribed specifications with various properties such as Butterworth,\r\nChebyshev, Elliptic, and Optimum-L (Legendre) responses. The library is\r\nprovided under the MIT license and is therefore fully compatible with\r\nproprietary usage.\r\n\r\nClasses are designed as independent re-usable building blocks. Use some or\r\nall of the provided features, or extend the functionality by writing your\r\nown objects that plug into the robust framework. Only the code that you\r\nneed will get linked into your application. Here's a list of features:\r\n\r\n- Exclusive focus on IIR filters instead of boring FIR filters\r\n- Complete implementation of all \"RBJ Biquad\" Cookbook filter formulas\r\n- Butterworth, Chebyshev, Elliptic, Bessel, Legendre designs\r\n- Low Pass, High Pass, Band Pass, Band Stop transformations\r\n- Low, High, and Band Shelf filter implementations for most types\r\n- Smooth interpolation of filter settings, pole/zeros, and biquad\r\n  coefficients to achieve seamless parameter changes\r\n- Representation of digital filters using poles and zeros\r\n- Realization using Direct Form I, Direct Form II, or user provided class\r\n- Fully factored to minimize template instantiations\r\n- \"Design\" layer provides runtime introspection into a filter\r\n- Utility template functions for manipulating buffers of sample data\r\n- No calls to malloc or new, great for embedded systems\r\n- No external dependencies, just the standard C++ library!\r\n\r\nUsing these filters is easy:\r\n\r\n    // Create a Chebyshev type I Band Stop filter of order 3\r\n    // with state for processing 2 channels of audio.\r\n    Dsp::SimpleFilter \u003cDsp::ChebyshevI::BandStop \u003c3\u003e, 2\u003e f;\r\n    f.setup (3,    // order\r\n             44100,// sample rate\r\n             4000, // center frequency\r\n             880,  // band width\r\n             1);   // ripple dB\r\n    f.process (numSamples, arrayOfChannels);\r\n\r\nAn accompanying demonstration program that works on most popular\r\nplatforms by using the separately licensed Juce application framework\r\n(included), exercises all the functionality of the library, including\r\nthese features:\r\n\r\n- Dynamic interface creates itself using filter introspection capabilities\r\n- Audio playback with real time application of a selected filter\r\n- Live time stretching and amplitude modulation without clicks or popping\r\n- Charts to show magnitude, phase response and pole/zero placement\r\n- Thread safety \"best practices\" for audio applications \r\n\r\nThis is the provided DSP Filters Demo application, which demonstrates the\r\nfeatures of the library and uses the Juce application framework to run on\r\nall popular platforms:\r\n\r\n\u003cimg src=\"https://github.com/vinniefalco/DSPFilters/raw/gh-pages/images/DSPFiltersScreenshot.png\"\u003e\r\n\r\nIf you've been searching in futility on the Internet for some source code\r\nfor implementing high order filters, then look no further because this is\r\nit! Whether you are a student of C++ or digital signal processing, a writer\r\nof audio plugins, or even a VST synthesizer coder, \"A Collection of Useful\r\nC++ Classes for Digital Signal Processing\" might have something for you!\r\n\r\n### DSP Filters on the Web\r\n\r\nDSP Filters Official Discussion Forum\u003cbr\u003e\r\nhttp://www.kvraudio.com/forum/viewtopic.php?t=249926\r\n\r\nDSP and Audio Plugin Discussion Forum\u003cbr\u003e\r\nhttp://www.kvraudio.com/forum/viewforum.php?f=33\r\n\r\nJuce Official Discussion Forum\u003cbr\u003e\r\nhttp://www.rawmaterialsoftware.com/index.php\r\n\r\nJuce Official Site\u003cbr\u003e\r\nhttp://www.rawmaterialsoftware.com\r\n\r\n### Terms and Conditions\r\nDSP Filters Library and DSP Demo Application Copyright (c) 2009 by\r\n[Vinnie Falco](http://github.com/vinniefalco)\u003cbr\u003e\r\nSource code is provided under the\r\n[MIT License](http://www.opensource.org/licenses/mit-license.php)\u003cbr\u003e\r\nThe [Juce Library](http://www.rawmaterialsoftware.com) is licensed\r\nseparately, from [Raw Material Software](http://rawmaterialsoftware.com).\r\n","funding_links":[],"categories":["TODO scan for Android support in followings","C++","DSP","Filter design"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvinniefalco%2FDSPFilters","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvinniefalco%2FDSPFilters","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvinniefalco%2FDSPFilters/lists"}