Learning resources and tools for the mathematics of audio DSP.
DSP (Digital Signal Processing) is the study of using a digital computer to process what is normally thought of as an analog signal (such as sound). Unfortunately (or fortunately depending on who you are 😉), the reality is that DSP is a math heavy field. However, the math needed to get started is not too difficult in my opinion. Knowing high-school level math and some of the basics of college-level math will get you most of the way there.
I recommend knowing at least these fundamental concepts in order to best get started with learning DSP:
- Algebra dealing with polynomials, fractions, and exponents (exponents are especially important here)
- Basic trigonometry like sine, cosine, tangent, arctangent, etc.
- Logarithms (especially the natural logarithm and the number "e")
- Complex (imaginary) numbers and complex algebra (using algebra with complex numbers). Complex numbers are a core pillar of DSP mathematics.
These prerequisites aren't strictly necessary, but they can help you understand things better.
- Basic knowledge of linear algebra (the study of transforming data with matrices).
- Basic knowledge of calculus such as derivatives and integrals.
- Basic knowledge of what differential equations are and why they are important. (Note I don't mean knowing how to actually solve differential equations, because they are "really freakin' hard to solve" to put it lightly.)
- 3Blue1Brown - An excellent YouTube channel on complex algebra, linear algebra, calculus, and differential equations.
- His videos on Euler's Formula and the Fourier Transform are particularly excellent.
- Awesome Math - A large list of math-related resources.
- katjaas - Neat visual explanations of DSP mathematics and techniques.
- Khan Academy - Free college-level courses.
- Paul's Cheat Sheets - Cheat sheets for many common identities and formulas in algebra, trig, calculus, and laplace transformations. Because who can remember all this stuff?
- Paul's Online Math Notes - Excellent resources written and used by a professor at Lamar University.
- This video on the Laplace Transform by Zach Star.
- Awesome Electronics - Simulators - This awesome list has a list of useful circuit simulation tools.
- Curcuit JS - A cool little circuit simulation tool.
- Desmos - Free online graphing calculator.
- GNU Octave - An open-source alternative to MATLAB. There is also an online version of GNU Octave available.
- Signal package - Signal processing tools for GNU Octave, including filtering, windowing and display functions.
- IIR Filter Explorer - A neat little interactive tool for designing basic Infinite Impulse Response digital filters.
- Jupyter - A popular web-based environment for interactive scientific computing and data analysis, with support for a large number of programming languages.
- Qalculate! - The ultimate desktop calculator.
- Russell - A collection of tools that assist in the development of scientific computations (and by extension audio DSP). It includes numerical methods and solvers for differential equations, tools for statistical analysis, and other linear algebra tools. It is written in the Rust programming language.
- Symbolab - Another helpful math partner.
- Wolfram Alpha - A helpful math partner.