Light studio • Navy wells • iOS 17+

Will it sound good
when you post it?

AuraLinter is a recording-quality coach for creators. Record or import a clip, get evidence-backed verdicts on intelligibility, clipping, noise, room echo and loudness — then hear and export a supported cleanup. Room echo is measured, not removed. Light lab design, dark wells where focus matters, luminous ribbons quoting the app icon.

Paper-white hairline borders soft navy shadows wells are #0B1026

From mic to evidence to fix

A light lab first. Dark navy wells only where the eye needs focus — record hero, waveform panels, A/B strip, and live log. Static aurora, zero wallpaper motion.

Capture Mic • File • Photos
Intent chips
Measure Evidence waveform
cant_tell when unsure
Fix & Export A/B hold • MP4/M4A/WAV
loudness normalized

Light lab, honest evidence

Every surface is paper-white with a hairline #DBE2EF and soft navy shadow. The icon's luminous ribbons appear only as accents — chips, waveforms, borders — and deep navy #0B1026 is reserved for focus wells.

Recording Quality Coach

Intent chips — Video, Podcast, Voice — tune thresholds. Record hero is a dark well quoting the icon: three drifting ribbons on navy. Import shows an explicit preflight when stereo/multichannel or >10 min — original untouched. Every finding has a measured value, confidence, and actionable fix.

Evidence, not vanity scores

Framewise envelope with silence shaded wellMuted, clipping as coral triangles. cant_tell when model lacks confidence — honest, never fake metrics. Every mark corresponds to a real measurement.

A/B Preview & Studio Well Export

Dark A/B strip inside the light page — original vs corrected with hold-to-hear. Export paths: Video MP4 re-mux, Audio M4A, WAV, all loudness-normalized to target. Original video never overwritten.

Measured DSP + AI Mastering

Fix & Enhance combines GPU speech repair with a mastering chain planned from measured evidence. Ask grounds its answers in a DSP knowledge base and labels an answer as general knowledge when no passage matches. Processing shows the real local envelope with a cyan scanline — never fake peaks.

Light first, wells with purpose

Onboarding is dark — the icon came alive. Home is paper-white. Waveform panels, record hero, A/B strip, and live log are deliberate navy insets using wellInk/wellMuted, never studioInk.

Onboarding — hear the recording and its improved A/B

Splash & Onboarding

Degraded → clean waveform resolves in navy well — before/after in first 5 seconds. Three pages: check, verdict, fix.

studioWelltimelinewellInk
Check idle — ready to record or import

Check • Light Lab

Hero record well with ribbons listening. Intent grid, import row, reference chip. All cards: white, hairline, soft shadow.

studioSurfacechipFillrecordWell
Processing — measured waveform while the check runs

Processing Well

Muted envelope pre-measurement, cyan scanline sweeps. Live log streams: measure_gate, measure_eq, compressor. No spinner — waveform as work.

scanlinewellbrightCyan
Results — verdict and measured findings

Results • Evidence

Verdict bar, evidence waveform with silence shading, clipping triangles. Cards use verdict colors dark-tier: AA on white.

verdictGoodbrightCoralevidence
Editor — Original and Improved A/B with measured changes

Editor & Export

Dark A/B strip inside light page toggles original vs corrected. Loudness normalization to target. Honesty line about mono analysis.

ABloudnessexport
Projects — saved recordings and results

Projects

SwiftData persistence, durable audio in Application Support. Reopen any past check, resume editor exactly where left.

SwiftDatahistoryresume
Ask — evidence-backed guidance about a recording

Ask • Grounded DSP Q&A

Ask a recording or DSP question. When the production knowledge base has relevant passages, the answer is grounded in them; otherwise it is labeled as general knowledge.

DSPRAGgrounded
Account — on-device profile, studio activity, and Pro status

Account & Studio

An optional on-device profile, local studio activity, and clear Free or Pro status. Your name and photo stay on this device.

privatehistoryPro

Built for creators who care about intelligibility

TikTok, podcast, voice notes — if it needs to sound clear before you post, check here first.

Creator

  • Know if speech will survive compression
  • See exactly where clipping hits
  • Fix loudness to platform target
  • Export video MP4 without re-rendering

Audio Engineer

  • Evidence waveform, not scores
  • Silence intervals and speech coverage
  • Loudness chain transparent
  • Ask grounded DSP questions

Learner

  • Learn by seeing real measurements
  • Cant_tell teaches where AI is unsure
  • Answers say whether they draw on the corpus or general knowledge
  • See the measured evidence behind an answer

Light lab implementation

Forced .preferredColorScheme(.light) everywhere except deliberate wells. Tokens match Theme.swift exactly.

ChromestudioBg #F6F8FC • studioSurface #FFFFFF • studioLine #DBE2EF • shadow #10204A 05%
WellsstudioWell #0B1026 • wellInk #EEF2FB • wellMuted #9AA7C7 • wellLine #26304C — record hero, waveform, A/B, processing log, splash
BrandappAccent #05617A 7:1 on white • appPrimaryAccent #2E64D8 • accentInk #05152B 13:1 on bright
Bright fillsbrightCyan #4FD9F0 • brightAzure #4A8DF0 • brightViolet #C48CF5 • brightMagenta #E873D9 • gold #F2DA6B — gradients, well marks
EvidenceEvidenceWaveformView: bucketed RMS −60…0 dBFS, silence shading, coral triangles capped at 12, wellMuted for unvoiced
ProcessingScanlineWaveformView: local envelope via WaveformAnalyzer 110 samples, sweep 2.8s linear, muted pre-measurement palette
Ribbon heroRibbonWaveBackdrop: 3 sine ribbons 0.40/0.56/0.72 baseY, 1.15/0.78/1.5 wavelength, energized 1.9× speed on record
BackendFastAPI + LangGraph StateGraph • Postgres checkpointer • Bedrock us.anthropic.* inference profiles • pool liveness
Vectorpgvector HNSW + ts_rank • RRF merge • Voyage 1024-dim
FrontendSwiftUI iOS 17+ • forced light • GlassCard white hairline • AuroraBackground static radial

FAQ — light lab & honesty

Real answers about measuring, not inventing.

The app icon's field is deep navy #060C26 with luminous ribbons. Making the whole app dark hid the ribbons — everything glowed, nothing focused. The app now forces light chrome; the icon's navy appears only as deliberate studio wells where attention matters: splash, record hero, waveform panels, A/B strip, and live log. Well text uses wellInk #EEF2FB, never studioInk.
Framewise RMS envelope bucketed into 110 bars (−60 dBFS → 0 dBFS). Silence intervals shade down with wellMuted opacity, clipping events are coral line + triangle capped at 12 so badly clipped files don't turn fully coral. Every mark traces to a real measurement in the payload; nothing decorative.
Yes for analysis. Clips upload to auralinter.fly.dev, staged as temp files (~30 min sync, up to ~4h staged jobs; a finished episode enhancement stays up to ~24h so the app can download it), then analyzed. Saved projects stay in app's private container until you delete. See Privacy Policy for full flow including RAG, Bedrock, Modal GPU.
Preflight asks explicitly — never a silent truncation or downmix. An audio-only recording over the sync cap can run a full episode check up to 60 minutes (Pro) or check its first 5 minutes free; other media offers a check of the first 10 minutes via a trimmed working copy. The original file is untouched either way. Any >1 channel notes the mono measurement policy: analysis downmixes, playback/export keep the original layout.
Phase 16 retired aurora blobs. Motion now belongs to waveform and analysis states (scanline, ribbon energized on record, resolving splash). Wallpaper is static radial cyan 10% top + violet 6% bottom, zero GPU cost, Reduce Motion friendly — mirrors AuroraBackground() in Theme+Glass.swift.