Preface — who this is for
You have a recording that sounds bad. There’s a hiss behind the voice, or a low hum, or it crackles, or someone’s “s” sounds slice your ears. You’ve heard that software can “fix” this, and maybe you’ve seen people open intimidating programs full of knobs and coloured graphs and somehow make it better. You’d like to understand what’s actually happening — without going back to school for it.
This book is for you. It assumes you know nothing about audio software (a “DAW”) or signal processing (“DSP”). There is no maths you need to follow. Every idea is explained the way you’d explain it to a curious friend, with pictures-in-words and everyday analogies.
It’s organised around a small open-source toolkit called cathar — a program that cleans up audio. Cathar is a good teaching companion for two reasons. First, it does one clear job per tool: one button removes hiss, another removes hum, another rebuilds clipped sound, and so on — so each chapter can be about one honest idea. Second, cathar is transparent: every step it takes is plain, inspectable arithmetic rather than a secret black box, which means we can actually say what it’s doing.
But this is not a manual for cathar. It’s a book about the concepts that all audio-restoration tools share. Whether you end up using cathar, or iZotope RX, or Adobe Audition, or the noise-reduction button in free Audacity, the underlying ideas are the same — and once you understand the ideas, every one of those tools stops being mysterious. So at the end of most chapters there’s a short section called “How the big tools do it” that lines cathar up against the professional and free software the rest of the world uses, and tells you, honestly, where cathar is comparable and where the expensive tools pull ahead.
A note on honesty: audio restoration is repair, not magic. Some damage can be made nearly invisible; some can only be softened; and a few things, once lost, are gone for good. A good engineer knows the difference, and by the end of this book so will you.
Let’s start with the most basic question of all: what is a sound, once it’s inside a computer?
What digital sound actually is
Sound is wiggling air
When something makes a sound — a voice, a guitar string, a slammed door — it pushes the air next to it, which pushes the air next to that, and so on, until a little wave of pressure reaches your eardrum and wiggles it. Your brain reads that wiggle as sound. That’s all sound is: changing air pressure over time.
If you could draw the pressure at your ear from one moment to the next, you’d get a wavy line: up when the air is squeezed, down when it’s thinned out. That wavy line is called a waveform, and it’s the single most important picture in this whole book. Loud sounds make tall wiggles; quiet sounds make small ones. Fast wiggles are high-pitched; slow wiggles are low-pitched.
Turning the wiggle into numbers
A computer can’t store a smooth wiggly line directly. Instead it does something clever and slightly brutal: many thousands of times per second, it measures how high the wave is right now and writes that height down as a number. Then it throws away everything in between.
Each measurement is called a sample. Think of it like a flipbook: a cartoon isn’t really moving, it’s just a stack of still drawings shown fast enough to fool your eye. Digital audio is the same trick for sound — a stack of still “heights,” played back fast enough to fool your ear.
height
+1 ┤ ● ● loud = tall wiggles
│ ● ● ● ● quiet = small wiggles
0 ┼──●───────────●─────●───────────●─────────► time fast = high pitch
│ ● ● slow = low pitch
-1 ┤ ● ● ●
└ each ● is ONE sample: a single measured height.
Join the dots and you get the "waveform".
Two numbers describe how finely the computer captured the sound:
- Sample rate — how many measurements per second. CD audio uses 44,100 per second (written 44.1 kHz); video and pro audio often use 48,000. The more samples per second, the higher the pitches you can capture. (There’s a famous rule: to capture a pitch, you need at least twice as many samples per second as the pitch’s frequency. We’ll meet it again in the resampling chapter.)
- Bit depth — how finely each single measurement is written down: 16 bits per sample for CDs, 24 bits for studios. More bits means a quieter “noise floor” — the faint background fuzz that any digital measurement carries.
Inside cathar (and most modern tools), every sample is stored as a floating- point number between −1.0 and +1.0. −1.0 is the lowest the wave can go, +1.0 the highest, and 0.0 is silence (no pressure change). A whole second of mono CD audio is therefore just a list of 44,100 such numbers. A stereo recording is two such lists, one for the left ear and one for the right.
Why this matters for cleaning up sound
Every restoration tool in this book is, underneath, just arithmetic on that list of numbers. Removing hiss means nudging the numbers; removing a click means replacing a few of them; making something louder means multiplying them all. There is nothing else in the file. When cathar “denoises an interview,” it reads the list, does sums on it, and writes a new list. The art is entirely in which sums, and why.
There is a catch, though, and it sends us straight to the next chapter. Looking at the raw list of heights — the waveform — is a great way to see how loud something is from moment to moment, but a terrible way to see what’s in it. A hiss and a voice and a hum are all jumbled together in the same wiggly line, like three colours of paint stirred into one bucket. To pull them apart, we need a second way of looking at sound.
The two ways to look at sound
This is the most important chapter in the book. Once it clicks, almost every tool in every audio program will suddenly make sense.
The problem with the waveform
The waveform — that wiggly line of heights — tells you when things are loud, but not what they are. A hiss, a hum, a voice and a cymbal are all stirred into the same line. Trying to remove the hiss by editing the waveform is like trying to remove the salt from a soup with a fork.
What you really want is to separate the sound by pitch: put all the low rumble in one pile, the mid-range voice in another, the high hiss in a third. Then you could lower the hiss pile without touching the voice pile. That second view exists, and it’s called the frequency view, or the spectrum.
Splitting sound into pure tones
Here’s the deep idea, discovered by a mathematician named Fourier two centuries ago: any sound, however complicated, can be rebuilt by adding together a bunch of simple, pure tones — like the steady note of a tuning fork — each at its own pitch and its own loudness.
So a voice isn’t one thing; it’s a recipe: “a little bit of this low tone, a lot of this mid tone, a touch of that high tone…” Hiss is its own recipe: “a tiny, even sprinkle of every high tone at once.” A 60-cycle hum is the simplest recipe of all: “one specific low tone, and nothing else.”
The machine that takes a chunk of sound and reads off its recipe — how much of each pitch is present — is the Fourier transform, and the fast version every program uses is the FFT (Fast Fourier Transform). You will see “FFT” in the settings of every serious audio tool. Now you know what it means: split this sound into its ingredient pitches.
The spectrogram: the picture you’ll actually see
A single FFT reads the recipe of one short moment. But sounds change — a voice moves from word to word. So tools chop the audio into many short, overlapping slices (a few hundredths of a second each), take the FFT of every slice, and stack the results side by side. This sliding-window approach has a name — the Short-Time Fourier Transform, or STFT — and its picture is the spectrogram.
A spectrogram is a heat-map of sound: time runs left-to-right, pitch runs bottom (low) to top (high), and brightness shows how much of each pitch is present at each moment. On a spectrogram:
- A hum is a steady horizontal line low down — one pitch, always there.
- A voice is a shifting stack of bands in the middle that wobble as words change.
- Hiss is a faint, even haze across the entire top.
- A click is a thin vertical streak — a single instant where every pitch flares at once.
pitch
high ┤ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ← hiss: faint haze, everywhere, always
│ ░░░░░░░░░░░ █ ░░░░░░░░░░░░░░░░░░░
mid ┤ ▓▓▓▓ ▓▓▓ █ ▓▓▓▓▓ ▓▓▓▓▓▓ ← voice: bright bands that move
│ ▓▓▓ ▓▓▓▓ █ ▓▓▓ ▓▓▓ with the words
low ┤ ━━━━━━━━━━━━█━━━━━━━━━━━━━━━━━━━ ← hum: one steady line, low down
└──────────────────────────────► time
↑ click: a vertical streak (one instant, all pitches)
Suddenly the soup is unstirred. The hiss, the hum, the voice and the click are in visibly different places. That is why nearly every restoration tool works in the frequency view: in the spectrogram, the problem and the wanted sound usually sit in different spots, so you can lower one without harming the other.
The loop almost everything uses
Most of cathar’s “reduce” tools, and the equivalent tools in every professional program, run the same three-step loop, over and over, on each short slice:
- Analyse — FFT the slice into its recipe of pitches.
- Modify — turn down (or rebuild) the parts you don’t want.
- Resynthesise — add the pitches back together into a cleaned slice, and glue the slices back into a waveform (a careful blend called overlap-add).
flowchart LR
A["one short slice<br/>of the waveform"] --> B["FFT<br/><i>analyse</i><br/>split into pitches"]
B --> C["<b>modify</b><br/>turn down / rebuild<br/>the unwanted pitches"]
C --> D["inverse FFT<br/><i>resynthesise</i><br/>add pitches back"]
D --> E["overlap-add<br/>→ cleaned waveform"]
Cathar uses a 2,048-sample slice with a 75% overlap between neighbours and a gentle taper (a Hann window) so the joins are seamless. Those exact numbers don’t matter to you; the shape of the idea does. Analyse → modify → resynthesise. Hold onto it. Every “de-noise / de-hum / de-reverb / de-ess” tool in this book is a different idea for that middle modify step. The rest is plumbing.
How the big tools do it
Every audio program you’ve heard of lives in this same two-view world. The spectrogram in iZotope RX — the industry-standard restoration suite — is the centrepiece of its interface; you literally paint on it to fix problems. Adobe Audition has a “Spectral Frequency Display” that’s the same idea. Free Audacity shows a spectrogram view too. They all rely on the FFT/STFT loop above. The differences between cheap and expensive tools are almost never about this foundation — they’re about how cleverly the modify step decides what’s noise and what’s signal, which is exactly what the next chapters are about.
The repair toolbox: what breaks, and the “de-” family
Before we open up each tool, here’s the lay of the land — the common ways a recording goes wrong, and the tool that addresses each. You’ll notice almost everything starts with “de-”: de-noise, de-hum, de-click. That little prefix just means “take away.”
| What you hear | What it is | The tool |
|---|---|---|
| A steady background shhhhh | Noise / hiss — even, random energy across the high end | denoise |
| Hiss that won’t yield to classical denoise | Learned noise — complex, speech-like background | ml-denoise (opt-in) |
| A low hummmm or buzz | Mains hum — electrical 50/60-cycle leakage and its echoes | de-hum |
| Hum that wanders as the grid drifts | Drifting hum — fundamental and harmonics not perfectly fixed | de-hum –adaptive |
| Sharp ticks and pops | Clicks — brief spikes (vinyl dust, bad digital edits) | de-click |
| Constant vinyl fizz under the music | Crackle — dense micro-spikes, not isolated pops | decrackle |
| A harsh, fuzzy, “broken speaker” tone on loud bits | Clipping — peaks chopped flat by overload | de-clip |
| It sounds like it’s in a bathroom | Reverb — the room’s echoes smearing the sound | de-reverb |
| Long, smeary room on speech | Heavy reverb tail — late reflections dominate | de-reverb –wpe |
| Piercing ssss and sshhh | Sibilance — over-loud consonants | de-ess |
| A low whoomph on outdoor recordings | Wind — turbulence rumbling the mic | de-wind |
| A thump on every “p” and “b” | Plosives — breath bursts hitting the mic | de-plosive |
| Scratchy noise when someone moves | Rustle — clothing against a clip-on mic | de-rustle |
| A held note that breathes flat/sharp | Wow & flutter — unstable playback speed | dewow |
| Stereo sounds thin; mono sums badly | Azimuth skew — L/R channels slightly out of step | azimuth |
| Two takes of the same moment don’t line up | Timing offset — multi-mic or reference misalignment | align |
| A silent gap or dropout | Missing samples — splice, skip, or mute | inpaint |
| Too quiet / too loud / inconsistent | Level — wrong loudness for delivery | normalize |
| Muffled, “telephone-y” | Lost highs — squashed by heavy compression | enhance |
| Boomy, dull digitized vinyl | RIAA curve — playback de-emphasis not applied | riaa |
| Dull FM or early-CD capture | Broadcast/CD pre-emphasis — wrong playback curve | deemphasis |
| Gritty “stair-step” quiet passages | Quantization grain — too few stored levels | dequantize |
| Stereo too wide / bass not mono-safe | Stereo image — mid/side width and mono-maker | stereo |
| Phase / mono check | Phase correlation — L/R agreement meter | stats |
| Too fast / slow / chipmunk | Time & pitch — duration vs pitch edits | tempo / pitch / speed |
Two big families
Look closely and the tools split into two families, and the split matters because it tells you what’s possible.
Reducers turn down something unwanted that’s mixed alongside the good sound: hiss, hum, reverb, sibilance, wind. These work in the frequency view from the last chapter — find the unwanted pitches, turn them down, leave the rest. The good news: the wanted sound is still there underneath, so a careful reduction can be nearly invisible. The catch: if the unwanted thing overlaps the wanted thing too much, turning one down dents the other (this is where the “underwater” artefact comes from when people over-do noise reduction).
Repairers rebuild sound that’s been destroyed — clicks that punched a hole in the waveform, or clipping that chopped the tops off. Here the original is genuinely gone, and the tool has to invent a plausible replacement from the surrounding good audio, like an art restorer repainting a scratched corner of a canvas. The good news: done well, you can’t tell. The honest catch: it’s a guess, and the bigger the hole, the more it’s guessing.
flowchart TD
P["a problem in the recording"] --> Q{"is the good sound <b>destroyed</b>,<br/>or just <b>mixed</b> with junk?"}
Q -->|"mixed alongside it"| R["<b>REDUCER</b><br/>find the unwanted pitches,<br/>turn them down<br/><br/>denoise · de-hum · de-reverb<br/>de-ess · de-wind"]
Q -->|"destroyed"| S["<b>REPAIRER</b><br/>invent a plausible<br/>replacement<br/><br/>de-click · de-clip"]
R --> RR["good sound still there<br/>underneath → can be<br/>nearly invisible"]
S --> SS["original is gone → it's an<br/>educated guess; bigger hole,<br/>more guessing"]
Keeping these two families straight saves you a lot of disappointment. Asking a reducer to remove hiss that’s quieter than the voice? Easy. Asking a repairer to perfectly rebuild a badly clipped scream? It’ll help, but don’t expect a miracle — there was no original left to recover.
A golden rule of order
When you chain several fixes, order matters. A good default, and roughly the order cathar’s chapters follow:
- Repair destruction first — de-click, de-clip. (You don’t want later tools analysing damaged samples.)
- Remove steady offenders — de-hum, then de-noise.
- Tame the spectral stuff — de-reverb, de-ess.
- Shape and deliver last — enhance, then set the loudness.
With the map in hand, let’s open the tools one at a time — starting with the most common complaint of all: hiss.
Hiss and noise — denoising
The steady shhhhh behind a recording — tape hiss, a noisy microphone preamp, an air-conditioner, the electrical fuzz of a cheap interface — is the most common complaint in all of audio. Removing it is called denoising, and it’s the clearest example of the “analyse → modify → resynthesise” loop from chapter 2.
The core idea: subtract the haze
Recall that on a spectrogram, hiss looks like a faint, even haze sitting under everything, across many pitches at once, all the time. The voice, by contrast, is bright bands that come and go.
So denoising asks a simple question, pitch by pitch: “how much faint, ever- present haze is at this pitch?” That amount is the noise profile — a measurement of the hiss’s recipe. Once you know it, you go through the sound and, for each pitch in each moment, subtract the haze amount. Where the voice is loud, subtracting a little haze barely changes it. Where there’s only haze (the silences between words), subtracting the haze amount leaves… almost nothing. Silence. That’s the trick, and it has a name: spectral subtraction.
Two questions remain: how do you measure the haze, and how hard do you subtract.
Measuring the haze (the noise profile)
There are two ways, and cathar offers both:
- Learn it from silence. If your recording has a moment of “room tone” — a patch with no voice, just the background — you can point the tool at it and say “this is the noise; memorise its recipe.” Cathar calls this a noiseprint. It’s by far the more accurate method, because you’re showing the tool a clean example of exactly what to remove.
- Guess it automatically. If there’s no clean silence, the tool assumes the quietest moments at each pitch are mostly haze, and builds the profile from those. Cathar does this with a method called minimum statistics. It’s convenient and needs no setup, but it’s a guess, so it’s a little gentler and less surgical than a real noiseprint.
In practice: if you can spare even half a second of “just the room,” learn a noiseprint from it. It is the single biggest quality lever in denoising, in any program.
How hard to subtract (the aggressiveness knob)
Subtract too little and hiss remains. Subtract too much and you start eating into
the voice — and you create a very recognisable artefact: a twinkly, watery,
“underwater” or “musical noise” sound. (It happens because subtraction can leave
isolated little flecks of pitch that warble.) So every denoiser has an
aggressiveness control. In cathar it’s --alpha (gentle around 1.5, strong
around 4–6) plus a floor (--beta) that refuses to ever fully silence a pitch,
which keeps the result natural instead of glassy.
The whole game of denoising is this trade-off: hiss versus artefacts. There is no setting that removes all hiss and adds nothing; the skill is finding the spot where what’s left is less distracting than what you’ve added.
A gentler cousin: the Wiener filter
Instead of bluntly subtracting the haze, you can scale each pitch by how likely
it is to be real sound versus noise: pitches that tower over the haze are kept
almost fully, pitches barely above it are turned right down. This is the Wiener
filter (cathar’s --wiener option). On steady, gentle hiss it often sounds
smoother and less twinkly than plain subtraction. Same goal, slightly different
maths for the “modify” step.
How the big tools do it
This is mature, well-understood territory, and the concepts are identical everywhere:
- Audacity (free) has “Noise Reduction,” which works exactly like cathar’s noiseprint method: you select a quiet bit, click “Get Noise Profile,” then apply. Same idea, same trade-off knobs.
- Adobe Audition offers both a learned-profile “Noise Reduction” and an adaptive “DeNoise” that guesses, like cathar’s two modes.
- iZotope RX is where the money shows. Its “Spectral De-noise” does classic profile-based subtraction very well, but its flagship “Voice De-noise” and the newer AI-powered modes use machine learning — models trained on thousands of hours of speech — to tell voice from noise far more cleverly than any “subtract the haze” rule. That’s the real frontier: the concept is the same, but a trained model makes a smarter decision in the modify step, pulling clean speech out of noise that classical subtraction would smear.
Cathar sits firmly in the classical camp: transparent, predictable, no weights, genuinely good on steady hiss — and honestly outclassed by RX’s ML on the hardest cases (heavy, non-steady background noise like a busy café). Knowing which problem you have tells you which tool you need.
Optional learned denoise (ml-denoise)
If you build cathar with the optional ml feature, ml-denoise adds a
third path: a small recurrent network that predicts a per-pitch gain mask from
the log-magnitude spectrum — the same broad idea as DNS-Challenge / DeepFilterNet
style speech denoisers, but with open weights you can inspect and replace. It
still works in the frequency view (phase preserved, overlap-add out), so the
story from this chapter still applies; only the modify step is learned instead
of rule-based.
cathar ml-denoise noisy.wav --out cleaner.wav
A bundled checkpoint ships for light broadband cleanup; for serious speech work
you’d retrain on data like the DNS Challenge. Classical denoise remains the
default transparent path — ml-denoise is explicitly opt-in for when subtraction
and Wiener aren’t enough.
Hum — getting rid of the buzz
That low, steady hummmm under so many recordings has a single, boring villain: the electrical mains. Wall power doesn’t sit still — it alternates back and forth 50 times a second in most of the world, 60 times a second in the Americas. Any nearby cable, cheap power supply, or poorly grounded microphone can leak a little of that alternation into the audio as a pure, relentless tone.
Why it’s actually the easy one
Go back to the spectrogram. Hum is the simplest possible picture: a single razor-thin horizontal line, sitting at exactly 50 (or 60) cycles per second, present from start to finish. It doesn’t move. It doesn’t overlap much with the important parts of a voice. That makes it a sitting duck.
The tool for a single unwanted pitch is a notch filter — think of it as a very narrow pair of scissors that snips out one exact frequency and leaves everything on either side untouched. Tell it “remove 60 cycles per second” and it carves a thin notch there, killing the hum while the voice just above and below sails through.
The harmonics catch
There’s one wrinkle that trips up beginners. Mains hum is rarely just the base tone. The same electrical leakage usually brings along faint copies at exact multiples: 120, 180, 240… (for a 60-cycle hum), or 100, 150, 200… (for 50). These copies are called harmonics, and they’re why hum often sounds more like a “buzz” than a pure tone — your ear hears the whole stack.
So a hum remover doesn’t place one notch; it places a comb of them — one at the base frequency and one at each harmonic up the spectrum.
loudness
│ voice and music live in the gaps — untouched
│ ▁▂▃▅▇█▇▅▃▂▁ ▁▂▃▅▇▇▅▃▂▁ ▁▂▃▅▅▃▂▁
└──┬─────┬─────┬─────┬─────┬─────┬──────► pitch
60 120 180 240 300 360 Hz
V V V V V ← one narrow "notch" snipped at the
hum +harmonics (exact multiples) hum and each of its harmonics
In cathar you say dehum --freq 60 --harmonics 5, and it snips 60, 120, 180,
240, and 300 cycles.
If a hum still buzzes after you remove the base tone, you simply haven’t notched
enough of its harmonics.
The 50 vs 60 gotcha: if
--freq 60doesn’t help, try--freq 50. A recording made in Europe, most of Asia, Africa, or Australia will hum at 50; the Americas and parts of Japan at 60. Guessing wrong does nothing, because the notch lands between the hum’s actual lines.
How the big tools do it
Once again the concept is universal — narrow notches at the fundamental and its harmonics — and the tools differ mostly in convenience:
- Audacity has a “Notch Filter” effect (you place them by hand) and the free “Hum Removal” and Nyquist plug-ins that automate the comb.
- Adobe Audition’s “DeHummer” gives you a tidy panel: pick 50 or 60, choose how many harmonics, done — exactly cathar’s two controls with a nicer face.
- iZotope RX’s “De-hum” adds a smart twist: real mains hum drifts a tiny bit as the power grid fluctuates, and the line isn’t perfectly stable. RX can track that drift and follow the hum, and can learn the exact harmonic fingerprint of a particular buzz.
When the hum won’t sit still — adaptive tracking
Fixed notches assume the hum line is nailed to exactly 50 or 60 Hz forever. In practice the mains frequency wanders a little, and cheap gear lets each harmonic breathe in amplitude too. A comb of static notches can leave a thin residue — a ghost buzz sitting between the notches you carved.
Cathar’s dehum --adaptive takes the tracking idea seriously. For each
harmonic it demodulates the hum tone (shifts it to DC), low-passes to learn
its slow amplitude wiggle, and subtracts a canceller that follows both small
frequency drift and level changes. Use it when --freq 60 gets you most of the
way but a stubborn buzz remains:
cathar dehum buzzy.wav --freq 60 --harmonics 6 --adaptive --out cleaner.wav
Steady, textbook hum? Plain dehum is faster and enough. Wandering, “alive”
buzz? Try --adaptive.
This is the rare corner of audio where the cheap and free tools are genuinely close to the expensive ones on steady hum, because the problem is so well-defined. Tracking drift is where the pro tools still earn their keep — and where cathar’s adaptive mode closes much of the gap.
Clicks and clipping — repairing damaged samples
The last two chapters reduced unwanted sound that sat alongside the good stuff. This chapter is different: here the good sound has been destroyed in places, and the tool has to rebuild it. These are the “repairer” tools from chapter 3, and they behave more like an art restorer repainting a damaged canvas than like a filter.
Clicks — tiny holes in the wave
A click is a brief, violent spike: a speck of dust on a vinyl record, a scratch, or a sloppy digital edit that left a sudden jump. On the waveform it’s a single sample (or a few) shooting way out of line with its neighbours; on the spectrogram it’s a thin vertical streak, because an instantaneous spike contains a flash of every pitch at once.
The fix, de-click, is wonderfully intuitive:
- Find the spike. Compare each sample to the typical level of its
neighbours. If one is wildly larger than the local average — say ten times —
it’s almost certainly a click, not real sound. (Cathar’s
--thresholdis exactly this “how many times louder than normal counts as a click” number.) - Cut it out and redraw. Delete the offending samples, leaving a tiny gap,
and rebuild what connects before to after. By default Cathar uses an
autoregressive (Janssen) model of the surrounding wave — the same family as
inpaint— so the patch follows the local waveform rather than a straight smooth curve.--method cubickeeps the older gentle Hermite fill when you want something faster or more predictable.
Because a click is only a handful of samples — a fraction of a millisecond — the gap is tiny and the redraw is almost always invisible. De-click is one of restoration’s reliable wins.
Clipping — when the tops get chopped off
Clipping is nastier. Every recording system has a ceiling: the loudest it can represent (that ±1.0 from chapter 1). Push a signal past the ceiling — record too hot, overdrive a preamp — and the system can’t go higher, so it just flattens the peak off. The rounded tops of the wave become flat plateaus. You hear it as a harsh, fuzzy, “broken speaker” distortion on the loud parts.
recorded fine: CLIPPED (overloaded):
ceiling ┄┄┏━━━━━┓┄┄ ← the top is chopped flat;
╭───╮ ┃ ┃ the real curve is GONE
╱ ╲ ╱ ╲
─╯ ╰─ ─╯ ╰─
de-clip's job: guess the missing dotted peak from the slopes either side
┄┄┄╭╴╴╮┄┄┄ ← an invented, plausible curve
╱ ╲ (a guess, not a recovery)
─╯ ╰─
Here’s the cruel part: when the top is flattened, the information about how high the wave really wanted to go is gone. Unlike a click (a brief spike you can delete), clipping erases whole stretches of the true waveform and leaves a flat line where a curve should be. De-clip has to guess the missing peak from the shape of the wave on either side.
How do you guess a peak you can’t see? You use the fact that real sound is predictable: the wiggle approaching the flat top was on a clear trajectory, and the part leaving it continues that trajectory, so you can extrapolate the curve that “should” have been there — rising above the ceiling and coming back down — instead of leaving a plateau. The better the prediction model, the more natural the rebuilt peak.
An honest word about de-clip
De-clip is the hardest tool in this book, and it’s important to set expectations:
- A lightly clipped recording (a few peaks just kissing the ceiling) cleans up beautifully — there’s lots of surrounding curve to predict from, and the gaps are short.
- A badly clipped recording (long flat stretches, a distorted scream) can be softened but never truly restored. The original is gone; the tool is inventing, and across a long flat run even a clever guess drifts. Expect “less harsh,” not “as if it never happened.”
The professional state of the art here is genuinely sophisticated — it treats the missing samples as unknowns and solves for the values that best fit a model of the surrounding sound (an “autoregressive” prediction, the classic method) or that make the result as simple as possible in the frequency view (a modern “sparse reconstruction” approach). These are real mathematics, not a smooth line across the gap, and they’re why a top declipper can rebuild a peak so convincingly.
How the big tools do it
- Audacity has a “Clip Fix” effect that estimates the missing peaks from the surrounding slope — the same basic idea as a simple de-clip.
- Adobe Audition’s “DeClipper” and the click-focused “Automatic Click Remover” handle both problems with adjustable thresholds.
- iZotope RX is, again, the benchmark. Its “De-clip” and “De-click” modules use the advanced prediction/reconstruction methods above and apply them automatically across a whole file; “De-crackle” extends de-click to the dense, continuous crackle of old records. For serious restoration of damaged vinyl or badly clipped masters, RX is the tool the pros reach for.
For the dense crackle of old vinyl — thousands of tiny spikes, not isolated
pops — see decrackle in the separation chapter (chapter 19). It hunts
micro-spikes the way de-click hunts big ones.
Cathar’s de-click is solid and reliable, and its de-clip defaults to the modern “sparse reconstruction” method described above — A-SPADE (Kitić, Bertin & Gribonval, 2015), the same family iZotope-class tools use and the preferred method in the Rajmic et al. 2020 survey of popular de-clipping algorithms. It treats the clipped samples as unknowns and solves for the signal that is simplest in the frequency view (sparsest across a windowed, overlapping spectrum) while keeping every reliable sample exact and every clipped sample beyond the threshold — so a peak is rebuilt toward its true height rather than flattened to a plateau. It’s an iterative solve (a little slower than a one-shot fill, and worth it).
Other survey-family methods are selectable with --method:
| Flag | Idea |
|---|---|
spade (default) | A-SPADE sparse Gabor reconstruction |
social | Social sparsity — PEW neighbourhood shrink on the STFT |
omp | Constrained matching pursuit on a per-frame DFT dictionary |
nmf | Non-negative matrix factorization of the spectrogram magnitude |
neural | Deep-unfolded soft-threshold ISTA (LISTA-style; no trained weights) |
cubic | Fast Hermite shoulder fill for light clips / previews |
Light-to-moderate clipping cleans up convincingly; it’s still not a substitute for RX on heavily distorted material — across long flat runs any tool is guessing. As always: knowing how badly something is damaged tells you whether any tool can save it.
Rooms and reverb — taking the echo away
Record someone in a tiled bathroom and they sound like they’re in a tiled bathroom. Record them in a small carpeted booth and they sound “close” and “dry.” The difference is reverb — the thousands of tiny echoes a room adds as sound bounces off the walls, floor, and ceiling before it reaches the mic.
What reverb really is
When you speak, the mic hears two things. First the direct sound — your voice travelling straight to it. Then, a few thousandths of a second later, a flood of reflections — the same sound arriving again and again, having bounced around the room, each copy a little quieter and a little later than the last. That trail of fading echoes is reverb. A big stone hall has a long, obvious trail; a small treated studio has almost none.
Reverb is the trickiest “reducer” in this book, because the echoes are made of the exact same sound as the voice — they’re just delayed, quieter copies. You can’t separate them by pitch the way you separate hiss, because they share the voice’s pitches entirely.
The trick: watch how each pitch fades
So de-reverb uses timing instead of pitch. Here’s the insight. When you start a new word, the direct sound arrives as a sharp onset — a quick rise in energy. Then you stop, but the room keeps ringing: the energy at each pitch decays away in a smooth, tell-tale tail. That decaying tail is the reverb.
A de-reverb tool watches each pitch over time and learns the difference between the punchy onsets (keep these — they’re the real voice) and the lingering decay tails (turn these down — they’re the room). In effect it follows the energy at every pitch and, whenever the energy is just coasting downward toward the room’s background level, it gates it back. The direct, intentional sound survives; the ringing afterglow is suppressed.
Cathar’s default dereverb does exactly this with a two-pass scan: first it
measures how low each pitch typically sinks (the “reverb floor”), then it gently
gates anything sitting near that floor. The --strength knob controls how
aggressively it chases the tails.
cathar dereverb roomy.wav --strength 0.5 --out drier.wav
A deeper mode — WPE
On speech with a long, smeary tail, the energy-gating approach can sound hollow — it knows how loud each pitch is, but not how the late echoes relate to earlier ones. Weighted Prediction Error (WPE) is a published blind de-reverb method that treats each frequency bin separately: late STFT frames are predicted as a weighted mix of slightly earlier frames at that same pitch, and the prediction — the reverb part — is subtracted. No noise profile, no trained model; just linear prediction in the frequency domain.
cathar dereverb speech.wav --wpe --out drier.wav
Use WPE when the room tail is obvious on dialogue and the default gate leaves too much mush. It’s heavier maths than gating, and like all de-reverb it trades against naturalness if you push too hard — but on moderate roominess it often pulls voice forward more cleanly than strength-gating alone.
Why it’s never perfect
Two honest limitations:
- Onsets and tails overlap. Fast speech starts a new word before the previous one’s tail has died, so the tool is always making a judgement call, and pushed hard it can make a voice sound a bit hollow, gated, or “phasey.”
- You can dry a room but not delete it. De-reverb shortens and softens the trail; it can’t put you in a different room. Targeting a modest improvement — “less boomy,” “a bit closer” — gives far nicer results than chasing total removal.
How the big tools do it
- iZotope RX’s “De-reverb” is the leader, and the gap here is large. It uses a learned model of the reverb tail and, in recent versions, machine learning to separate dry voice from room — it can take a startling amount of reverb off a voice while keeping it natural. There’s a separate “Dialogue De-reverb” tuned for speech.
- Acon Digital and Accentize make well-regarded dedicated de-reverb plug-ins used in film post-production, several now ML-based.
- Audition has a “DeReverb” effect; Audacity has no real built-in de-reverb, which tells you how much harder this problem is than hum or hiss.
This is the area where classical, no-model tools like cathar are most outclassed
by modern ML, because separating a sound from delayed copies of itself is exactly
the kind of “needs a trained ear” task that a learned model does best. Cathar’s
gate-the-tails approach and its --wpe predictor both give real, useful reduction
on moderate reverb; for heavy, film-grade de-reverberation, RX is in a different
league.
Harsh “S” sounds — de-essing
Some voices, some microphones, and a lot of close-up podcast and voiceover recording produce a piercing, splashy hiss on every “s,” “sh,” “ch,” and “t.” It’s called sibilance, and once you notice it you can’t un-notice it. Taming it is de-essing — and it’s a nice example of a tool that has to act only at certain moments, not all the time.
Why “s” sounds are special
Speech is mostly made down in the low and middle pitches — the body and warmth of a voice. But the sibilant consonants are different: an “s” is essentially a short burst of high-pitched noise, concentrated up near the top of the spectrum (very roughly 4,000–10,000 cycles per second). On a spectrogram, every “s” is a bright little cloud up high, separate from the vocal bands below.
That separation is the key. A de-esser is really just a volume control that only listens to the high end, and only turns down when that high end gets too loud. When you say a vowel, there’s little energy up top, so the de-esser does nothing. When you hit an “s,” the high end spikes, the de-esser notices, and it ducks just that burst by just enough — then lets go. The warmth of the voice below is never touched.
Two controls run the show, and they’re the same in every tool:
- A crossover frequency — the pitch above which the de-esser pays attention
(cathar’s
--freq, default 4,000). Set it where the harsh “ss” lives. - A threshold — how loud the high end has to get before the tool reacts. Too sensitive and it dulls every consonant; too lax and the worst “s” sounds still cut through.
Going multiband and adaptive
There are two refinements that separate a crude de-esser from a good one, and cathar offers both:
- Multiband. Sibilance isn’t one pitch — a sharp “s” and a softer “sh” peak
in different places up top. A multiband de-esser splits the high end into
several sub-bands and watches each one independently, so it can duck the exact
region that’s offending without dulling the rest. (Cathar’s
--bands 4turns this on.) - Adaptive. People get louder and quieter as they talk, so a fixed threshold is wrong half the time. An adaptive de-esser keeps a running sense of how loud each band normally is and reacts to sudden jumps above its own recent average — so it follows the speaker instead of needing constant babysitting.
How the big tools do it
- Every DAW — Logic, Pro Tools, Ableton, Cubase — ships a de-esser plug-in, because sibilance is the single most common vocal-mixing problem. They all work on the crossover-plus-threshold principle above; the better ones are multiband.
- FabFilter Pro-DS and Waves Sibilance are the plug-ins mixing engineers reach for; Pro-DS in particular is prized for sounding transparent because it’s cleverly adaptive and only touches the sibilant energy.
- iZotope RX’s “De-ess” adds spectral precision — it can attenuate the offending high-frequency cloud only where and when it occurs on the spectrogram, which is gentler than turning down a whole band.
De-essing is a place where cathar’s multiband, adaptive approach is genuinely competitive with the mainstream, because the problem is well-bounded and doesn’t need a trained model — it needs to listen to the right pitches at the right moments, which classical DSP does perfectly well.
Wind, pops, and rustle
Three more everyday nuisances, all caused by physical things hitting the microphone rather than by electronics or rooms. They share a theme, which is why they’re together: each is a burst of unwanted energy concentrated in a particular part of the spectrum, and each is removed by acting on that part — sometimes all the time, sometimes only during the burst.
Wind — the low rumble
Record outdoors without a foam or furry “dead-cat” cover and the breeze turbulating across the mic produces a low, blustery rumble — sometimes a roar. Crucially, almost all of that energy sits very low, below the range where speech lives.
That makes the cure simple: a high-pass filter — a tool that lets the high
stuff pass and blocks the low stuff. Set its cutoff at, say, 80 cycles per
second and everything below (the wind rumble) is steeply rolled off while the
voice above is untouched. Cathar’s dewind --cutoff 80 is exactly this, built
from a classic, very steep filter shape (a Butterworth) so the rumble drops
away fast without disturbing the voice just above it. It’s the same high-pass you
hear engineers reach for the instant an outdoor clip starts rumbling.
Plosives — the “p” thumps
Get close to a mic and say “peter piper” and each “p” and “b” fires a little puff of air straight at the capsule, producing a low thump — a plosive. Like wind, a plosive is mostly low-frequency energy — but unlike wind, it’s not constant: it’s a brief burst, only on the plosive consonants.
So instead of filtering all the time, de-plosive watches the low end and acts only when it suddenly thumps: it spots the short bursts of excess low energy and ducks just those moments, leaving the steady low warmth of the voice in between alone. (The physical prevention, by the way, is the round foam ball or mesh “pop filter” you’ve seen in front of studio mics — but when you’re handed a recording that already has the thumps, software has to clean up after the fact.)
Rustle — the clip-on-mic scratch
The little clip-on (lavalier) mics used in interviews and film sit against clothing, and every time the wearer shifts, the fabric scrapes the mic and makes a scratchy rustle. This one is sneakier: it’s a brief burst like a plosive, but it lands in the mid range, right among the consonants of speech, so you can’t just filter it away without dulling the voice.
De-rustle therefore does the same “act only during the burst” trick as de-plosive, but aimed at the mid-range: it watches a band roughly where rustle lives (around 1,500–6,000 cycles) and, when energy there spikes briefly above its normal level, it pulls just that fleeting spike back down, while sustained speech in the same band passes through. It’s the hardest of the three, because the rustle and the wanted consonants are near neighbours.
How the big tools do it
- The high-pass for wind is utterly universal — every DAW channel strip, every mixer, has a low-cut button. Nothing exotic here, in cathar or anywhere.
- For plosives, engineers often just automate a quick low-cut on the offending word, or use a dynamic filter; iZotope RX’s “De-plosive” automates exactly the spot-the-thump-and-duck-the-lows behaviour cathar uses.
- Rustle is genuinely hard, and it’s a showcase for ML: iZotope RX’s “De-rustle” was one of the first ML-driven restoration modules precisely because fabric noise overlaps speech so much that a learned model separates them far better than a rule about bands. Cathar’s transient-suppression approach gives a useful reduction on obvious rustles; deep, speech-tangled rustle is RX’s territory.
Notice the recurring pattern across this whole section: a steady offender (wind) gets a filter that’s always on; a bursty offender (plosive, rustle) gets a watcher that acts only during the burst. That single distinction — always on versus only-when-it-happens — explains an enormous amount of audio software.
How loud is loud? — loudness and LUFS
You’ve cleaned up the recording. Now you have to make it the right loudness to publish — for a podcast, a video, a broadcast, a music stream. This sounds trivial (“just turn it up”) and is secretly one of the most misunderstood topics in audio. Getting it right is normalization, and getting it right the modern way means understanding a unit called LUFS.
“Loud” is not “tall”
The naïve way to set level is to look at the peak — the single tallest sample in the file — and turn everything up until that peak just touches the ceiling. This is peak normalization, and it has a fatal flaw: it tells you nothing about how loud something sounds.
A sudden snare hit and a sustained shout can have the same peak height, yet the shout sounds far louder, because loudness is about how much energy there is over time, not how tall one instant is.
a brief tick a sustained tone
(same PEAK height, but much quieter to the ear)
+1 ┤ █ ████████████████████
0 ┼───█────────── ████████████████████
-1 ┤ █ ████████████████████
one tall spike loud the whole time
PEAK: maxed PEAK: identical
LOUDNESS: low ◄──► LOUDNESS: high
Peak-normalize a quiet, even podcast and a punchy one to the same peak and the punchy one will sound much louder. That’s why, for decades, some adverts felt like they were screaming at you between TV shows: everyone was peak-normalizing and then squashing their audio to be as dense as possible.
LUFS: measuring perceived loudness
The fix was an international standard (its name is ITU-R BS.1770, adopted for broadcast as EBU R128) that measures loudness the way ears experience it, not the way a ruler does. The unit is the LUFS — “Loudness Units relative to Full Scale.” Bigger negative number = quieter. Three ideas make it match hearing:
- It averages energy over time, so a sustained sound reads louder than a brief spike of the same height — exactly as you hear it.
- It weights pitches like your ear does. Your hearing is most sensitive in the upper-mid range and less so at the extremes, so the meter gives those mid-high pitches more say. (This pitch-weighting is called K-weighting.)
- It ignores the silences. Long gaps shouldn’t drag the average down, so the measurement “gates out” the quiet bits and only averages the parts that are actually playing.
The upshot: two pieces of audio at the same LUFS sound equally loud, even if one is a whisper-and-shout drama and the other a steady narrator. That’s why the whole delivery world now specifies loudness in LUFS. Common targets:
| Where it’s going | Target |
|---|---|
| Broadcast TV / radio (EBU R128) | −23 LUFS |
| Podcasts (Apple/Spotify spoken) | −16 LUFS |
| Music streaming (Spotify, YouTube) | −14 LUFS |
Cathar measures true, gated, K-weighted LUFS and turns the whole file up or down
by one amount to hit your target: normalize --target -16.
The true-peak safety net
There’s one last trap. When digital audio is turned back into sound, the player draws a smooth curve through the samples — and that curve can briefly poke higher than any actual sample, between the dots. These hidden overshoots are true peaks (“inter-sample peaks”), and if they cross the ceiling they cause nasty distortion on some devices even though no stored sample looked too loud.
So a proper loudness normalizer doesn’t just hit the LUFS target — it also keeps
the true peak under a safe ceiling (commonly −1 dBTP). Cathar holds the gain
back if pushing for the loudness target would breach that ceiling
(--true-peak -1), trading a hair of loudness for a guarantee it never clips on
playback.
How the big tools do it
- Every broadcast and streaming workflow on earth now runs on LUFS — it’s the law for TV in much of the world. Loudness meters are everywhere: the free Youlean Loudness Meter, Waves WLM, Nugen VisLM, and the meters built into Pro Tools, Logic, and Audition.
- iZotope RX and Ozone include a “Loudness” module that does exactly what cathar does — measure integrated LUFS, normalize to a target, respect a true-peak ceiling — with presets for every platform.
- FFmpeg’s
loudnormfilter is the command-line workhorse the whole web uses for batch-normalizing video and podcast audio; it implements the same BS.1770 standard.
This is a corner where cathar is doing the exact same standardized maths as the professional tools — there’s no ML and no secret sauce in loudness, just a well-defined international measurement. If cathar says −16 LUFS, it means the same −16 that RX, FFmpeg, and a broadcast meter mean.
Sample rate and resampling
Back in chapter 1 we met the sample rate — how many times per second the computer measured the wave. Sometimes you need to change it: a podcast host records at 48,000 samples per second but the platform wants 44,100; an old clip is at 22,050 and you’re mixing it into a 48,000 project. Converting from one rate to another is resampling, and doing it well is subtler than it looks.
Why you can’t just drop or copy samples
The lazy way to go from 48,000 to 24,000 would be to throw away every other sample. The lazy way up would be to duplicate samples. Both wreck the sound, and the reason why is one of the most important rules in all of digital audio.
Remember the rule from chapter 1: to capture a pitch correctly, you need at least twice as many samples per second as that pitch’s frequency. The highest pitch a given rate can hold is therefore half the sample rate — a limit called the Nyquist frequency. At 48,000, you can hold pitches up to 24,000; at 24,000, only up to 12,000.
Now the trap. If you crudely halve the rate to 24,000 but the original still contained, say, a 15,000-cycle pitch — above the new 12,000 ceiling — that pitch doesn’t just disappear. It folds back down and reappears as a wrong, lower pitch, a ghostly tone that was never in the music. This folding is called aliasing, and it sounds like metallic, gritty, “digital” nastiness. (It’s the audio version of why wagon wheels seem to spin backwards in old films — too few “samples” per rotation.)
A fast wiggle, measured too rarely, masquerades as a SLOW one:
the real (fast) wave: /\ /\ /\ /\ /\ /\
we only sample here: ● ● ●
╲ ╱ ╲ ╱
so we "see" this: ╲_______╱ ╲_______╱ ← a wrong, low tone
that was never there
The fix: filter, then convert
So correct downsampling has two parts: first remove every pitch above the new ceiling (so there’s nothing left to fold), then drop to the new rate. And to invent the new in-between sample values smoothly — whether converting up or down — you don’t copy the nearest old sample; you draw the ideal smooth curve through the existing samples and read the new values off it.
The “ideal smooth curve” has a known best shape (mathematicians call the perfect one a sinc function), and a good resampler uses a careful, tapered approximation of it — cathar uses a Kaiser-windowed sinc — that both interpolates cleanly and kills the aliasing in a single pass. You don’t need the maths; you need the moral: good resampling is a smart filter, not a copy-paste, which is why “just change the number” in cheap software can sound worse than the original.
Cathar’s resample --rate 44100 does this properly in both directions, with the
anti-alias filter tracking whichever rate is lower.
A cousin: bandwidth extension
The same family of ideas powers cathar’s enhance tool, which tackles the
opposite problem — sound that’s missing its highs (muffled, “telephone-y,”
because heavy MP3 compression or a low recording rate threw the top away). You
can’t recover what was deleted, but you can synthesize plausible new highs so
the result sounds brighter and more open. It’s an educated fabrication, not a
recovery — useful for rescuing dull material, but it’s adding an informed guess,
not restoring lost detail.
Cathar offers two strategies via --method:
replicate(default) — spectral band replication (SBR): copy the texture of the highest frequencies you still have and “paint” similar energy into the empty band above, with a gentle rolloff so it doesn’t sound like a harsh copy-paste.interpolate— draw a smooth log-magnitude curve through the existing spectrum and extrapolate it into the missing highs. Often a bit more natural on material where the top end was softly rolled off rather than brutally chopped.
cathar enhance dull.wav --rate 48000 --method replicate --out brighter.wav
cathar enhance dull.wav --rate 48000 --method interpolate --out brighter.wav
Both paths resample to the target rate first (using the same anti-aliased sinc
filter as resample), then fill in whatever high band is still empty. Try
replicate first; switch to interpolate if the top sounds too “cloned.”
How the big tools do it
- SoX (“Sound eXchange”), the venerable command-line audio swiss-army knife,
has a famously high-quality
rateeffect — its resampler is a reference others are measured against. - libsamplerate (a.k.a. “Secret Rabbit Code”) is the open-source resampling library quietly embedded in countless audio apps; r8brain and iZotope’s resamplers are studio-grade options.
- Every DAW resamples automatically when you drop a 44,100 file into a 48,000 project — usually invisibly and well.
Resampling, like loudness, is settled science: there’s a known-best approach, and the difference between tools is how closely they approximate it and how fast. Cathar’s Kaiser-windowed sinc is a solid, standard implementation in the same family as the references above — no model, no magic, just a well-built filter.
Stereo, channels, and phase
So far we’ve mostly imagined a single stream of samples — mono, one microphone’s worth of sound. But most recordings you meet are stereo: two streams, one for the left ear and one for the right. A couple of ideas about how those two streams relate will save you from some surprisingly common mistakes.
Two channels make a space
Your brain locates sounds partly by comparing what your two ears hear. A sound a little louder and a hair earlier in the left ear is heard as “over to the left.” Stereo recording recreates this: by capturing two slightly different versions of the scene, it lets your ears reconstruct a stereo image — a sense of width and placement, of instruments spread across a stage.
A mono file is just one channel; a player sends it equally to both speakers, so it sits dead centre. A stereo file is two channels, and the difference between them is what creates the width. Keep that word — difference — in mind; it’s the whole point of the next two sections.
A small trap: mono tagged as “left”
Here’s a real-world gotcha that bites people constantly. A mono file is supposed to play equally from both speakers. But the file format has a little label saying which speaker each channel belongs to, and if a tool mislabels a mono file’s one channel as “front-left” instead of “centre/mono,” some players will dutifully send it only to the left speaker — and you’ll swear something is broken, even though the sound itself is perfectly fine and centred.
The audio is balanced; only the label is wrong. (Cathar had exactly this bug once: its mono files were tagged “front-left” and played one-sided until the label was corrected to “centre.”) The lesson for you: if a mono file suddenly plays out of one speaker, suspect the channel label, not the audio — it’s a metadata problem, not a damaged recording.
Why phase matters when you process stereo
Now the subtle one. Suppose you run a reducer — say a denoiser — on a stereo file. The obvious approach is to clean the left channel and the right channel separately. The hidden danger: the tool might decide a faint pitch is “noise” in the left channel but “keep it” in the right, on the very same instant. Now the two channels disagree about that pitch — and remember, the stereo image is the difference between the channels. So the background, the room, the “air” of the recording starts to wander and smear between the speakers as the tool makes different choices left and right. Engineers call this losing phase coherence, and it makes a cleaned stereo recording sound oddly unstable and “swirly” even when each channel sounds fine on its own.
The cure is to make the decision once, jointly, and apply it to both channels
identically — so the channels always agree about what to keep and what to remove,
and the stereo image stays rock-solid. Cathar offers this as a phase-coherent
mode (denoise --coherent): it works out one cleaning decision from the combined
(“mid”) signal and applies that single decision to left and right together. The
image stops wandering.
How the big tools do it
- Serious restoration and mastering tools are careful about stereo by default. iZotope RX processes with stereo coherence in mind and offers mid/side and linked-channel options throughout; mastering suites like Ozone and FabFilter plug-ins expose mid/side processing explicitly.
- The mid/side concept — treating a stereo signal as its “centre” (mid) and its “difference” (side) rather than as left/right — is a standard professional technique for exactly the reason above: it lets you process the shared centre and the stereo width separately and coherently.
What cathar gives you for stereo
Beyond coherent denoise, cathar ships an explicit mid-side toolkit and a phase-correlation reading so you can see and fix channel agreement:
# How mono-compatible is this file? (+1 = solid mono, −1 = L/R cancel)
cathar stats stereo.wav # look for "Phase corr"
# Collapse width to mono (width 0) or widen slightly
cathar stereo song.wav --width 0.0 --out monoish.wav
cathar stereo song.wav --width 1.3 --out wider.wav
# Mono-maker: sum bass to mono below 120 Hz (same idea as vinyl elliptical mono)
cathar stereo transfer.wav --mono-below 120 --out tight-bass.wav
# Encode to mid/side (ch0=mid, ch1=side), process, then decode
cathar stereo song.wav --ms --out ms.wav
# …edit mid or side…
cathar stereo ms.wav --from-ms --out lr.wav
# Mono source → simple Haas pseudo-stereo
cathar stereo mono.wav --upmix --out wide.wav
If left and right are time-skewed rather than just too wide — vinyl azimuth or
multi-mic delay — use azimuth or align (optionally
--method gcc-phat when levels differ or the room is a bit wet).
Stereo handling is one of those quiet quality markers that separates a tool that “works” from one that’s trustworthy on real material. The concepts — width lives in the difference, and processing should keep the channels agreeing — are the same whether you’re in cathar, RX, or a full mastering chain.
How cathar compares to the big tools
You now understand the concepts. This chapter steps back and places cathar — and the ideas in this book — next to the software the rest of the world uses, so you know which tool fits which job. The goal isn’t to crown a winner; it’s to make you a clear-eyed chooser.
The landscape, in plain terms
Audio software for cleanup falls into a few camps:
- The restoration specialist — iZotope RX. The industry standard for cleaning up dialogue, podcasts, music, and archival audio. Spectrogram-centred, deep, increasingly powered by machine learning. Expensive, and worth it for people who do this for a living.
- The all-rounders — Adobe Audition, and DAWs (Pro Tools, Logic, Ableton, Reaper, Cubase). Audio editors and studios that include restoration tools alongside everything else (recording, mixing, effects). Good, not always best-in-class for restoration.
- The free editor — Audacity. Free and open-source, with genuinely useful noise reduction, click removal, and filters. The place millions of people first clean up a recording.
- The command-line workhorses — SoX and FFmpeg. No window, no buttons — you type a command. Beloved for batch work and automation: converting, resampling, loudness-normalizing thousands of files. FFmpeg in particular quietly powers a huge fraction of the internet’s media processing.
- cathar. A small, open-source, command-line-and-library toolkit in pure Rust — squarely in the SoX/FFmpeg “workhorse” camp by form, but focused on restoration like RX by intent.
What makes cathar different
Three deliberate choices define it:
- Pure, self-contained, no dependencies on the usual giants. Most audio tools lean on big C/C++ libraries (often FFmpeg) under the hood. Cathar is written entirely in Rust and carries its own decoding, maths, and encoding — one build, one self-contained program, nothing to install alongside it.
- No black boxes. Every stage is plain, inspectable arithmetic — the exact methods this book describes. There are no trained neural-network weights making unexplainable decisions. If you don’t like a result, it’s a knob you can turn, with an understandable reason, rather than a model you have to re-roll and hope.
- One clear job per tool, scriptable. Like SoX, it’s built to be driven from the command line and dropped into automated pipelines — clean a thousand files the same way, reproducibly.
What that buys you — and what it costs
Be honest about both sides:
Where cathar holds its own. The settled-science tasks — loudness (LUFS /
EBU R128 / true-peak), resampling, de-hum (fixed or --adaptive), de-essing,
steady-state hiss reduction, RIAA/FM/CD de-emphasis, declick/declip, wow/flutter
and azimuth on analog transfers, HPSS separation, short-gap inpainting, and
batchable time/pitch edits — are well-defined problems with known classical
methods, and cathar implements many of them properly. For these, it’s genuinely
comparable to the big tools on moderate material, with the bonus of being
transparent and automatable. If your job is “batch-normalize 500 podcast episodes
to −16 LUFS, notch 60 Hz hum, and de-reverb dialogue with WPE,” cathar is the
right shape of tool.
Where the expensive tools pull ahead. The hard, perceptual tasks — heavy or
non-steady noise (a busy café behind a voice), film-grade de-reverberation on
impossible rooms, fabric rustle tangled in speech, badly clipped material — are
where machine learning has changed the game. iZotope RX’s learned models
separate sound from noise in ways no “subtract the haze” or “gate the tails”
rule can match. Cathar’s optional ml-denoise closes some of that gap on
speech, but RX-class models on the worst cases are still ahead. For professional
film, broadcast, and archival restoration of difficult material, RX is the
benchmark. Cathar’s classical (and selectively learned) methods give a real,
useful improvement on moderate problems; they are not a blanket substitute for a
trained model on every nightmare file.
A cheat-sheet for choosing
| If you need to… | Reach for |
|---|---|
| Clean difficult dialogue for film/broadcast | iZotope RX |
| Clean up a recording inside a project you’re already editing | your DAW or Audition |
| Quickly de-noise/de-click one file, for free, with a GUI | Audacity |
| Batch-convert, resample, or loudness-normalize many files | FFmpeg / SoX / cathar |
| Batch restoration (de-hum, de-noise, de-reverb/WPE, vinyl chain, inpaint, loudness) in a script or pipeline, transparently, in pure Rust | cathar |
| Understand, embed, or extend the actual DSP in your own program | cathar (it’s a library too) |
The real takeaway
The most valuable thing this book gives you isn’t a verdict on cathar — it’s that every one of these tools runs on the same handful of ideas. Analyse into pitches, modify, resynthesise. Subtract the haze. Notch the hum. Redraw the click. Predict the clipped peak. Gate the reverb tail. Measure loudness the way ears hear. Filter, don’t copy, when you resample. Keep the stereo channels agreeing.
Once those ideas are yours, no audio program is a black box anymore — including the ones that cost a fortune. You’ll open RX or Audacity or a DAW, see a panel of knobs, and know what they must be doing, because there are only so many honest ways to clean up a sound. That understanding outlasts any one tool.
Vinyl digitization — RIAA and elliptical mono
If you digitize a vinyl record with a USB turntable or a phono preamp into your
computer, the file you get is not flat, neutral audio. The groove was cut with
a deliberate tilt baked in — the RIAA curve — and the low end of a stereo LP
often carries rumble that is out of phase between the left and right
channels. Cathar’s riaa command fixes the first problem; optional elliptical
mono helps with the second.
Why vinyl sounds wrong without RIAA
Vinyl has a physical problem: low frequencies need wide groove wiggles, which eat up space and limit playing time. The recording industry agreed on a trick: boost the bass and cut the treble when cutting the master, so the groove stays narrow. Every home turntable and phono preamp is supposed to do the opposite on playback — cut the bass back down and restore the highs — so what you hear is flat again.
That playback correction is RIAA de-emphasis. If you skip it (or your capture chain already applied it and you apply it again), the result is obviously wrong: boomy bass, dull highs.
what was cut into the groove (pre-emphasis): bass UP, treble DOWN
what playback must do (de-emphasis): bass DOWN, treble UP ← cathar riaa
what you want at the end: flat, natural balance
cathar riaa recording.wav --out flat.wav applies the standard playback curve.
Cathar normalises so 1 kHz stays at reference level — the usual anchor point
for RIAA.
Already corrected? If your chain includes a phono stage that already applies RIAA, running
riaaagain will over-correct. Listen first: if it already sounds balanced, skip this step.
Elliptical mono — taming stereo rumble
On stereo LPs, very low frequencies (rumble, warp, groove noise) are often mostly out of phase between left and right — they pull the stylus sideways without carrying much musical stereo information. Elliptical mono sums only the low band to mono while leaving everything above a crossover frequency in full stereo.
below ~200 Hz: L and R lows → one shared mono low (rumble stops fighting the image)
above crossover: untouched stereo
For stereo files:
cathar riaa stereo_capture.wav --out flat.wav --elliptical 200
Mono files get RIAA only; elliptical needs two channels.
Where this sits in a vinyl chain
A typical cathar workflow after capture:
riaa— correct the playback curve (and optionally--elliptical).dewow— speed drift / pitch wobble if the turntable or belt isn’t steady (chapter 18).azimuth— align the right channel to the left if the stereo image sounds thin or smeared (chapter 18).declick— loud impulse pops and dust ticks (chapter 6).decrackle— dense surface crackle between the big pops (chapter 19).denoise/noiseprint— surface hiss (chapter 4).dehum— mains buzz if the turntable motor leaks 50/60 Hz (chapter 5).normalize— delivery loudness (chapter 10).
For outright drop-outs or mutes on a transfer, inpaint can fill short gaps
(chapter 19).
How the big tools do it
- Audacity has no built-in RIAA; users rely on the turntable’s phono stage or third-party EQ curves.
- iZotope RX and dedicated vinyl tools (e.g. open Vinyl Restoration Suite) bundle RIAA, declick, denoise, and sometimes wow/flutter in one GUI.
- Cathar keeps each stage separate and inspectable — one command per transform, scriptable and deterministic.
For archival work, RIAA is not optional maths; it’s the step that turns “raw groove data” into “music that sounds like the record you remember.”
Dequantization — grain from low bit depth
In chapter 1 we met bit depth — how finely each sample is written down. A 16-bit file has about 65,000 possible levels; an 8-bit file only 256. When audio is stored with too few levels, you do not always hear a clean tone plus silence; you hear a faint grain or zipper noise, especially on quiet passages or after heavy editing. Dequantization tries to relax that grain without pretending the lost information magically returns.
Where the grain comes from
Quantization happens whenever the continuous wave is rounded to the nearest allowed step:
- Old digital recorders (8-bit, 12-bit).
- Exporting to a lower bit depth without dither.
- Lossy codecs that leave a “stair-step” residue on decoded audio.
- Chains that repeatedly round the same file.
On a waveform, quiet music on a coarse grid looks like a signal stuck on tiny stairs instead of a smooth curve. On a spectrogram it can show up as a brittle, buzzy haze.
fine grid (24-bit): smooth curve ∿∿∿∿∿∿
coarse grid (8-bit): stair-steps ┌┐┌┐┌┐┌┐
What cathar does today
cathar dequantize assumes a source bit depth (--bits, default 16) and a
strength from 0 to 1. It uses neighbour prediction: each sample is nudged
toward what its neighbours suggest, but only within one quantisation step of its
current lattice position. The result is inspectable DSP — no neural model, no
hidden weights.
cathar dequantize grainy.wav --bits 16 --strength 0.7 --out smoother.wav
Strength 0 is a bypass. Higher strength corrects more aggressively; if it starts
to sound soft or wobbly, back off.
This is a foundation, not the last word. Research tools (e.g. Záviška et al., co-sparse methods for audio dequantization) go much further with iterative sparse recovery. Cathar may adopt those methods later; today’s command is the deterministic first step.
Dequantization vs other tools
| Tool | Problem | Approach |
|---|---|---|
dither (cathar dither) | Prevents new grain when reducing bit depth | Add tiny noise before rounding |
| dequantize | Reduces existing grain on already-quantized audio | Neighbour-guided relaxation on the lattice |
| denoise | Steady or random hiss | Spectral subtraction / learned masks |
| enhance | Missing high frequencies | Band replication or spectral extrapolation |
If the file is genuinely noisy (room tone, hiss), try denoise first. If it
sounds gritty on quiet lines but not broadly hissy, dequantize is the better
fit.
Honest limits
Dequantization cannot recover information that was never stored. A 8-bit recording will not become a 24-bit studio master. The goal is to make the grain less annoying, not to invent new detail. For the worst cases, re-capture or find a higher-quality source if one exists.
For delivery, prefer 24-bit FLAC or 32-bit float WAV after cleanup so you do not re-introduce grain at export.
Time and pitch — stretching without the chipmunk effect
Two of the most-wanted edits sound like they should be the same thing, but they’re opposites:
- Change the speed — make a recording play faster or slower.
- Change the pitch — make it higher or lower.
On a tape deck or a turntable they’re welded together: spin the reel faster and everything gets shorter and higher — the “chipmunk” effect. Digitally we can pull them apart. Cathar gives you three commands, and the difference between them is exactly which of those two things you hold still.
speed : faster → shorter AND higher (like a tape deck) cathar speed
tempo : faster → shorter, SAME pitch cathar tempo
pitch : higher → SAME length cathar pitch
Speed — the honest tape deck
cathar speed --factor 1.5 simply plays 1.5× faster: the file gets shorter and
the pitch rises, exactly like spinning a reel faster. Under the hood it’s just
resampling — read the samples at a different rate (see the resampling
chapter). It’s the right tool when you want the tape-deck behaviour, or to nudge
a recording that was captured at a slightly wrong speed.
Tempo — change the length, keep the pitch
This is the clever one. You want a podcast 10% shorter without everyone sounding like a chipmunk. The trick is granular overlap-add: chop the sound into short overlapping grains and lay them back down closer together (to speed up) or farther apart (to slow down). Do that naïvely and you get clicks and warbles at every join. The fix is to slide each grain a few milliseconds so its waveform lines up with the one before it — the joins become invisible. That method is called WSOLA (waveform-similarity overlap-add), and it’s Cathar’s default:
cathar tempo lecture.wav --factor 1.25 # 25% faster, voices unchanged
cathar tempo song.wav --factor 0.8 # 20% slower
For sustained, tonal material (strings, pads) there’s a second engine, the
phase vocoder, which works in the frequency domain and keeps long notes
smooth. Pick it with --mode pv; stick with the default wsola for speech and
anything percussive.
Pitch — change the note, keep the length
Pitch-shifting is tempo and speed working together. To raise the pitch a semitone without changing the length, Cathar:
- time-stretches the audio longer by the pitch ratio (pitch unchanged), then
- resamples it back down to the original length — which speeds it up, and that is what raises the pitch.
cathar pitch vocal.wav --semitones -2 # down a whole tone
cathar pitch vocal.wav --semitones 7 # up a fifth
A tone shifted up an octave (--semitones 12) comes out exactly twice the
frequency, in the same number of seconds.
When it sounds artificial
Time-stretching is never free. Push tempo or pitch past roughly ±20–30% and
you’ll start to hear it: a slight metallic “phasiness” on the phase vocoder, or a
faint fluttering on WSOLA. That’s the algorithm inventing information that was
never recorded. Small moves are transparent; big ones are an effect, not a
repair. Use the mode that suits the material, and reach for the smallest factor
that gets the job done.
Wow and flutter — when the pitch won’t sit still
Play an old cassette or a warped record and listen to a held note — a piano chord, a sustained vowel. It doesn’t sit still. It drifts and wavers, sagging flat and creeping sharp. That seasick wobble is wow and flutter, and it’s the signature flaw of anything with a spinning part.
- Wow is the slow drift — under a few times per second. A slightly eccentric record, a belt that’s stretched, a motor that surges.
- Flutter is the fast wobble — tens of times per second. A pinch roller with a flat spot, a bearing with grit in it.
Both come from the same cause: the medium didn’t move past the head at a constant speed. And because speed and pitch are welded together on analog gear (see the previous chapter), a speed wobble is a pitch wobble.
The key insight: everything wobbles together
Here’s what makes it fixable. A speed error doesn’t shift one note — it scales every frequency by the same amount at that instant. When the tape runs 1% fast, the whole recording is 1% sharp: the bass, the voice, the cymbals, all of it, together.
So if you can measure how the pitch of any one steady thing moves over time, you’ve measured the speed error for the entire recording.
ideal: a steady 440 Hz note ────────────────────────────
wowed: 440 → 448 → 435 → 443 → … (the note "breathes")
└─ that breathing IS the speed curve ─┘
How cathar dewow does it
cathar dewow warped-tape.wav
Cathar finds a strong, sustained tone in the recording and watches its instantaneous frequency — literally, how fast its waveform is turning, moment to moment. That traces out a speed curve: 1.0 where the tape ran true, 1.01 where it ran fast, 0.99 where it dragged.
Then it time-warps the audio to undo that curve — stretching the fast bits back out and squeezing the slow bits back in — so the note stops breathing and sits at a constant pitch. The overall length is preserved; only the wobble is removed.
The catch: Cathar needs something steady to lock onto. On a solo piano note or a
sustained vocal it works beautifully. On a dense, constantly-changing mix with no
stable pitch, there’s nothing to measure, and dewow sensibly leaves the audio
alone rather than guessing.
A cousin problem: channels out of step
Tape has a second timing flaw. If the playback head is tilted a hair — its azimuth is off — the left and right channels arrive slightly out of step, smearing the stereo image and thinning the sound when you sum to mono.
cathar azimuth measures the tiny delay between the two channels (by sliding one
against the other until they line up best) and nudges the right channel back into
alignment — down to a fraction of a sample.
The same trick aligns separate recordings of the same moment — two mics, or a
reference track — with cathar align --reference good-take.wav. When the takes
differ a lot in level or room sound, try --method gcc-phat (generalised
cross-correlation); the default time-domain correlation is fine on clean,
similar signals. Line up the takes first, and everything you do afterwards
(mixing, comparing, noise profiling) gets easier.
Pulling a sound apart — separation, modeling, and gap-filling
The tools so far mostly subtract a problem — hum, hiss, a click. This chapter is about three deeper moves: splitting a sound into layers, rebuilding it from a model, and filling in pieces that are missing entirely.
Harmonic vs. percussive — the HPSS split
Look at a spectrogram (the time × frequency picture from the “two views” chapter). Two kinds of things live there, and they look completely different:
- Tonal sounds — a held note, a hum, a vowel — draw horizontal lines. They sit at one pitch and last a while.
- Percussive sounds — a drum hit, a click, a consonant — draw vertical lines. They’re brief but splash across every frequency at once.
That visual difference is a handle you can grab. Run a filter along time and you keep the horizontal streaks (the tonal part). Run one along frequency and you keep the vertical streaks (the percussive part). That’s HPSS — harmonic / percussive source separation — and it needs no AI, just two median filters:
cathar hpss song.wav --harmonic tonal.wav --percussive hits.wav
The two outputs add back up to the original exactly. It’s a fast way to pull the drums out from under a melody, or to treat the “attack” of a recording separately from its “sustain”.
Rebuilding from a model — sinusoidal synthesis
Here’s a stronger idea: instead of filtering a sound, describe it and build a fresh one from the description.
Most musical, voiced sound is a stack of steady tones — partials. cathar sms
(sinusoidal modeling synthesis) finds the peaks in each moment’s spectrum, tracks
each one as it glides through time, and then re-synthesises the whole recording
from those tracked partials alone:
cathar sms noisy-flute.wav # keep the tones, drop everything else
Because hiss, breath, and crackle don’t form steady tracked partials, they simply aren’t rebuilt — they fall away. The result is a “tonal purify”: the musical skeleton of the sound, with the stochastic fuzz left behind. Push it and it sounds synthetic (it is synthetic — you rebuilt it); used gently it’s a striking way to isolate the pure tone from a noisy capture.
Filling holes — audio inpainting
Sometimes samples aren’t just damaged, they’re gone: a drop-out on a bad transfer, a splice in a tape, a mute where a CD skipped. There’s nothing to subtract — you have to invent the missing stretch so it can’t be heard.
The trick is the same one your ear uses to finish a sentence someone mumbled: predict from context. Cathar fits a short mathematical model to the audio on both sides of the hole — one that captures the local pitch and shape — and then solves for the samples that continue smoothly in from the left and out to the right at the same time:
cathar inpaint dropout.wav --start-ms 1240 --len-ms 8 # patch a known gap
cathar inpaint transfer.wav # auto-find & fill mutes
This is the classic Janssen / autoregressive method, and it’s genuinely good for short gaps — up to a few milliseconds. Ask it to invent a whole word and it can’t; the model only knows what the surrounding audio implies.
The dense cousin — de-crackle
Vinyl has a special kind of damage: not the occasional loud pop (that’s a job
for declick) but a constant field of tiny crackles, thousands of them, like
frying bacon under the music. cathar decrackle hunts for those little spikes —
each one a sample or two that jumps away from its neighbours — and smooths each
back into place, without touching the music around it:
cathar decrackle old-lp.wav --sensitivity 5
Between declick for the big pops, decrackle for the fine sizzle, and
inpaint for the outright holes, the whole spectrum of “missing or broken
samples” is covered.
Broadcast and CD playback de-emphasis
Vinyl has the RIAA curve (chapter 15). FM radio and early compact discs use different pre-emphasis schemes — treble boosted on record, treble cut on playback — and if you digitize the wrong side of that bargain, the file sounds dull (de-emphasis never applied) or harsh and thin (de-emphasis applied twice).
FM — 50 µs and 75 µs
FM broadcasters boost highs before transmission so hiss is less audible; your receiver cuts them back on playback. Archives of off-air FM captures, or files from tuners that output “flat” RF-discriminator audio, often still carry that treble tilt.
The time constant names the curve:
- 50 µs — common in Europe and much of the world.
- 75 µs — common in the Americas.
cathar deemphasis fm_capture.wav --curve fm50 --out flat.wav
cathar deemphasis us_fm.wav --curve fm75 --out flat.wav
Listen after one pass. If it gets brighter instead of more natural, you may have started from already-flat audio — don’t de-emphasize twice.
Early CD — 50/15 µs optional pre-emphasis
Most CDs you meet are flat — no pre-emphasis. A minority of early titles (roughly the Red Book optional pre-emphasis flag era) were mastered with a 50/15 µs emphasis curve. If a CD rip sounds oddly dull or muffled compared to a reference, this is one thing to check.
cathar deemphasis odd_cd.wav --curve cd --out flat.wav
RIAA vs deemphasis vs riaa
| Curve | Typical source | Cathar command |
|---|---|---|
| RIAA | Vinyl digitized without a phono stage | riaa |
| FM 50 / 75 µs | Off-air FM, some tuner captures | deemphasis --curve fm50 / fm75 |
| CD 50/15 µs | Rare pre-emphasized CD masters | deemphasis --curve cd |
riaa is vinyl-specific (and supports --elliptical for stereo rumble).
deemphasis is the broadcast/CD family. Pick the curve that matches how the
recording was emphasized before capture, then apply the matching playback
de-emphasis once.
How the big tools do it
- Audacity and most DAWs expose generic EQ; you can dial an FM de-emphasis shelf by hand, but there’s no one standard menu item.
- Dedicated archival tools sometimes bundle FM and tape NR curves alongside vinyl workflows.
- Cathar keeps each curve as a named, inspectable first-order filter — one command, one job, scriptable like everything else in the toolkit.
Glossary in plain language
Every term you met in this book, defined the way a friend would explain it.
Aliasing — The ghostly, gritty wrong-pitch tones you get when audio is converted to a lower sample rate without first removing the pitches that are too high for the new rate to hold. The audio version of wagon wheels spinning backwards in films.
Bit depth — How finely each single sample is written down (16-bit for CDs, 24-bit for studios). More bits = a quieter background fuzz floor.
Clipping — Distortion caused by a signal trying to go louder than the maximum the system can store, so its peaks get chopped flat. Sounds harsh and “broken.”
DAW (Digital Audio Workstation) — A full audio-editing program like Pro Tools, Logic, Ableton, Reaper, or Audition. The “Photoshop of sound.”
de- (prefix) — Just means “remove”: de-noise, de-hum, de-click.
Dequantization — Reducing the audible grain left when audio was stored with
too few discrete levels (low bit depth). Cathar’s dequantize uses neighbour
prediction on the quantisation lattice.
De-crackle — Suppressing dense, continuous micro-clicks (vinyl surface
fizz) rather than isolated pops. Cathar: decrackle.
Pre-emphasis / de-emphasis — Boosting highs on record and cutting them on
playback (or the reverse when correcting a capture). RIAA is the vinyl standard;
FM and early CD use other curves. Cathar: riaa, deemphasis.
DSP (Digital Signal Processing) — The umbrella term for doing maths on digital audio (or any signal) to change it: filtering, denoising, all of it.
EBU R128 — The European broadcast loudness standard built on BS.1770; the reason broadcast audio targets −23 LUFS.
Elliptical mono — On stereo vinyl captures, summing only the low frequencies
to mono while keeping highs in stereo — tames out-of-phase rumble without
collapsing the mix. Cathar: riaa --elliptical <Hz>.
FFT (Fast Fourier Transform) — The fast machine that takes a chunk of sound and reads off its “recipe” of pitches. The workhorse behind the frequency view.
Filter — A tool that turns some pitches up or down. A high-pass filter keeps the highs and blocks the lows; a low-pass does the reverse; a notch removes one narrow band.
Frequency — How fast the wave wiggles; what you hear as pitch. Measured in cycles per second, or hertz (Hz). 1,000 Hz = 1 kHz.
Harmonics — Faint copies of a tone at exact whole-number multiples of its pitch. Why hum “buzzes” instead of being a pure tone.
Hum — Low, steady tone leaking in from the electrical mains (50 or 60 cycles per second, plus harmonics).
LUFS — “Loudness Units relative to Full Scale.” The modern unit for perceived loudness — two files at the same LUFS sound equally loud. Targets: −23 broadcast, −16 podcast, −14 streaming.
Mono — A single channel of audio; plays equally from both speakers.
Noise / hiss — Steady, random background energy spread across the high frequencies — the shhhh behind a recording.
Noiseprint / noise profile — A measurement of the recipe of a recording’s background noise, learned from a quiet patch, so a denoiser knows exactly what to subtract.
Normalization — Setting a recording to a target level. Peak normalization aims at the tallest sample (crude); loudness (LUFS) normalization aims at how loud it actually sounds (correct for delivery).
Nyquist frequency — The highest pitch a given sample rate can hold: exactly half the sample rate. Go above it and you get aliasing.
Overlap-add — The careful blending technique that glues the processed short slices of audio back into one seamless waveform.
Phase correlation — A single number from −1 to +1 that says how much the
left and right channels agree at the same instant. Near +1 means mono-safe; near
−1 means they cancel when summed. Cathar: stats (Phase corr line).
Mid-side (M/S) — A way to rewrite stereo as a shared centre (mid) and a
difference (side). Scaling the side changes width without moving the centre.
Cathar: stereo --width, --ms / --from-ms.
Phase coherence — Keeping a stereo file’s two channels “agreeing” when you process them, so the stereo image stays stable instead of wandering.
Plosive — The low thump on “p” and “b” sounds when a puff of breath hits the mic.
Quantization — Rounding each sample to the nearest allowed level on a fixed grid (determined by bit depth). Too coarse a grid leaves audible grain.
Resampling — Converting audio from one sample rate to another (e.g. 48,000 → 44,100). Done well, it’s a smart filter, not a copy.
Reverb — The trail of fading echoes a room adds as sound bounces off its surfaces. Makes recordings sound “roomy” or “boxy.”
RIAA curve — The standard EQ applied when cutting and playing back vinyl: bass
cut and treble boost on playback (de-emphasis) so the groove stays narrow but
the listener hears flat audio. Cathar: riaa.
Wow & flutter — Pitch wobble from unstable analog playback speed (warped
disc, stretched tape). Cathar: dewow.
Azimuth — Stereo playback head tilt that puts the left and right channels
slightly out of step. Cathar: azimuth.
WPE (Weighted Prediction Error) — A blind de-reverb method that predicts late
spectral frames from earlier ones per frequency bin and subtracts the prediction.
Cathar: dereverb --wpe.
HPSS — Harmonic / percussive source separation via median filtering on a
spectrogram. Cathar: hpss.
Inpainting — Reconstructing a short gap of missing audio by predicting from
samples on both sides. Cathar: inpaint.
Rustle — Scratchy mid-range noise from clothing brushing a clip-on (lavalier) microphone.
Sample — One single measurement of the wave’s height. Audio is a long list of these.
Sample rate — How many samples are taken per second (44,100 for CD, 48,000 for video/pro). Higher = can capture higher pitches.
Sibilance — Over-loud, piercing “s,” “sh,” and “ch” sounds; removed by de-essing.
Spectral subtraction — The core denoising method: measure the background haze at each pitch and subtract that amount.
Spectrogram — A heat-map picture of sound: time left-to-right, pitch bottom-to-top, brightness = how much of each pitch is present. Where most restoration tools “see.”
Stereo — Two channels (left and right) whose difference creates a sense of width and placement.
STFT (Short-Time Fourier Transform) — Taking an FFT of many short, overlapping slices in a row, to track how a sound’s pitches change over time. The engine behind the spectrogram.
Threshold — A “how much counts” cutoff: how loud a spike must be to count as a click, or how loud sibilance must get before a de-esser reacts.
True peak (inter-sample peak) — A hidden overshoot in the smooth curve drawn between samples on playback, which can distort even when no stored sample looked too loud. Why loudness tools keep a true-peak safety ceiling (e.g. −1 dBTP).
Waveform — The wiggly line of the wave’s height over time. Great for seeing how loud, poor for seeing what’s in it.
Wiener filter — A gentler denoising method: instead of subtracting the haze, scale each pitch by how likely it is to be real sound versus noise.
Window (Hann window) — The gentle taper applied to each short slice of audio before its FFT, so the slices blend together without clicks at the seams.