WaxOn/WaxOff

Podcast audio prep for macOS. From raw recording to finished delivery in two modes, one app.

WaxOn prepares raw recordings for editing. WaxOff finalizes your edited mix for distribution. Both share the same drag-and-drop workflow, waveform viewer, and file stats panel.

Getting Started

System Requirements

Installation

  1. Download the DMG from the link above
  2. Open the DMG and drag WaxOn/WaxOff to your Applications folder
  3. Before launching, open Terminal and run:
xattr -cr /Applications/WaxOnWaxOff.app
Why is this necessary? WaxOn/WaxOff is not notarized with Apple. Without clearing the quarantine attribute, macOS Gatekeeper will refuse to open it. The xattr -cr command removes the quarantine flag. It does not disable any macOS security features.

First Launch: Mode Picker

On first launch (and any time you click the active mode button in the toolbar), a compact mode picker appears. Choose WaxOn to prepare raw recordings, or WaxOff to finalize a mix. Each mode maintains its own independent file list; switching modes doesn't disturb your work in the other mode.

The Interface

Both modes share the same window layout, divided into four areas.

Toolbar

The top bar contains the mode switcher (WaxOn | WaxOff) on the left, followed by a Preset picker, and then the action buttons. Clicking the active mode button returns to the mode picker.

File List

The left panel shows all loaded files. Each row displays the filename and a status label. Drag rows to reorder; drag the vertical divider to resize the panel.

Files with a high estimated noise floor show a ⚠️ warning badge next to the filename. Hover over the badge for detail.

WaxOn processes up to 3 files concurrently. Files waiting their turn show a muted static progress bar so it's clear they are queued and not stalled.

Select files and press Delete to remove them, or use ⌘⌥Delete to clear the entire list.

Waveform Panel

The right panel shows different content depending on context:

A toggle button in the top-right corner switches between the waveform view and the Console, a scrollable log showing what WaxOn is doing during processing. A Verbose checkbox reveals additional detail such as filter parameters and per-file loudnorm measurements.

Settings Sidebar

A collapsible panel on the right edge of the window contains all processing settings for the current mode. Toggle it open or closed with the button at the far right of the toolbar. Settings persist between sessions.

WaxOn Mode WaxOn

WaxOn prepares raw podcast recordings for editing in a DAW. It handles high-pass filtering, optional noise reduction, loudness normalization, phase rotation, and brick-wall limiting, outputting 24-bit WAV files ready to drop into Logic Pro, Reaper, or any other editor.

WaxOn is a first-step ingest processor: get your raw recordings into a consistent, workable format before editing. It does not do de-essing, spectral repair, or multiband restoration. For recordings with serious noise problems, dedicated tools like iZotope RX are the right choice; WaxOn's built-in noise reduction handles light to moderate steady-state background noise.

Quick Start

  1. Click WaxOn in the toolbar (or choose it from the mode picker)
  2. Select a preset from the Preset menu in the toolbar, or configure settings manually in the Settings sidebar
  3. Drag your audio files onto the window
  4. Click Process, or select 2+ files and click Mix to combine them

WaxOn Presets WaxOn

Presets save and restore a complete group of WaxOn settings in one click. The Preset menu is in the toolbar, to the right of the mode switcher.

Built-In Presets

Preset HPF Loudness Norm Target Output Sample Rate
Defaults 80 Hz Off Mono L 44.1 kHz
Edit Prep 80 Hz On −30 LUFS Mono L 44.1 kHz
Edit Prep EBU 80 Hz On −23 LUFS Mono L 44.1 kHz
Mix 2 Channel 20 Hz (DC Block) On −24 LUFS Stereo 44.1 kHz
Mix Mono 20 Hz (DC Block) On −24 LUFS Mono L 44.1 kHz

Defaults resets all WaxOn settings to factory values. A quick way to start fresh.

Edit Prep is optimized for single-mic podcast recordings destined for DAW editing. −30 LUFS leaves generous headroom for editing and processing.

Edit Prep EBU targets the EBU R128 dialogue reference level of −23 LUFS. Tracks feel natural at calibrated monitor levels and still leave headroom before typical delivery targets.

Mix 2 Channel and Mix Mono are both configured for multi-track blending: DC Block removes only infrasonic content and DC offset (not voice frequencies), and loudness normalization ensures all files arrive at the mix at equal perceived loudness. Use 2 Channel when you want a stereo blend; use Mono when the output is a single podcast track destined for per-track DAW editing.

Custom Presets

Configure your settings, then open the Preset menu and choose Save Current Settings…. Give the preset a name and it will persist across relaunches. Delete custom presets from the same menu.

WaxOn Settings WaxOn

Setting Range / Options Description
Sample Rate 44.1 kHz · 48 kHz Output sample rate. 48 kHz for video projects; 44.1 kHz for audio-only. Uses FFmpeg's high-quality resampler.
Output Mono · Stereo Stereo passes both channels through unchanged. Mono extracts a single channel from a stereo source.
Channel Left · Right Mono mode only. Which channel to extract. Use Left for a standard single-mic recording on channel 1. Grayed out when Output is Stereo.
Ceiling −1.0 to −3.0 dB True peak ceiling for the brick-wall limiter. −1.0 dB is a safe default for most delivery formats.
High Pass 20–90 Hz · default 80 Hz High-pass filter cutoff. 80 Hz removes most rumble and handling noise without thinning the voice. Lower for sources with significant bass content.
Noise Reduction On · Off · default Off Applies RNNoise, a recurrent neural network trained on mono speech, before the high-pass filter. Suppresses consistent background noise (HVAC, room tone, hum) with minimal voice coloration. For stereo output, channels are split and denoised independently to ensure balanced processing. Check output before editing; artifacts are possible on heavy noise. See Theory of Operation for technical detail.
Loudness Norm On · Off Enables two-pass EBU R128 loudness normalization. When NR is off, the analysis pass applies noise reduction internally to prevent broadband noise from skewing the measurement; the output itself is not affected. Off = filtering and limiting only.
Target −16 to −35 LUFS · default −30 Integrated loudness target when Loudness Norm is on. −30 LUFS is conservative for ingest and leaves plenty of headroom for editing. Grayed out when Loudness Norm is off.
Output Dir Path or empty Where output files are written. Empty = same folder as the source. Set a path to collect all outputs in one place.

WaxOn Processing Pipeline WaxOn

Every file passes through an FFmpeg processing chain. Three stages by default, four when Noise Reduction is enabled.

  1. Noise Reduction Optional When enabled, RNNoise (arnndn) runs first on the raw signal before any other processing. A recurrent neural network trained on speech suppresses consistent background noise (HVAC hum, room tone, light broadband noise) with minimal effect on voice. For stereo output, each channel is split and denoised independently before rejoining — RNNoise is a mono model and requires per-channel processing for balanced stereo results. Runs before the high-pass filter so the network sees the unaltered signal. See Theory of Operation for technical detail.
  2. Filter, Channel & Resample High-pass filter at the configured cutoff, a 200 Hz allpass for phase rotation (reduces peak asymmetry and improves limiter headroom), channel selection if Mono output is selected, and resampling to the target rate. Output at this stage: 32-bit float WAV at the target sample rate.
  3. Loudness Normalization Optional Two-pass EBU R128. First pass measures integrated loudness, true peak, LRA, and threshold. Second pass applies linear gain to hit the configured target. Linear mode preserves the natural dynamic shape of the recording: no compression, no transient changes. When Noise Reduction is off, the analysis pass runs RNNoise on a temporary copy for measurement accuracy; the output pipeline is unaffected. See NR-for-Measurement in the Theory of Operation.
  4. Brick-Wall Limiting The signal is upsampled to 2× the target rate, passed through FFmpeg's alimiter with a 5 ms attack and 50 ms release, then resampled back and written as 24-bit WAV. Running at 2× makes inter-sample peaks visible to the limiter, preventing true peak violations in the final file.

Mix Pipeline

When Loudness Norm is on, Mix adds two stages before the chain above. When off, only the amix stage is added.

The waveform panel shows a live phase indicator during a mix: Leveling file 1 of N… → … → Mixing N files… → Filtering… → Analyzing loudness… → Normalizing… → Limiting…

Output Format

All WaxOn outputs are 24-bit WAV, regardless of input format. Lossless, uncompressed, and compatible with every DAW.

Mix Mode WaxOn

Mix combines two or more audio files into a single processed output. When Loudness Norm is on, each file is individually leveled to the target LUFS before mixing, ensuring a balanced blend regardless of source levels. The full WaxOn pipeline then runs on the combined signal.

Two Common Workflows

Mix raw recordings in one step. Drag two unprocessed tracks (e.g. host and guest recorded separately) into WaxOn, select both, and click Mix. The high-pass filter cleans up low-frequency buildup from the individual recordings before they are blended. Use the default High Pass setting (80 Hz) or adjust to taste.

Mix pre-cleaned files. If you have already processed your individual tracks through WaxOn (or cleaned them in a DAW), you can mix the outputs directly. In this case the high-pass filter has already done its work. Set High Pass to DC Block (20 Hz) in Settings; it will remove only DC offset and infrasonic content without touching the voice range.

How to Mix

  1. Load your files and select two or more in the file list (⌘-click to multi-select)
  2. Click Mix
  3. Watch the waveform panel for live progress
  4. When complete, the mixed file appears in the list as a processed item
Note: Mix runs a single job and cannot run concurrently with Process. The Mix button is disabled while processing is in progress.

WaxOn Output Files WaxOn

Individual Files

{original-name}-{rate}waxon-{limit}.wav

Examples: episode-01-44kwaxon-1dB.wav   guest-48kwaxon-1dB.wav

Mix Output

mix-{rate}waxon-{limit}.wav

Example: mix-44kwaxon-1dB.wav

Location

By default, output files are written alongside the source file. If a custom output directory is configured, all files go there. If neither location is writable, WaxOn falls back to ~/Music/WaxOnWaxOff/. Existing files with the same name are overwritten.

WaxOff Mode WaxOff

WaxOff finalizes your edited podcast mix for distribution. It applies EBU R128 loudness normalization, optional phase rotation, and delivers 24-bit WAV, MP3, or both, ready to upload to your podcast host.

WaxOff assumes your mix is already balanced and edited. It applies a single linear gain adjustment to hit the target loudness: no dynamic processing, no changes to stereo image or transients. If your mix sounds right, WaxOff just makes it loud enough and packages it for delivery.

Quick Start

  1. Click WaxOff in the toolbar
  2. Select a preset from the Preset menu in the toolbar, or dial in your settings manually
  3. Drag your finished mix file onto the window
  4. Click Process

WaxOff Presets WaxOff

Presets save and restore a complete group of WaxOff settings in one click. The Preset menu is in the toolbar, to the right of the mode switcher.

Built-In Presets

Preset Target True Peak Output MP3 Sample Rate
Podcast Standard −18 LUFS −1.0 dBTP WAV + MP3 160 kbps 44.1 kHz
Podcast Loud −16 LUFS −1.0 dBTP WAV + MP3 160 kbps 44.1 kHz
WAV Only (Mastering) −18 LUFS −1.0 dBTP WAV only 48 kHz

Podcast Standard is correct for most podcast hosting platforms (Spotify, Apple Podcasts, Buzzsprout, etc.).

Podcast Loud targets −16 LUFS for a louder perceived result, still within typical platform limits. Use this if your finished episodes consistently feel quiet on shuffle.

WAV Only (Mastering) outputs a 48 kHz WAV with no MP3. Use when handing off to a mastering engineer or delivering to a video platform.

Custom Presets

Configure your settings, then open the Preset menu and choose Save Current Settings…. Give the preset a name and it will persist across relaunches. Delete custom presets from the same menu.

WaxOff Settings WaxOff

Setting Range / Options Description
Sample Rate 44.1 kHz · 48 kHz Output sample rate for the WAV. 44.1 kHz for podcast delivery; 48 kHz for video or mastering handoff. MP3 output is always encoded at 44.1 kHz regardless of this setting.
Output WAV · MP3 · Both WAV is always 24-bit PCM. MP3 is CBR at the chosen bitrate. Both produces two output files.
MP3 Bitrate 128 · 160 · 192 kbps CBR bitrate for MP3 output. 160 kbps is a good default for podcast delivery. Grayed out when Output is WAV only.
True Peak −3.0 to −0.1 dBTP · default −1.0 Maximum true peak ceiling. −1.0 dBTP is the standard for podcast streaming platforms and prevents inter-sample clipping on compressed streams.
Target LUFS −24 to −14 LUFS · default −18 Integrated loudness target. −18 LUFS is the podcast standard used by most hosting platforms. −16 LUFS gives a louder result.
Phase Rotation On · Off · default On Applies a 150 Hz all-pass filter before normalization. Reduces crest factor on bass-heavy material, improving headroom and limiter performance. On by default.
Output Dir Path or empty Where output files are saved. Empty = same folder as the source.

WaxOff Processing Pipeline WaxOff

WaxOff uses FFmpeg's loudnorm filter in a two-pass pipeline, the only correct way to apply EBU R128 linear normalization.

  1. Analysis Pass FFmpeg's loudnorm filter measures integrated loudness (I), true peak (TP), and loudness range (LRA) for the entire file. If Phase Rotation is enabled, a 150 Hz allpass is applied before measurement so the rotation is accounted for in the measured values. The measured values feed the next pass.
  2. Normalization Pass The same filter chain runs again with linear=true and the measured values from pass 1 injected. This applies a single precise linear gain: no limiting, no dynamic processing, no change to stereo image or transients. Output: 24-bit WAV at the target sample rate.
  3. MP3 Encoding Optional If Output is MP3 or Both, the normalized WAV is encoded using libmp3lame at the chosen CBR bitrate. A pre-encode brick-wall limiter at −2 dBTP prevents inter-sample peak violations after MP3 decode. MP3 is always encoded at 44.1 kHz regardless of the sample rate setting. The WAV is always written first; MP3 is derived from it.

The waveform panel shows live phase labels while processing: Analyzing loudness… → Normalizing… → Encoding MP3…

Why Two Passes?

EBU R128 loudness measurement requires the entire file to compute integrated loudness (gated measurement over the full duration). You can't know the correct gain until you've read every sample, so two passes are unavoidable for accurate normalization. WaxOff makes this transparent: drop the file, click Process, and both passes happen automatically.

WaxOff Output Files WaxOff

Naming

{original-name}-lev-{target}LUFS.wav
{original-name}-lev-{target}LUFS.mp3

Examples: episode-42-final-lev--18LUFS.wav   episode-42-final-lev--18LUFS.mp3

Location

Output files are written alongside the source by default, or to your configured output directory. Existing files with the same name are overwritten.

File Stats

Selecting a file in either mode displays a stats strip below the waveform. Stats are computed asynchronously as files load and typically appear within a second or two of dropping a file in.

The strip has two rows separated by a divider: file info on top, audio analysis below.

File Info Row

FORMAT
Container format: WAV, MP3, FLAC, etc.
SR
Sample rate: 44.1 kHz, 48 kHz, etc.
CH
Channel layout: Stereo or Mono
BIT
Bit depth: 16-bit, 24-bit, 32-bit. Not shown for lossy formats.
DUR
Duration in M:SS or H:MM:SS
BR
Bit rate derived from file size and duration (Mbps or kbps)

Audio Stats Row

RMS
Root Mean Square level in dBFS. Represents average loudness over the entire file.
PEAK
Sample peak level in dBFS. The highest sample value across all channels. Color-coded: orange at −3 dBFS and above, red at 0 dBFS.
CREST
Crest factor (PEAK − RMS) in dB. Indicates dynamic range. Higher values mean more headroom between peaks and average level.
LUFS
Integrated loudness per ITU-R BS.1770-4. The broadcast and streaming standard. Computed with K-weighting and two-stage gating (absolute −70 LUFS, relative −10 LU).
FLOOR
Estimated noise floor in dBFS. The 10th percentile of per-block RMS values, representing the quietest sections of the file (room tone, background noise). Color-coded: orange above −50 dBFS (may affect loudness accuracy), red above −40 dBFS (likely affecting measurements). Only shown when enough audio blocks are available to estimate.
LUFS vs. RMS Both measure loudness, but LUFS is perceptually weighted and gated. Silence doesn't drag the number down, and high-frequency content is weighted more like human hearing. For comparing files intended for broadcast or streaming, LUFS is the more meaningful number.
Noise Floor Warning Files with a high estimated noise floor show a ⚠️ badge next to the filename in the file list. A high noise floor can inflate integrated loudness measurements, causing loudness normalization to underestimate the gain needed for the speech content. When Loudness Norm is enabled, WaxOn automatically uses noise reduction for the measurement pass to mitigate this. If the badge appears and NR is off, consider enabling Noise Reduction for the best results.

Supported Formats

WAV, AIFF, AIF, MP3, FLAC, M4A, OGG, Opus, CAF, WMA, AAC, MP4, MOV.

MP4 and MOV are video containers; WaxOn/WaxOff extracts the audio track and processes it normally. All processing uses FFmpeg, bundled inside the app. No separate installation required. Unsupported file types are silently rejected; a notice appears if any files in a drop were skipped.

Tips & Workflow

The Full Podcast Workflow

  1. Record host and guest on separate tracks
  2. Drop both files into WaxOn
  3. Select both and click Mix to produce a single blended track, or process them separately and combine in your DAW
  4. Edit in your DAW: remove noise, add music, cut and arrange
  5. Export your finished mix from the DAW
  6. Drop the export into WaxOff and click Process
  7. Upload the WaxOff output to your podcast host

Checking Levels Before Processing

Select a file and read the stats strip before hitting Process. The LUFS value tells you how loud the file is. In WaxOn, if LUFS is much lower than your target, normalization will apply significant gain, which is fine for ingest but worth knowing. In WaxOff, comparing input LUFS to your target tells you how much gain WaxOff will apply.

Reading the Noise Floor

The FLOOR stat estimates the background noise level. Below −60 dBFS is typically a clean recording. Between −60 and −50 dBFS the noise may be audible but is unlikely to affect processing. Above −50 dBFS (orange) the noise floor is high enough to skew loudness measurements, and above −40 dBFS (red) it will almost certainly affect results. At those levels, enabling Noise Reduction is recommended.

WaxOn: Loudnorm On or Off?

For consistent batch ingest where files were recorded at different gain levels, turn Loudness Norm on. It ensures every file lands at the same integrated loudness before the limiter. For a single file or when you want to preserve the original level relationship between takes, leave it off and let the limiter handle ceiling compliance only.

WaxOff: Choosing a LUFS Target

−18 LUFS is the standard for most podcast platforms. −16 LUFS gives a louder result but is still within typical platform limits. Going higher than −14 LUFS risks clipping or rejection by some platforms. When in doubt, use the Podcast Standard preset.

WaxOn: Mono vs. Stereo for Podcasts

Most podcast editing workflows prefer mono tracks per speaker, which are easier to pan, balance, and process individually. Use Mono / Left for a standard single-mic recording on channel 1. If your interface captures both mics on a single stereo file, use Mix to blend them before editing.

WaxOff: Phase Rotation

Leave Phase Rotation on unless you have a specific reason to turn it off. The 150 Hz allpass filter reduces the crest factor of bass-heavy material, giving the loudness normalizer and limiter more headroom. The effect on audio character is inaudible.


WaxOn/WaxOff is free software licensed under the GPL-3.0. Built by Seven Morris with AI collaboration.