About a year ago, I found Josh Hodges‘ Youtube Channel The Audio Programmer and became involved in the Discord Community. Since then, many people from a variety of experience levels and backgrounds have joined. If you would like to join us and contribute to the community, feel free to connect with us here and using the links provided in this article.
We get a lot of questions about Digital Signal Processing (DSP) almost every day. Many in our community are users of the Juce Framework and DSP is a fundamental aspect to most projects. Fortunately, Juce includes some useful, user-friendly and important DSP classes. Just check out the tutorials on The Audio Programmer channel. However, those classes and functions may only get you so far. At some point, you will have to understand how to implement your own DSP algorithms. In this article I have worked with Maxwell Hayes in order to lay out various resources to learn DSP.
Learning Digital Signal Processing
DSP is fairly ubiquitous in engineering. It is a core aspect of robotics, avionics, electrical engineering, audio processing, telecommunications, image processing, video processing, medical diagnostic systems and many other technologies. What is useful, is that while the context and application can change, the math is almost always translatable.
Therefore, there are two ways to learn DSP:
- Low Level First Approach: This is the approach typical of Electrical Engineers. This approach utilizes basic concepts and expresses those concepts mathematically. This is math intensive and so you need to find good explanations or teachers.
- High Level First Approach: This approach is useful to most software developers. This approach starts with goals and specification and then breaks down an intended system to its core components.
Honestly, you will have to be able to think in both approaches in practice. You need to be able to understand the creative ways in which you can create DSP systems but you also need to be able to understand the mathematics so that you can create better code and testing systems.
Our Favorite Resources:
You should pick the resources that are more useful or interesting to you. We will try to update these lists as time goes on.
 Schaums Outline of Digital Signal Processing, 2nd Edition (Schaum’s Outlines) If you are in university, this book will probably be your best ally. Great examples and highly descriptive mathematics.
 Understanding Digital Signal Processing This book also has great explanations like the Schaums Book.
 Digital Signal Processing: A Practical Approach This is more of a high-level first approach which will show you many ways in which DSP can be used.
 A Digital Signal Processing Primer: With Applications to Digital Audio and Computer Music This source is not too extreme on the mathematics. It is well laid out from the basics of signal analysis in the continuous domain to the digital domain.
 http://www.dspguide.com/ch1.htm This is actually an entire book. You can support the author by buying the hardcover version. This book does not have the mathematics presented in the most useful form. However, you can still use it for great conceptual explanations of key concepts.
 https://ccrma.stanford.edu/~jos/ My favorite site. This is the single best resource for audio developers.
 musicdsp.org For audio developers this is helpful but I do not think all of this code is exactly best practice. That being said, excellent learning tool.
 https://www.dsprelated.com/ This site requires sufficient understanding of DSP and coding of DSP. It is more for advanced users but it is worth looking at.
I hope these resources serve you well when looking to understand DSP and its many applications. Some academic articles are difficult to understand. However, if you use these resources, you will get there. This list will be updated from time to time. Until then:
Be good to each other and take it easy…
-Will ☜(ﾟヮﾟ☜) and (☞ﾟヮﾟ)☞ Maxwell
Will Fehlhaber is an Acoustics Engineer and Audio Programmer from the UK and Bay Area.
Maxwell Hayes is an Audio/DSP Programmer. Musician. Sound Designer. Senior at DigiPen Institute of Technology.
- Digital Filter Design: The Analog Prototypes for IIR Filters
- Understanding the Z-Transform Part IV: Analyzing an IIR Filter
- Understanding the Z-Transform III: Analyzing an FIR Filter
- Digital Filter Design: Create an FIR Filter via Windowing
- Understanding the Z-Transform II: Understanding z and the Z-Plot