Bareplay app icon

Your music, untouched.

Bareplay is a bare, functional iOS audio player. It adds or removes nothing from your music — no resampling, no volume, no EQ — and locks your USB DAC to each file's native sample rate.

Bit-perfect is the goal; since no iOS app can prove the final output, Bareplay gives you the tools to verify it yourself — something other players don't.

iPhone & iPad · iOS 17+ · best with an external USB DAC

Turn your amplifier down before playback. Bareplay has no volume control and plays at full digital level (0 dBFS). Played without a volume control in between — for example into powered (active) headphones or speakers — this can damage your hearing or your equipment. The app is provided as-is, with no warranty — use it at your own risk.

What it does

Play files, untouched.

Point it at your music — on a NAS, a cloud drive, or on the device — and play. Bareplay reads the original samples and hands them to your DAC at the file's native rate (and, for convenience, plays locally without one too). The only thing it ever changes is a disclosed DSD-to-PCM fallback — always labelled, never silent.

Lossless & uncompressed PCM

WAV, FLAC, ALAC and AIFF play bit-perfect — the exact integer samples, at the file's native sample rate.

DSD

DSD over DoP

.dsf and .dff stream to your DAC as native DSD via DoP — as high as your device and DAC will lock the rate. No conversion in the default path.

→PCM

The one exception

When a DAC can't lock native DSD over DoP, Bareplay falls back to converting it to PCM — automatically, only when needed, and always badged. Never silent.

What "bit-perfect" means here

Honest about what software can prove — and what it can't.

Bareplay does everything an app can toward bit-perfect output: it decodes the original integer samples with no conversion, adds no resampling, volume, EQ or mixing, and locks your DAC to each file's native sample rate. When the hardware locks that rate you get a clear ✓; if iOS has to resample, it still plays but the badge warns you — disclosed, never hidden.

What no iOS app can do is see past the system audio layer to confirm what the DAC physically receives. So the badge is an honest first-line check, not a proof. To actually prove it, Bareplay includes a Test Signal mode: you capture the output externally, then verify it right in the app under Settings → Verify a recording.

Every track shows you exactly what's happening — the badge names the lock; the detail line traces the file to your DAC:

PCM LOCKED
24-bit / 96 kHz
DSD LOCKED
DSD64 → DoP 176.4 kHz
PCM LOCKED
DSD64 → PCM 88.2 kHz
RESAMPLED BY iOS
24-bit / 96 kHz → 48 kHz
RESAMPLED BY iOS
DSD64 → PCM 48 kHz

The label is the lock; the ✓ / ⚠ symbol and the detail line tell you whether anything left the bit-perfect path — note the two PCM LOCKED rows: green is a native PCM file, gold (⚠) is a DSD→PCM conversion that then locked.

Features

Everything it needs. Nothing it doesn't.

No accounts, no streaming services, no tag database, no artwork scraping. Just the parts that matter for getting clean audio to a good DAC.

📁

Rides the Files app — on purpose

SMB, WebDAV, Dropbox, iCloud or local: if it's in the Files app, Bareplay plays it. By design it contains no networking code and stores no passwords — your connections live in iOS, where they belong.

No extra streamer needed

Your iPhone or iPad is the transport. Plug the DAC straight in and play your NAS or cloud files — no Raspberry Pi, network bridge or dedicated streamer in the chain.

Live folder browser

No indexing, no waiting for a library to build. Browse folders directly and play a track or a whole album as a queue.

Gapless playback

Same-rate tracks flow into each other with zero gap — albums and live recordings play through seamlessly.

Built-in verification (optional)

Want to prove the output is bit-perfect? A Test Signal mode generates reference tones and patterns you capture off the DAC and verify on-device. It's there if you care to check.

Fully native, no trackers

Built on Apple frameworks with no third-party libraries — no analytics, no networking code. Files are decoded by Apple's own audio decoders; the DoP output and DSD-to-PCM conversion are our own code, since iOS ships no framework for either.

Formats

What it plays.

WAV PCM FLAC lossless ALAC lossless AIFF PCM DSF DSD DFF DSD / DST

PCM up to high sample rates at native bit depth. DSD over DoP, as high as your device and DAC will lock the carrier rate. DST-compressed DSD is supported as an experimental, opt-in decode.

FormatBit depthMax tested rate
WAV24-bit768 kHz
AIFF24-bit768 kHz
FLAC24-bit384 kHz
ALAC24-bit384 kHz
DSD .dsf / .dff1-bitDSD256

Tested at 24-bit (16-bit should work anyway). Uncompressed WAV/AIFF reach the highest rates; FLAC and ALAC are limited by Apple's decoders, and your DAC's lock rate is a further ceiling. Higher rates may work but aren't tested.

A look at it

One screen. A browser and a player.

No tabs, no menus to get lost in: a full-width file browser with a player docked at the bottom.

Browser
Miles Davis
Bill Evans Trio
01 — So What.flac
02 — Freddie Freeloader.flac
03 — Blue in Green.flac
So What
FLAC 24/96 → DAC @ 96 kHz
◁◁ ▷ ▷▷
Now Playing
Blue in Green
Miles Davis — Kind of Blue
PCM LOCKED
FLAC · 24-bit · 96 kHz
DAC locked @ 96 kHz
◁◁ ⏸ ▷▷
Test Signal
· Tape click PCM · 96 kHz
· Tape click DSD · DSD64
· Pink noise · 48 kHz
· Tone 997 Hz · 96 kHz
· Near-Nyquist · 96 kHz
· Walking-bit · 96 kHz
Verify the chain
capture → analyze → ✓ transparent

Illustrations of the interface. Real device screenshots will replace these.

Why I made it

A player that gets out of the way.

I built Bareplay because I didn't like the players I could find. They all wanted to be more than a player — libraries, accounts, effects, a look.

I wanted the opposite: a bare, functional app that does one job well — play my uncompressed and DSD files exactly as they are, straight to the DAC, with no processing in the way.

It looks plain on purpose. The point is what comes out of the DAC, not what's on the screen — and it will stay that way.

FAQ

Good to know.

Do I need a USB DAC?

No — Bareplay plays your local and network files just fine on the device's own output. But it's built around sending audio to an external USB DAC bit-perfect, and that's the way it's meant to be used.

Does it ever change my audio?

Bareplay itself never alters your samples — no resampling, volume, EQ or mixing. PCM (WAV/FLAC/ALAC/AIFF) and DSD-over-DoP play untouched. The one change the app can make is DSD→PCM conversion for DACs that can't accept native DSD. By default (Auto mode) this happens automatically only when the DoP rate won't lock — always disclosed (a gold ⚠ and a DSD → PCM line), never silent. See the DSD mode question below to make it strict or always-on.

There's a second case, but it's iOS, not the app: if the hardware can't lock a file's native sample rate, iOS resamples to a rate it can. Bareplay never adds that conversion itself — it discloses it with the RESAMPLED BY iOS badge so you always know.

What about DST-compressed DSD?

DST is the lossless compression found on some DSD and SACD rips. Bareplay can decode it, but the feature is experimental and off by default: DST is hard to test and verify — a subtly wrong decode comes out as noise rather than failing gracefully — and it hasn't been confirmed on real hardware. You can turn it on in Settings; otherwise DST files are skipped with a note. If you try it and run into problems, please get in touch.

How does Bareplay play DSD?

Three modes in Settings, with Auto the default — and the right choice for most:

Auto — plays DSD bit-perfect over DoP when your DAC locks the carrier rate, and only if it can't, falls back to converting to PCM. Always plays, always badged. Play as DoP — strict: refuses rather than convert if the carrier won't lock (resampling DoP would be noise, not graceful degradation). Decode to PCM — always converts, for DACs that don't do DoP at all.

So the PCM conversion isn't something you switch on; in the default Auto mode it happens by itself only when DoP isn't possible — and you can opt out of it with Play as DoP if you'd rather it refuse.

What are the DSD conversion filters?

They only matter when DSD is converted to PCM — the fallback for DACs that can't do DoP. The filter sets how the DSD is decimated down to PCM: linear-phase (default) (sharp, symmetric ringing), minimum-phase (no pre-ringing), or apodizing (gentle roll-off, minimal ringing). Linear-phase is the default because it's the most neutral — flat magnitude, no phase shift — and at these high conversion rates its pre-ringing sits in the inaudible ultrasonic range. The others are there if you prefer their trade-offs. Pick one in Settings; it takes effect on the next track. For native DSD over DoP and for PCM files, filters don't apply — nothing is being converted.

What is the “Max PCM rate” setting?

It only matters when DSD is converted to PCM (the fallback for DACs that can’t do DoP). Bareplay decodes DSD to PCM at the file’s native rate ÷ 32 — DSD64→88.2, DSD128→176.4, DSD256→352.8 kHz. If your DAC can’t lock that rate, iOS resamples the result (the RESAMPLED BY iOS badge) — a second, uncontrolled conversion. Set Max PCM rate to the highest rate your DAC actually locks and the decode is capped there instead, so it lands on a rate the DAC holds and locks cleanly ( PCM LOCKED) — a single, controlled conversion. Example: a DAC that tops out at 192 kHz locks 176.4 but not 352.8, so set 176.4 kHz and DSD256 decodes to 176.4 and locks, instead of decoding to 352.8 and being resampled.

The default is No limit (decode at DSD÷32), which is right for DACs that lock the high rates. If you don’t know your DAC’s ceiling, the rate probe (Settings → Output rate probe) shows exactly which rates lock. It’s a one-time manual setting on purpose — deliberately simpler than having the app auto-detect and track every DAC.

Is there a volume control?

No, by design — a software volume would alter the samples. Bareplay outputs every file at its full digital level (0 dBFS) and leaves volume to your DAC or amplifier. Turn your amp down before you press play. Full-scale output can be extremely loud and may damage your hearing or your equipment — use it at your own risk.

Where does it get my music?

From anything that appears in the iOS Files app — a NAS over SMB, WebDAV, Dropbox, iCloud Drive, or files stored locally. You add sources as folders; Bareplay browses them live, with no library to build. This is deliberate: Bareplay contains no networking code and keeps no credentials — you set up the connection once in Files, and the app just reads through it.

What does the status badge tell me?

The truth about each track, read on two simple axes. The label is the lock: PCM LOCKED or DSD LOCKED when the DAC is locked to the file's native rate, or RESAMPLED BY iOS ( — iOS had to resample; it still plays, you're just told). The symbol is whether anything left the clean bit-perfect path: means untouched, means a disclosed change. So a DSD file your DAC can't take over DoP — decoded to PCM that then locks — reads PCM LOCKED with a DSD64 → PCM … line: the PCM is locked, and the gold ⚠ plus the DSD → detail tell you it was converted. Never left guessing.

Can the app prove it's really bit-perfect?

Not from software alone — and no iOS app can. iOS doesn't expose what the DAC physically receives, so the in-app badge only confirms the sample rate locked. To prove the rest, Bareplay includes a Test Signal mode: play a reference signal, record it off the DAC on a computer, then bring the recording back and check it on-device under Settings → Verify a recording. See the next question for which signal to use.

What test signals are there, and which do I use?

Bareplay generates reference signals on the fly (a built-in source in the picker). They're grouped the same way as in the app:

Demo — just checking the chain works. Tape click PCM and Tape click DSD are a soft, warm tick generated live at any rate (PCM from 44.1 kHz up, or DSD64–DSD1024). Play one to hear that playback works and watch the status badge as the rate locks (or falls back). Not a bit-perfect check; nothing to capture.

Measurement — speaker/room calibration. Pink noise is a signal you play back and measure acoustically with a mic or SPL meter. It isn't a bit-perfect check and doesn't go through Verify.

Verification — transparency (analog capture). Record the DAC's analog output. Use Tone 997 Hz (level & distortion), Near-Nyquist (catches resampling), or Multitone (intermodulation & frequency response) — the everyday proof that the output is transparent.

Verification — bit-exact (clock-locked digital capture). With an S/PDIF tap, use PRNG sequence or Walking-bit for a true sample-for-sample byte compare.

For the verification signals, capture the output and check it under Settings → Verify a recording. Each carries a self-describing header with a random per-run ID, so the app identifies it straight from the recording (nothing to note down) and a match can't be a coincidence. For the bit-exact pair (PRNG sequence and Walking-bit), set your recorder to lock its clock to the incoming S/PDIF — otherwise the two clocks drift and the sample-for-sample compare won't line up.

The app is tiny — where do all these test signals come from?

They're generated on the fly. Nothing is bundled or stored: every signal is computed by code the moment you play it — sample by sample, at whatever rate you pick — so they add almost nothing to the app's size and each one exists at every supported rate. The Tape click DSD goes a step further and is modulated into a true 1-bit DSD stream live as it plays.

Does it have a library, playlists, or search?

No. It's a folder player by design. Play a single track or a whole folder as a queue. Nothing to index, nothing to sync.