Upsampling filters explained: linear vs minimum phase, apodizing and tap count

By Checked with Sonir Bench 0.1.62 on 2026-10-15

Upsampling raises the sample rate by calculating new samples between the existing ones, and the filter that does the calculating removes the mirror images the process creates. It cannot add detail that was not in the recording. What it changes is which reconstruction filter your music goes through, and that filter's phase, steepness and length decide how it rings and how late the sound arrives.

What upsampling actually does

A 44.1 kHz file holds 44,100 numbers per second per channel. Those numbers fully describe every frequency below half the rate, 22.05 kHz (the Nyquist frequency), and nothing above it. To run the same music at 705.6 kHz you need 16 numbers where there was one.

The simplest way to get there is to insert 15 zeros after every sample. That changes nothing about the audible content, but it leaves copies of the music, called images, mirrored around every multiple of the original rate: a 1 kHz tone at 44.1 kHz also shows up at 43.1 kHz, 45.1 kHz, 87.2 kHz, 89.2 kHz and so on up the spectrum. Upsampling is two steps: insert the samples, then remove the images with a low pass filter. That filter is what "interpolation" really means, and every audible difference between upsamplers comes from it.

Your DAC already does this. Most DACs oversample internally, using a filter built into their chip or firmware. When you upsample in software, you are not adding a step; you are replacing the DAC's first filter with one you chose, and handing the DAC a signal at a rate where its own filter has an easy job.

Does upsampling improve sound?

The honest answer has three parts.

  1. It adds no information. Everything above 22.05 kHz in an upsampled 44.1 kHz file is either silence or leftover image. A better filter removes more of the leftovers; it does not restore what the recording never held.
  2. It can change the sound, because the filter changes. The DAC's built-in filter is a compromise that has to fit in its silicon, often short, sometimes with a slow roll off that lets part of the images through. A software filter can be far longer and steeper, or deliberately gentler, or a different phase type. If you hear a difference, this is where it comes from.
  3. Whether the difference is audible depends on your system and your ears. The only fair test is a level-matched comparison, because a fraction of a decibel louder reliably sounds "better". Change one setting at a time.

There is also a practical reason to upsample, covered below: processing that bends the waveform needs room above the audible band.

The four things that define an upsampling filter

Passband, stopband and transition width

Every interpolation filter has a passband (left untouched), a stopband (removed) and a transition band between them. For a 44.1 kHz source, the first image begins at 44.1 − 20 = 24.1 kHz if you want everything up to 20 kHz kept flat. So the filter has 4.1 kHz in which to go from untouched to more than 100 dB down. At 48 kHz the same job leaves 8 kHz.

That one subtraction explains most of what follows. A narrow transition needs a long filter. Sonir Bench's default design, for example, solves to 1,345 taps for a 44.1 kHz source and 769 taps for 48 kHz. The 44.1 kHz family costs about 1.75 times as much, and no amount of engineering makes that go away; it is set by where the Nyquist frequency sits.

Two choices live here:

  • Where the passband ends. Flat to 20 kHz, or right up to 22.05 kHz, or starting to roll off earlier.
  • How sharp the transition is. A "brick wall" makes the transition as narrow as it can, close to Nyquist. A "slow" or "gentle" roll off spreads it over several kilohertz, which shortens the filter at the cost of the top of the audible band.

Linear phase vs minimum phase (pre-ringing)

A filter that cuts sharply at one frequency has to ring at that frequency. The question is where the ringing goes.

Linear phase Minimum phase
Phase No phase shift anywhere in the band Phase shifts in the audible band, mostly near the top
Impulse response Symmetric: ringing before and after the main peak No ringing before the peak; all of it comes after
Delay Constant group delay of half the filter length: pure latency Almost no bulk delay

Linear phase delays every frequency by exactly the same amount, so the waveform's shape is preserved. The cost is pre-ringing: a faint oscillation at the cutoff frequency that starts before a transient.

Minimum phase moves all of the ringing after the transient, which is where acoustic events naturally ring. The cost is that frequencies near the cutoff are delayed more than low ones, so the phase response in the band is no longer flat.

Two facts put this in proportion. The ringing is at the cutoff frequency, around 20 to 22 kHz for 44.1 kHz material, and it only appears when the signal has content close to that frequency. And most 44.1 kHz recordings already passed through a linear phase filter in the converter that made them, so pre-ringing at that frequency may already be in the file before your upsampler sees it. That second fact is what apodizing is about.

One placement detail matters if you build your own chain. The pre-ringing of the interpolation kernel can only be avoided in the interpolation step itself. A minimum phase EQ or filter added after upsampling does not undo it, because the combined response is still "linear phase kernel, then something else".

Windows, and what apodizing means

The ideal low pass filter is an infinitely long sinc function. Every real filter cuts it to a finite length, and the window is the shape used to taper the ends. The window decides how deep the stopband can go for a given length.

These are the windows Sonir Bench offers for its resampler, with the attenuation each can reach:

Window Stopband attenuation
Kaiser Set by the requested attenuation (adjustable). Deepest and sharpest for a given tap count
Gaussian Set by the requested attenuation. About twice the taps for the same design
Blackman-Harris About −92 dB
Blackman About −74 dB
Hamming About −53 dB
Hann About −44 dB

The fixed windows have a fixed floor however long the filter is. Leaked images land at frequencies unrelated to the music, so Bench refuses a design whose measured image rejection is too shallow.

Apodizing is a different idea that is often confused with a window. An apodizing filter starts rolling off below the source's Nyquist frequency and is fully down by it. Its target is not the upsampler's own ringing but the ringing already in the recording: the brick wall filter the original converter used left oscillation just below the top edge, and an apodizing filter attenuates the band it lives in, replacing it with the upsampler's own, gentler roll off.

Concretely, Bench's apodizing starting point begins its transition 2.5 kHz below the top of the source. For a 44.1 kHz source that is 19,550 to 22,050 Hz, with the −6 dB point at 20.8 kHz. Because the transition is narrower than the default, the filter grows from 1,345 to 2,209 taps and its delay from 0.95 to 1.56 ms. What it adds over the default is attenuation between roughly 20.3 and 22.05 kHz, since the default is already 6 dB down at 22.05 kHz.

Tap count vs latency

A tap is one coefficient of the filter. More taps buy a narrower transition, a deeper stopband, or both. They also cost CPU and, for linear phase, delay: the group delay is half the filter length, measured at the rate it runs at.

The numbers get large quickly. In Bench's resampler at 44.1 kHz:

Design Entry stage taps Group delay Measured image rejection
Default (linear phase Kaiser, flat to 20 kHz, 120 dB) 1,345 0.95 ms −119 dB
Very long linear phase 524,289 371 ms −172 dB

At 524,289 taps the transition becomes far narrower than the band edges ask for, so what is actually built is a brick wall right at the top of the source. The argument for doing this is that the interpolation then approaches the ideal band-limited reconstruction and places transients in time more precisely. Whether that is audible is exactly the kind of question a level-matched A/B is for.

The 371 ms is a pure delay. A linear phase filter delays every frequency equally, so the sound itself is unchanged; what changes is that video falls out of lip sync and pause or skip answers late. Minimum phase removes the bulk delay at any length, which is why very long minimum phase filters are practical for listening and long linear phase ones are a deliberate trade.

CPU is the other limit. Even with fast convolution, the forecast for 524,289 taps is 36 to 39 percent of one CPU core against 6 to 7 percent for the default, and an upsampler has two stages (up to the internal rate, and back down to the output rate). Bench also offers 32-bit floating point for this stage only, which runs about twice the taps for the same CPU; its rounding floor sits around −141 dBFS, about where Bench's own dither sits when the output is 24 bit.

The resample designer in Sonir Bench. Choose the phase, window and tap count, and it shows the taps, group delay and image rejection for each rate family

Why process internally at 705.6 kHz or 768 kHz

If upsampling adds no information, why go to 16 times the source rate rather than 2 or 4?

Because of what happens next. An EQ only changes levels and phase, so it never creates frequencies that were not there. But saturation, compression, tube and tape emulation, and anything else that bends the waveform create harmonics. At 44.1 kHz, the third harmonic of a 10 kHz tone (30 kHz) has nowhere to go: it folds back below Nyquist and lands at 14.1 kHz, a tone with no musical relationship to the original. That is aliasing, and it is why plugin makers add oversampling to their saturation plugins.

Sonir Bench runs everything at a fixed internal rate: 705.6 kHz for the 44.1 kHz family and 768 kHz for the 48 kHz family. The Nyquist frequency there is 352.8 kHz, so harmonics produced by nonlinear processing have more than 300 kHz of room before they could fold back into the audible band. Going higher gives no further audible benefit, which is why the internal rate stops there rather than at 32 times. Staying within one family, 44.1 to 705.6 kHz or 48 to 768 kHz, keeps the conversion up to the internal rate an integer ratio.

Why it still matters with a DAC that stops at 192 kHz

A DAC limited to 192 kHz does not cancel any of that. The processing happens at the internal rate, and the conversion down to what the DAC accepts happens once, at the very end. Everything nonlinear has already run with its headroom.

The exit filter also gets easier as the exit rate rises. Its stopband begins at the output rate minus the passband, so going out at 192 kHz leaves a transition from 20 kHz to 172 kHz. In Bench that exit filter is 41 taps, against 751 for going out at 48 kHz, and the round trip latency falls with it. The DAC's own filter then works at 192 kHz, where its compromises fall far above anything audible.

One caution: going out above the source rate lets more ultrasonic content reach your amplifier, and some equipment distorts on it, so watch what reaches the exit.

FAQ

Should I use linear phase or minimum phase?

If you want the waveform's shape preserved and do not mind latency, linear phase. If pre-ringing bothers you, or you need low latency, minimum phase. Compare them at matched level on music with sharp transients; the difference, if any, lives near the top of the band.

What is an apodizing filter for?

For removing the ringing the recording's own converter left just below its Nyquist frequency. It is most relevant to 44.1 kHz and 48 kHz material.

What Sonir Bench does here

Sonir Bench (0.1.62) takes the sound of any app on your Mac, raises it to 705.6 or 768 kHz, runs your processing there and sends it to your DAC at the Exit rate you choose. The upsampling filter is a resample design you can write in Resampler: the passband, the stopband edge, the window, Linear phase or Minimum phase, and the number of taps, solved either automatically, by transition width or by number of taps, up to about a million taps. Every design is checked for image rejection before it plays, and the check shows the group delay and a CPU forecast. Templates has starting points, including apodizing, minimum phase, a gentle roll off and a 524,289-tap linear phase.

To choose the exit rate for your DAC, see Choose how Bench feeds your DAC. Every field of a design is in the resample design reference, and the rules it is solved by in How it is solved.