chowdsp_wdf
is a header only library for implementing real-time Wave Digital Filter (WDF) circuit models in C++.
More information:
Since chowdsp_wdf
is a header-only library, it should be possible to use the library simply by including include/chowdsp_wdf/chowdsp_wdf.h
. However, it is recommended to use the library via CMake.
A basic RC lowpass filter can be constructed as follows:
More complicated examples can be found in the examples repository.
There are two specific situations where you may want to use SIMD intrinsics as part of your WDF model:
In both cases, to use SIMD intrinsics in your WDF model, you must include XSIMD
in your project before chowdsp_wdf
.
For case 2 above, simply construct your circuit with an R-Type adaptor as desired, and the SIMD optomizations will be taken care of behind the scenes!
For case 1 above, you will want to construct your WDF model so that the circuit elements may process XSIMD types. Going back to the RC lowpass example:
If you are using chowdsp_wdf
with XSIMD, please remember to abide by the XSIMD license.
If you are using chowdsp_wdf
as part of an academic work, please cite the library as follows:
The design and implementation of the library were discussed on The Audio Programmer meetup in December 2021. The presentation can be watched on YouTube.
The following academic papers may also be useful:
[1] Alfred Fettweis, "Wave Digital Filters: Theory and Practice", 1986, IEEE Invited Paper, link.
[2] Julius Smith, "Wave Digital Filters", (Chapter from Physical Audio Signal Processing) link.
[3] David Yeh and Julius Smith, "Simulating Guitar Distortion Circuits Using Wave Digital And Nonlinear State Space Formulations", Proc. of the 11th Int. Conference on Digital Audio Effects, 2008, link.
[4] Kurt Werner, et al., "Wave Digital Filter Modeling of Circuits with Operational Amplifiers", 24th European Signal Processing Conference, 2016, link.
[5] Kurt Werner, et al., "Resolving Wave Digital Filters with Multiple/Multiport Nonlinearities", Proc. of the 18th Int. Conference on Digital Audio Effects, 2015, link.
[6] Kurt Werner, "Virtual Analog Modeling of Audio Circuitry Using Wave Digital Filters", PhD. Dissertation, Stanford University, 2016, link.
[7] Jingjie Zhang and Julius Smith, "Real-time Wave Digital Simulation of Cascaded Vacuum Tube Amplifiers Using Modified Blockwise Method", Proc. of the 21st International Conference on Digital Audio Effects, 2018, link.
The diode models in the library utilise an approximation of the Wright Omega function based on Stefano D'Angelo's implementation, which is licensed under the MIT license.
Many thanks to the following individuals who have contributed to the theory, design, and implementation of the library:
The code in this repository is open source, and licensed under the BSD 3-Clause License. Enjoy!