Category Archives: Digital Audio

Biquad calculator v2

Type:lowpasshighpassbandpassnotchpeaklow shelfhigh shelfone-pole lpone-pole hp Plot:linearlog Sample rate (Hz) Fc (Hz) Q Gain (dB) Here’s an update of the biquad calculator. It adds one-pole highpass and lowpass filters, and frequency, Q, and gain sliders. The sliders cover the range of … Continue reading →

Posted in Biquads, Digital Audio, Filters, IIR Filters, Widgets | 98 Comments

Envelope generators—ADSR Part 1

After discussing the exponential decay of the one-pole filter in a recent article, I couldn’t help but think about envelope generators. Besides, it would be handy to have one to test out some of these other components I’ve been writing … Continue reading →

Posted in Envelope Generators, IIR Filters, Synthesizers | Tagged | 1 Comment

Wavetable oscillator video

If you find this video helpful, let me know, and I’ll work more video demonstrations into articles.

Posted in Aliasing, Synthesizers, Video, Wavetable Oscillators | Tagged | 6 Comments

Perspective on dither

Recently, I’ve had lengthy discussions on the topic of dither with a couple of different people—of opposite views. One believes that everything should be dithered, including truncations to 24-bit. The other feels that dither is a waste of time even … Continue reading →

Posted in Dither | 4 Comments

Replicating wavetables

My WaveTableOsc object uses a series of wavetables that are copies of single-cycle waveforms pre-rendered at a progressively smaller bandwidth. By “replicating wavetables” I mean taking a full-bandwidth single cycle waveform, and using it to make a complete set of … Continue reading →

Posted in Oscillators, Source Code, Wavetable Oscillators | Tagged | 53 Comments

A one-pole filter

Here’s a very simple workhorse of DSP applications—the one-pole filter. By comparison, biquads implement two zeros and two poles. You can see that our one-pole simply discards the zeros (the feed-forward delay paths) and the second pole (feedback path): We … Continue reading →

Posted in DC Blocker, Digital Audio, IIR Filters, Source Code | 40 Comments

A note about de-normalization

One ugly thing that we need to be aware of, especially for filters, is the de-normalization of numbers. Basically, computer processors try to keep floating point numbers normalized—they try to keep them in the binary form 1.xxxxxx (where each x … Continue reading →

Posted in Digital Audio, Math | 1 Comment

Biquad C++ source code

I don’t want to get into the business of teaching people how to code—there are a huge number of free resources available on the internet to that do that. But I’ll give a small taste for those trying to get … Continue reading →

Posted in Biquads, Digital Audio, Filters, IIR Filters, Source Code | 99 Comments

A wavetable oscillator—end notes

I wrote the wavetable oscillator code from scratch as I wrote this series of articles, using just the thought process I gave. Hence, no references to other articles on wavetable oscillators. The concept of a phase accumulator is fairly obvious; … Continue reading →

Posted in Digital Audio, Oscillators, Wavetable Oscillators | Tagged | 13 Comments

A wavetable oscillator—the code

The wavetable oscillator code follows the basic structure of most audio processing blocks, with three types of functions: at the start: initialization—create the oscillator and its wavetables as needed: control—change the oscillator frequency, and pulse width for PWM every sample: … Continue reading →

Posted in Digital Audio, Oscillators, Source Code, Wavetable Oscillators | Tagged | 27 Comments