A filter is just a voltage divider that changes its mind with frequency. Pair the steady resistance of a resistor with the frequency-dependent reactance of a capacitor, and you can route bass to a woofer, treble to a tweeter, and silence a 60 Hz hum — all with no moving parts.
You have built a 3-way loudspeaker: a big woofer for the lows, a midrange for voices, and a tiny tweeter for cymbals and sparkle. One amplifier output, one pair of wires, feeds all three. And it sounds terrible.
The woofer is a heavy paper cone the size of a dinner plate. Ask it to reproduce a 10 kHz cymbal and it just flaps and chuffs — it cannot move fast enough, so high frequencies turn into distortion. The tweeter is the opposite: a fragile half-inch dome. Hit it with a 40 Hz bass note carrying real power and it bottoms out, buzzes, and eventually burns its voice coil. Each driver needs only the band of frequencies it was built for.
To make it worse, a faint 60 Hz buzz leaks in from the mains wiring everywhere — the dreaded hum. You want it gone from the tweeter and midrange entirely.
So here is the puzzle. The same voltage wiggles on the wire — bass, voices, cymbals, hum, all superimposed into one messy waveform. How do you build a circuit that reads the frequency of each wiggle and decides where it goes, with no microprocessor, no moving parts, just resistors, capacitors, and maybe a coil?
Drag the crossover frequency to set where bass hands off to treble. Each frequency tone in the mix lights up at the driver it should reach. Notice the 60 Hz hum (red) gets routed to the woofer — and a high-pass on the tweeter blocks it entirely.
By the end of this chapter you will be able to design that crossover with a pencil. The key number you will compute over and over is the cutoff frequency fc=1/(2πRC) — the frequency where a filter hands the signal off. Everything else is detail on top of that one equation.
Recall the plain resistive voltage divider: two resistors in series across a source, output tapped from the middle. The output is Vout = Vin × R2/(R1+R2). A fixed ratio, the same for DC and for 1 MHz. Boring — on purpose.
Now replace one resistor with a capacitor. A capacitor opposes alternating current with reactance XC=1/(2πfC), measured in ohms like a resistor but with a crucial twist: it depends on frequency f. At low frequency XC is huge (a cap blocks DC entirely). At high frequency XC collapses toward zero (a cap looks like a wire to fast signals). The divider ratio is no longer fixed — it slides with frequency. That is the entire conceptual leap of this chapter.
Think of the capacitor as a stretchy rubber diaphragm across a pipe. Push water back and forth slowly (low frequency) and the diaphragm barely budges — it blocks slow flow, like a high reactance. Slosh fast (high frequency) and the diaphragm flutters freely, passing the rapid flow as if it were not there — low reactance. An inductor (coil) is the mirror image: a heavy paddle wheel that resists sudden changes (high XL=2πfL at high f) but lets slow steady flow through.
Depending on which component you tap across, you get one of four behaviours:
| Type | Passes | Blocks | Everyday use |
|---|---|---|---|
| Low-pass (LP) | Low freq & DC | High freq | Woofer feed; smoothing; anti-alias |
| High-pass (HP) | High freq | Low freq & DC | Tweeter feed; kills 60 Hz hum; AC coupling |
| Band-pass (BP) | A band around f0 | Above & below | Midrange feed; radio tuning |
| Notch / band-stop | Everything except a band | A narrow band | Surgically remove 60 Hz hum |
Take R = 1.6 kΩ in series with C = 0.1 µF, output across C (a low-pass). At f = 100 Hz, XC = 1/(2π·100·1e−7) = 1/(6.28e−5) ≈ 15,900 Ω. The cap dominates the divider (15.9 kΩ vs 1.6 kΩ), so nearly all the signal appears across it — it passes. At f = 100 kHz, XC = 1/(2π·1e5·1e−7) ≈ 15.9 Ω. Now the cap is nearly a short; almost no voltage is left across it — that frequency is blocked. The crossover sits where XC = R.
The flat line is the fixed resistor R. The falling curve is the capacitor's reactance XC=1/(2πfC). Where they cross is fc. Move the sliders and watch the crossing point — the predicted fc is printed live.
The simplest real filter is one resistor and one capacitor — the RC filter. Which of the two you tap your output from decides whether it passes lows or highs. Nothing else changes. Swapping the positions of R and C turns a low-pass into a high-pass.
Series R, then C to ground, output taken across C. At DC the cap blocks — but "blocks" here means it holds the full voltage, so DC passes to the output. At high frequency the cap shorts to ground, pulling the output down. So lows pass, highs are shunted away. The magnitude of the gain is:
Same two parts, swapped: series C, then R to ground, output across R. Now the cap blocks DC and lows (so they never reach R), while highs sail through the cap and appear across R. Lows die, highs live. The gain is the mirror image:
Both share the same cutoff fc = 1/(2πRC). The only difference is which side of that frequency survives.
R = 1.6 kΩ, C = 0.1 µF (= 1×10−7 F). Then 2πRC = 6.2832 × 1600 × 1e−7 = 6.2832 × 1.6e−4 = 1.0053e−3 s. So fc = 1/1.0053e−3 ≈ 995 Hz. Below 995 Hz the low-pass passes freely; above it, the signal rolls off.
We want a low-pass at fc = 3000 Hz using a handy C = 0.01 µF (1e−8 F). Rearrange: R = 1/(2πfcC) = 1/(6.2832 × 3000 × 1e−8) = 1/(1.885e−4) ≈ 5305 Ω. The nearest standard E24 value is 5.1 kΩ, which gives fc = 1/(2π·5100·1e−8) ≈ 3120 Hz — close enough for audio.
Both circuits use the same R and C. Set a test frequency and read the gain each circuit delivers. At f = fc both read exactly 0.707 (−3 dB). Watch them cross.
Audio spans an enormous range — a whisper to a jet, a factor of a million or more in amplitude. Plotting that linearly is hopeless; a curve that mattered at the bottom would be an invisible smear next to the top. So filter engineers measure gain in decibels, a logarithmic ratio that compresses the range and turns multiplication into addition.
The factor of 20 (not 10) is because voltage ratios are squared to get power ratios, and the log of a square is twice the log. Some anchors worth memorising: a ratio of 1 is 0 dB (no change). A ratio of 0.5 is 20·log(0.5) = −6 dB (half voltage). A ratio of 0.1 is −20 dB. And the special one: 0.707 is −3 dB.
Power goes as voltage squared. If voltage drops to 0.707 = 1/√2 of input, power drops to (1/√2)² = 1/2 — exactly half. In dB that is 10·log(0.5) = −3.01 dB. So the −3 dB point is the half-power point, and that is precisely where we define the cutoff frequency. It is not an arbitrary threshold; it is the frequency at which the filter has thrown away half the signal's power.
A filter attenuates a tone to Vout/Vin = 0.05 (output is 5% of input). In dB: 20·log10(0.05). Now log10(0.05) = log10(5×10−2) = 0.699 − 2 = −1.301. Times 20 gives −26 dB. So "5% of input" and "−26 dB of attenuation" are the same statement. And the cutoff check: Vout/Vin = 0.707 → 20·log(0.707) = 20·(−0.1505) = −3.01 dB. ✓
| Vout/Vin | dB | Meaning |
|---|---|---|
| 1.000 | 0 dB | passband, full signal |
| 0.707 | −3 dB | cutoff — half power |
| 0.500 | −6 dB | half voltage |
| 0.100 | −20 dB | one decade down |
| 0.050 | −26 dB | example C |
| 0.010 | −40 dB | two decades down |
Drag the voltage ratio and watch the dB value. The −3 dB (0.707, half-power) line is marked. The bar shows both linear amplitude and the log scale, so you can feel how compressed dB is.
Put dB on the vertical axis and a logarithmic frequency on the horizontal, and a filter's whole personality appears as a single shape: the Bode plot (gain-vs-log-frequency). On these axes an RC filter's messy square-root formula straightens into two clean straight lines — a flat passband and a downward-sloping rolloff — meeting at a corner exactly at fc.
The slope of that rolloff is the headline spec. For a single RC pole it is −20 dB per decade, which is the same thing as −6 dB per octave. A decade is ×10 in frequency; an octave is ×2. Since 20·log(2) ≈ 6.02, dropping 20 dB over a 10× span is the same line as dropping 6 dB over each 2× span. Memorise the pair: one pole = −6 dB/octave = −20 dB/decade.
Below fc (for a low-pass) the curve hugs 0 dB — full signal. Right at fc it is down 3 dB. A decade above fc it is down 20 dB (output 10% of input). Two decades above, 40 dB down. The straight-line approximation (the "asymptote") meets the real curve everywhere except a gentle 3 dB rounding right at the corner.
The teal curve is the low-pass, the warm curve the high-pass — same R and C, so they cross at exactly −3 dB at fc. Drag R and C; the dashed line marks the computed cutoff and the rolloff slope is annotated.
A Bode plot is abstract. To make it visceral, here is a multi-tone signal — 100 Hz + 1 kHz + 10 kHz mixed together — pushed through a tunable low-pass. As you drag the cutoff, watch the spectrum bars: tones above fc shrink, tones below stay tall. This is the crossover from Tab 0, now with numbers.
Input is three equal tones: 100 Hz, 1 kHz, 10 kHz. Drag the cutoff fc. The top row is the input spectrum (all equal); the bottom row is the output — each bar scaled by the low-pass gain at its frequency. Drag fc below 1 kHz and watch the mid and high tones collapse.
A single RC rolls off at only −6 dB/octave. That is gentle — an octave above cutoff the unwanted signal is still at half voltage. For a crossover you often want a brick wall, not a ramp. The fix is to cascade stages: chain two RC sections and the rolloffs add, giving −12 dB/octave. Three give −18 dB/octave. The count of energy-storage elements (capacitors or inductors) in the signal path is the filter's order n, also called the number of poles.
So order sets steepness, linearly. First order: −6/octave. Second: −12. Third: −18. Fourth: −24. The passband stays flat (ideally); only the slope past the corner gets steeper as n climbs. The price is more parts, more cost, and — importantly — more phase shift, which can smear transients (Tab 7).
A 3rd-order Butterworth low-pass. Order n = 3, so the ultimate rolloff is 3 × 6 = 18 dB/octave, equivalently 3 × 20 = 60 dB/decade. Concretely: one octave above fc the signal is roughly 18 dB down (about 1/8 voltage); one decade above, 60 dB down (about 1/1000). Compare a single pole at the same point: only 6 dB and 20 dB down. The 3rd-order filter is dramatically more selective.
You cannot, however, just stack identical RC stages naively and expect a clean result — one stage loads the next, dragging the corner around and softening the knee. Real higher-order passive filters use carefully chosen, sometimes unequal, R/L/C values (and buffering, or LC ladders) so the stages do not fight each other. Active filters (Tab 8) solve loading elegantly with op-amp buffers.
Slide the order n from 1 to 6. Each curve is a Butterworth low-pass with the same fc; the selected order is highlighted and its n×6 dB/octave slope is annotated. Watch how much steeper the wall gets with each added pole.
Your midrange driver wants only a band — say 300 Hz to 3 kHz — passed and everything else rejected. The simplest way: put a high-pass and a low-pass in series. The high-pass sets the lower edge f1; the low-pass sets the upper edge f2. What survives between them is a bandpass.
A bandpass is described by two derived numbers. The center frequency is the geometric mean of the edges (geometric, because frequency is logarithmic):
And its sharpness is the quality factor Q, the ratio of center frequency to bandwidth:
High Q means a narrow, selective peak (a radio tuner picking one station out of the band). Low Q means a broad, gentle hump (a wide midrange pass). When f2/f1 > 1.5 you build the bandpass by cascading separate LP and HP stages (a "wide-band" filter). When the ratio is under 1.5 the band is narrow and you use a resonant LC or active topology instead.
Edges f1 = 900 Hz and f2 = 1100 Hz. Center: f0 = √(900 × 1100) = √(990,000) ≈ 995 Hz (note it is the geometric mean, slightly below the arithmetic mean of 1000). Bandwidth: BW = 1100 − 900 = 200 Hz. Quality factor: Q = 995/200 ≈ 5.0. A Q of 5 is a moderately sharp peak — the band is one-fifth as wide as the center frequency.
Invert a bandpass and you get a notch: pass everything except a narrow band. This is the surgical hum-killer. A 60 Hz notch removes mains hum while leaving the bass and treble around it untouched — far gentler than a high-pass that throws away all the low bass too. The classic passive notch is the Twin-T network, though its Q is low (about ¼) unless boosted with feedback.
Set the center frequency f0 and the quality factor Q. As Q rises the passband narrows around f0; the edges f1, f2, the bandwidth, and Q are all printed live. Start at f0=995 Hz, Q=5 to reproduce Example E.
Two filters can share the same order n and the same cutoff fc yet behave very differently. The reason is the exact placement of the poles, which sets a three-way engineering trade-off: passband flatness, rolloff steepness, and phase fidelity (constant delay). You cannot maximise all three; the named responses are different corners of that trade.
Butterworth — maximally flat passband. No ripple at all in the passband, a smooth monotonic rolloff. The default, most-popular choice when you just want a clean filter and a predictable corner. Moderate steepness, moderate phase distortion near the corner.
Chebyshev — steepest edge, at the cost of ripple. By allowing a controlled wiggle (ripple) in the passband, it achieves a much sharper transition than a Butterworth of the same order. Great when you must reject something just past the band. The ripple and worse phase behaviour are the price.
Bessel — constant group delay, gentle rolloff. Optimised for phase: all frequencies in the passband are delayed by the same amount, so a square wave or transient passes through with its shape intact — no overshoot or ringing. The trade is the gentlest rolloff of the three. Prized in audio and pulse work where waveform integrity matters more than sharp cutoff.
| Response | Passband | Rolloff (same n) | Phase / transient |
|---|---|---|---|
| Butterworth | maximally flat | medium | moderate ringing |
| Chebyshev | ripple | steepest | worst ringing |
| Bessel | flat (droops early) | gentlest | best — constant delay |
All three are 4th-order low-pass with the same cutoff. Toggle each on/off and compare: Chebyshev (pink) has passband ripple but the steepest knee; Butterworth (teal) is flat; Bessel (warm) droops earliest but rolls off most gently and has the cleanest phase. Watch the passband and the knee.
Passive filters (R, L, C only) have two annoyances. First, at audio frequencies the inductors needed for steep low-frequency filters are bulky, heavy, expensive, and pick up stray hum. Second, a passive filter can only attenuate — it has no gain, and each stage loads the next, so cascading degrades the response. Active filters fix both by adding an op-amp (Chapter 8).
The op-amp does three jobs. It buffers stages so they don't load each other, letting you cascade cleanly to any order. It can synthesise the behaviour of an inductor from just resistors and capacitors — no coils needed at all. And it can supply gain, so your filter can amplify the passband instead of only cutting.
The workhorse active filter is the Sallen-Key: one op-amp, two resistors, two capacitors, giving a clean second-order (2-pole, −12 dB/octave) section. Cascade two Sallen-Key stages for a 4th-order filter, three for 6th-order. Each stage's R and C values are chosen from standard tables to realise a Butterworth, Chebyshev, or Bessel response of the desired order — you look up the normalised values and scale them to your fc.
Active filters reach down to near DC (op-amps amplify steady signals; inductors cannot), making them ideal for low-frequency and audio work. But op-amps run out of gain-bandwidth at high frequency: above roughly 100 kHz to a few MHz, an ordinary op-amp can no longer keep up, and the active filter's response falls apart. There, passive LC filters take over — they happily run from ~100 Hz up to hundreds of MHz (RF), with no active device to run out of steam.
| Passive (R, L, C) | Active (op-amp + R, C) | |
|---|---|---|
| Inductors | required (bulky at AF) | none — synthesised |
| Gain | none (loss only) | can amplify |
| Low-freq limit | poor (huge L needed) | down to DC |
| High-freq limit | up to ~300 MHz | fades above ~100 kHz |
| Power | none needed | needs supply rails |
A log frequency axis. The teal band shows where active (op-amp) filters work well — near DC up to ~100 kHz. The warm band shows passive LC — ~100 Hz up into RF. Drag your target frequency and the sim tells you which technology to reach for.
We opened with a 3-way speaker fed by one wire, plus a 60 Hz hum. Here is the finished crossover, built from everything in this chapter:
| Concept | Formula | Used for |
|---|---|---|
| RC cutoff (LP & HP) | fc = 1/(2πRC) | The corner frequency of any RC filter |
| RL cutoff | fc = R/(2πL) | Inductor-based filters |
| Capacitive reactance | XC = 1/(2πfC) | Why the divider slides with f |
| Decibels | dB = 20·log10(Vout/Vin) | Gain on a log scale |
| Half-power point | −3 dB ↔ V ratio 0.707 | Definition of the cutoff |
| Rolloff | n × 6 dB/oct = n × 20 dB/dec | Steepness from order n |
| Bandpass center | f0 = √(f1·f2) | Geometric center of a band |
| Quality factor | Q = f0/(f2−f1) | Sharpness of a bandpass/notch |
| LC resonance | f0 = 1/(2π√(LC)) | Tuned LC filters & oscillators |
| Example | Inputs | Result |
|---|---|---|
| A — find fc | R=1.6 kΩ, C=0.1 µF | fc ≈ 995 Hz |
| B — design LP | fc=3 kHz, C=0.01 µF | R ≈ 5305 Ω (use 5.1 kΩ) |
| C — ratio to dB | V ratio = 0.05 | −26 dB |
| D — rolloff | 3rd-order Butterworth | 18 dB/oct = 60 dB/dec |
| E — bandpass | f1=900, f2=1100 Hz | f0=995 Hz, BW=200, Q≈5.0 |
You can now compute fc, read a Bode plot, choose an order, pick a response type, and decide active vs passive. The crossover is solved. Next, we let a filter feed itself — and it starts to sing.