A discussion of topics related to audio DSP, with an emphasis on useful and practical information.
-
Recent Posts
Archives
- January 2023
- April 2022
- November 2021
- September 2021
- April 2021
- October 2020
- January 2020
- April 2019
- September 2018
- August 2017
- May 2017
- January 2017
- December 2016
- September 2016
- February 2016
- September 2015
- January 2015
- March 2014
- January 2014
- October 2013
- June 2013
- May 2013
- April 2013
- March 2013
- February 2013
- December 2012
- November 2012
- May 2012
- March 2012
- January 2011
- December 2010
- November 2010
- July 2007
- March 2003
- February 2003
- August 2002
- January 1997
- November 1996
- October 1996
- August 1996
- July 1996
Categories
- Digital Audio (67)
- Aliasing (9)
- Convolution (3)
- Dither (7)
- Filters (24)
- DC Blocker (1)
- FIR Filters (7)
- IIR Filters (18)
- Biquads (12)
- Fourier (3)
- FFT (3)
- Fun Facts (3)
- Impulse Response (5)
- Jitter (2)
- Oscillators (12)
- Phase (2)
- Reverb (2)
- Sample Rate Conversion (10)
- Sampling Theory (6)
- Effects (1)
- Envelope Generators (5)
- Math (5)
- MIDI (2)
- Source Code (10)
- Synthesizers (9)
- Uncategorized (4)
- Video (7)
- Widgets (14)
- Digital Audio (67)
This blog has been so helpful, I will be patiently awaiting your next post!
Thanks, son.
Here here, I second that. It would also be great to read some articles related to amp simulation, your area of specialty!
Thanks for stopping by, Dallas—I’ll put your request on my to-do list 😉
Hello Nigel,I am planning to imlpement a Biquad IIR filter on an FPGA platform. Right now, I’m searching for a simple yet useful Audio Application for the biquad filter. I would like to ask for your suggestions.Thanks,Marika
As for applications, I suggest that searching the internet will give a better answer than I can in short space. However, I do suggest that you pay close attention to your math precision—the standard biquads can be very sensitive to coefficient rounding and math precision, especially when set to lower frequencies.
Great blog! Thanks!
Ear Level Engineering rocks! It’s the best link between the maths of DSP and implementable DSP algorithms/concepts I’ve ever found!
PS After all those great articles on dithering and resampling, can you do a post on bandlimited oscillators? 😉
Thanks for sharing your knowledge and providing such helpful and easy to understand examples.
I found your dithering video very helpful and understandable. I was wondering if you’re going to post another video on the applications of dithering please?
By the way, is dithering done in data acquisition devices? Or its the natural, random noise on the signal that somehow makes it looks like its dithered, specially when the input signal is below the resolution of the device?
Once again, thanks a lot for sharing and posting amazing stuffs 😉
Awesome professional content and great widgets! Thank you!
I found this stuff useful in my servo motor drive project where filters are used to control vibration and noise.
Same signal processing stuff I learned in university signal processing courses but the implementations here help saving a lot of time when utilizing those theories.
I am an absolute super fan of this blog. The wave table oscillator articles made a huge impact on my understanding of DSP for audio plugin development. They gave me a quality building block to start off with in my first forays into plugin development with the excellent JUCE framework.
Nigel are their any plans for any more articles in the loop ?
I must check this blog three time a week to see if any new gems have been posted.
Cheers
Josh
So sorry for the lack of development here in 2015! Product development, on top of my regular job, has my spare time tied up until it’s ready to ship. I have a really cool (and important, I think) video on sampling theory that presents it from a different viewpoint than I’ve seen before, but I couldn’t quite finish it before getting tied up. Also, I’ve been thinking lately to post some shorter articles in the meantime on points of interest, while I can’t take on the big ones.
I’ve worked just a bit with JUCE in the past, which is awesome, and a bit more (the dither plug-in, and current projects) with wdl-ol…
Hi Nigel,
Sounds awesome. Shall keep checking up on the blog and look forward to reading your next one.
Cheers
Josh
Thanx for the great and helpful information. been looking for some stuff about filters and got them here. Very clear, well-written and informative posts.
Thanx god for having Internet, and more Important , people like you who share their knowledge with others.
Keep it up man.
Nigel,
I was reading your wavetable articles because i want to build an LFO for a synth i’m building for the teensy microcontroller. I’m very new to dsp so i was thinking on what approach i could take or a book to start (a very basic one).
Thanks
I’m not the best person to ask, as I really haven’t read a synth-design book in decades. But Will Pirkle’s book are probably the best place to start (I have his synth book in electronic form, but have lacked time to read it).
LFOs are pretty easy because, in general, you don’t have to consider aliasing. Essentially, you have way more than enough time resolution at audio rates for low frequency oscillators, so you can just code “naive” oscillators (sawtooths that count up until reset, squares that toggle between max and min, etc.).
Thank you Nigel for providing an incredibly useful resource! I’m just starting out with C++ and plugin design, and your writings have been very helpful.
Hi Nigel! Just found and read your article on dithering. Huge help in understanding why I’m doing this. I’m new to audio recording and am simply following instructions for saving files intended for internet broadcast, or in my case, intranet.
Can you suggest a book or web site that is a beginners spot to learn about digital audio? Your dithering article made sense to me because of you hand-waving analogy, so you can imaging my level of knowledge!
Thank you!
Since I don’t teach, I haven’t looked at beginner books for a long time. Also, it depends on the depth (learning about digital audio as a user, as curious about the technology, as wanting to develop products). But, an excellent free book that is free to browse or download is http://www.dspguide.com.
Hi.
Your Biquad calculator is very helpful.
Thank you!
Hey, I am really interested in the Biquad calculator specifically the highshelf filter. Where could I find the equation for this?
Thanks,
You’ve probably found this already, but the biquad calculator uses my source code here (though translated to JavaScript for the web page): Biquad C++ source code
So cool!
Hi Nigel!
Your Biquad calculator is very helpful.
Do you have real-time noise reduction embedded source code? Similar LogMMSE, but less computational complexity.
Thank you!
Sorry, can’t help you there…
thanks for your reply! Or, in other words, is there a fast calculation method for exponential integral?
Sorry, something I never had a need to look into. But it’s along the lines of discussion in the kvraudio DSP forum, so you might try there.
Thank you again!
Been reading through your great wavetable series of articles. Thanks for the interesting read. A question regarding code:
There are quite a few attachments of various codes in various versions scattered around the articles. Is there a single place, e.g. a repo, where we can access the most recent version of the wavetable code?
Sorry to say, I’m not that organized. I really need a new home page that has better access to various topics. However, you can scroll down to Categories on the right side, and click Source Code, that should make it easier to find the latest. Also, Widgets is a handy category, which you can also get to with the Widgets tab above.
Dear Nigel,
Thank you for your efforts. This helps a lot in learning and understanding how filters work. But unfortunately, I ran into it. with such a filter, I don’t know how to implement it. Could you tell me where I can read about it or do you know how it is implemented? Thanks!
https://www.kvraudio.com/forum/viewtopic.php?f=33&t=571675
Hi Nigel,
Thanks for the useful tool for the digital filter application. From “The bilinear z transform” section, the s domain transfer function of a second order lowpass filter is provided for the example. Since there is difficult to find the peak filter of s domain transfer function, could you provide the s domain transfer function of peak filter type or how to change the forms from the lowpass filter example.
Many thanks!
The definition of a Butterworth lowpass and highpass are clear, shelving and peaking filters can be different. For my biquad source code and calculators, I use Udo Zölzer’s definition, which is H(s) = (s^2 + s*(V/Q) + 1) / (s^2 + s/Q + 1) for boost, H(s) = (s^2 + s/Q + 1) / (s^2 + s*(V/Q) + 1) for cut.
Hi Nigel, I have a question about the Biquad algorithm. Your calculator demonstrates very nicely that the frequency response changes smoothly as you vary the cutoff frequency. But will the filtered signal also vary smoothly as you vary the cutoff frequency? Is there a danger of sharp discontinuities occurring in the filtered signal?
Very good question. Direct form biquads don’t have good response to quick changes in parameters. I’d start with Andrew Simper’s SVF, Filters for synths–starting out, not much more complex than a direct form, but much better performance. And read his other papers, linked to in that article. Also, Vadim Zavalishin’s paper cited in Filters for synths—the 4-pole.
Thanks Nigel.
I stumbled across this page looking for an editor for my SPX 90. Is Hypermidi 3.0 available, or the SPX 90 ed/lib stack that is mentioned?
Sadly, with the disappearance of HyperCard decades ago, HM3 is long gone…
I have an old Mac running OS 9 and I did find a 1.1 version of HyperMIDI. I hope to try it out this weekend.
I’m assuming you are the author? 🙂
Yes…v1.1 didn’t do much, but it will get MIDI in and out, so you can do sysex stuff fine.