Blog
This started by tidying up some of the notes I took while working on audio/DSP stuff, but it's become a project of its own.
Latest post
The Design of Signalsmith Stretch
Geraint LuffSignalsmith Audio Ltd.
A closer look at our open-source C++ pitch-shifting library
My ADC talk Four Ways To Write A Pitch-Shifter is now out on YouTube!
I'd watch the talk first (if you haven't already), but then come back if you're curious about the inner workings of Signalsmith Stretch.
Investigations
Things I figured out up with while trying to solve a problem... or just having fun. 🙂
Cascaded box-filter smoothing filters
Geraint LuffSignalsmith Audio Ltd. original
We combine box-filters to create a family of cheap FIR smoothing filters, and provide some optimal sizes.
Stride-Interpolated Delay
Geraint Luff originalWhen we change the length of a delay-line, we usually use either a smooth slide (with detuning) or a cross-fade (with comb-filtering artefacts). Let's look at a third option!
Analytic pluck synthesis
Geraint Luff originalNo feedback, no wavetables, no aliasing: synthesising a plucked-string sound using a family of directly-computable band-limited impulses.
A cheap energy-preserving-ish crossfade
Geraint Luff originalA fun little polynomial cross-fade curve with (almost) constant energy, extended into a family of curves for fractional power-laws.
Effects
Guides to some designs for particular audio effects. The reverb one was presented at ADC21.
Warmer waveshapers
Geraint LuffSignalsmith Audio Ltd.
Looking at a couple of ways to reduce the bright high-end you commonly get from waveshaping distortion, while preserving clarity.
Designing a straightforward limiter
Geraint LuffSignalsmith Audio Ltd.
We set out some requirements for a brick-wall limiter, have a go at solving them, and sketch out some ways it could be modified.
Let's Write A Reverb
Geraint LuffNo magic numbers, no tricky tuning: a clean and flexible approach to designing a smooth high-quality reverb, using a variation on the classic feedback-delay network (FDN) structure.
It's not quite a how-to guide (the ADC22 talk is closer to that), but here are some particular choices for our Signalsmith Stretch library:
Technical Tidbits
Technical stuff I thought was interesting!
Constant-time peak-hold
Geraint LuffSignalsmith Audio Ltd.
Looking at some ways to implement peak-hold (sliding maximum), including one with constant O(1) complexity.
Smooth Monotonic Interpolation
Geraint LuffProducing a smooth, intuitive curve from a set of control points.
Invertible fixed-point complex rotation
Geraint LuffA look at how to perform lossless rotations on integer / fixed-point co-ordinates or complex values.
Box-filters without accumulating errors
Geraint LuffSignalsmith Audio Ltd.
Exploring some ways to efficiently calculate box filters without accumulating floating-point errors, including varying-width filters.
Extra-wide window functions
Geraint LuffWindow functions are typically matched to the length of your FFT, but they don't have to be. Let's look at how we can use a window longer than the FFT size.