On-device voice denoise.
A real music player.

ARP denoises recordings you import — interviews, lectures, live takes, and voice memos shared into Files. It also plays your library with a 10-band EQ. On iPhone, iPad, and Apple Watch. Processing never leaves the device. Premium is a one-time purchase. Mac is coming.

Download on the App Store

RNNoise + 10-band EQ. On your devices.

ARP denoises interviews, lectures, live recordings, and voice memos (share the memo into Files first — there is no Voice Memos picker). RNNoise separates hiss from speech; DSP shapes the result. Intensity + 10-band playback EQ are yours to tune. Apple Watch is a playback remote. It does not process audio.

iPhoneiPadWatch
Try it on a noisy recording

Import, denoise, compare, export.

Import from the Files app (including iCloud Drive) or your on-device Music library. Voice Memos: share the recording into Files, then import. The library stays on that device. Metrics: SNR, dynamic range, peak, noise floor — original vs enhanced. Export M4A free, or 24-bit WAV/AIFF with Premium.

SNRDYNAMIC RANGEPEAKNOISE FLOOR
See how it works

Two recordings. Hear what changed, and what didn't.

Tap BEFORE for the original, AFTER (ARP) for the on-device result — then tap the bars to play. Clean music skips RNNoise; it still gets playback EQ and loudness match. Voice gets denoise + clarity. Metrics are measured from the real demo files.

REAL FILESREAL METRICSON-DEVICE

Music — denoise skipped, EQ + loudness still run

ARP does not run RNNoise on clean music. Playback EQ and loudness match still apply so level sits with the rest of your library. It does not “restore” compressed rips.

Tap the bars to play · seek

SourceAfter ARPΔ

Source — Sax & Piano (Maarten Schellekens, Free Music Archive, CC0 1.0).

Voice memo — denoise + clarity applied

Outdoor recording with ambient hiss. RNNoise + expander + loudness match clean it up — the metrics below show what changed.

Tap the bars to play · seek

SourceAfter ARPΔ

Source — your own recording, made on an Auckland bus stop.

Your audio never leaves your device.

All processing is on-device. No cloud, no telemetry, no account. Premium is a one-time purchase through Apple's App Store — we never see your data, your audio, or your activity. Delete the app and your library is gone. That's the point.

NO CLOUDNO ACCOUNTNO TELEMETRY
Download on the App Store
ARP iPhone app — on-device audio processing

How ARP measures results.

Three numbers you see in the app, and what they actually mean.

LUFS (Loudness, ITU-R BS.1770-4)
Perceived loudness in dB, integrated across the file. The number on the enhancement-complete screen is the integrated LUFS of YOUR file. The enhancement chain uses an internal copy of the same BS.1770 algorithm (compiled from ARPCore/Audio/Loudness.swift) and matches the after-clip to the before-clip on this scale, capped so the true peak doesn't exceed −1 dBTP. That's why the loudness numbers before and after are within ~1 LU of each other on the same file.
Centroid (Hz, "brightness")
Amplitude-weighted mean frequency of the spectrum, in hertz. Higher = the sound has more energy above midrange; lower = more energy in the bass. The differentiator (high-shelf band limit) shifts this slightly upward on some files because the chain boosts high content. On music, post-Phase-2 the shift is small (~100 Hz on the bundled demo). On voice, RNNoise + the differentiator can move it a few hundred Hz upward — that's the chain making the voice clearer, not brighter.
Silent-gap noise (dBFS)
Background noise estimated from genuinely silent portions of the file — pauses in speech, the seconds between tracks. Frames longer than 100 ms and quieter than −50 dBFS qualify; their RMS becomes the noise-floor reading. The reading is the noise BEFORE the chain on the "Source" side and the noise AFTER the chain on the "After ARP" side. If the reading goes DOWN after, the chain removed hiss from real silences. (If it goes UP, an old pattern called "floor-change artifact" fires and is flagged in the verdict — that's the chain's own dynamics changing how silence is detected.)

Why music shows little change.

By design. The chain skips RNNoise (a speech model) and the expander for classified music — a CD rip or download is not “restored.” Playback EQ and loudness match still run. If Source and After ARP look close, that is the chain declining to denoise music, not a no-op of the whole engine.

Why voice shows the biggest changes.

Voice memos (imported via Files), lectures, interviews, and live recordings are what RNNoise was trained on. The chain separates speech from hiss, room, traffic, HVAC, then expander + limiter + loudness match. The “after” file is RNNoise + DSP on-device, not a cloud model.

Where the numbers come from.

Produced by Scripts/demo-cli in the open-source repo (any contributor can build and re-run on the same files). The script compiles against ARPCore/Audio/Loudness.swift, ARPCore/Audio/AudioMetrics.swift, and TestSupport/SpectralAnalysis.swift — the same files the in-app path uses. The hand-typed "+40% peak" copy that earlier versions of this site showed has been removed; current numbers are script-generated and reproducible.