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
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.
WAV, FLAC, ALAC and AIFF play bit-perfect — the exact integer samples, at the file's native sample rate.
.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.
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
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 — one of four honest states:
Features
No accounts, no streaming services, no tag database, no artwork scraping. Just the parts that matter for getting clean audio to a good DAC.
SMB, WebDAV, Dropbox, iCloud or local: if it's in the Files app, Bareplay plays it. By design it writes no networking code of its own and stores no passwords — your connections live in iOS, where they belong.
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.
No indexing, no waiting for a library to build. Browse folders directly and play a track or a whole album as a queue.
Same-rate tracks flow into each other with zero gap — albums and live recordings play through seamlessly.
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.
Built on Apple frameworks with no third-party libraries. No analytics, no networking code of its own.
Formats
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.
A look at it
No tabs, no menus to get lost in: a full-width file browser with a player docked at the bottom.
Illustrations of the interface. Real device screenshots will replace these.
Why I made it
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
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.
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 badged as converted, 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.
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.
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.
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.
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.
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 implements no networking code itself and keeps no credentials — you set up the connection once in Files, and the app just reads through it.
The truth about each track, in one of four states: PCM LOCKED or DSD LOCKED (✓ — the DAC is locked to the file's native rate), RESAMPLED BY iOS (⚠ — iOS had to resample; it still plays, you're just told), or DSD CONVERTED TO PCM (⚠ — the fallback for DACs that can't do DoP). Never left guessing.
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.
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.
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.
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.