Desibel

Your music, untouched.

Desibel is a minimal lossless audio player for your own files — on a NAS (a network drive), a cloud drive, or the device, no streaming service. It plays PCM and DSD untouched — bit-perfect by default, with no resampling, volume or EQ — and locks your USB DAC to each file's native sample rate.

Bit-perfect (the exact samples in the file reaching your DAC, unchanged) is the goal; since no iOS or iPadOS app can prove the final output, Desibel gives you the tools to verify it yourself — something other players don't.

Coming soon to the App Store Quick start

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

30-day free trial, then $9.99 once (USD; regional pricing varies) — a one-time purchase, no subscription.

⚠ Turn your amplifier down before playback. Desibel 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.

Quick start

Up and running in a minute.

Play first, tune later. The defaults are bit-perfect, so most setups need only the first three steps.

Get playing

  1. Install Desibel and connect your USB DAC.
  2. Add your music: tap + and pick a source — a NAS, a cloud drive, or a folder on the device.
  3. Open Settings › Source Speed, tap Test source speed, then set Streaming buffer and Start pre-buffer to the suggested values.

That's it — Desibel now plays PCM untouched, with your DAC locked to each file's sample rate, and DSD as native DoP.

Tune for your DAC — optional

  1. DAC doesn't do DSD? Settings › DSD Playback › Output › Convert to PCM — and set Max PCM rate if it won't lock the highest rate.
  2. Want to upsample PCM? Settings › PCM Playback › Upsample to a higher rate.
  3. Want DSD output from your 44.1 kHz-family PCM too? Settings › PCM Playback › Modulate PCM to DSD.
  4. A loud master that needs headroom? Settings › PCM Playback › Attenuation — with Upsample and Modulate both Off, it offers an exact −6.02 dB.
  5. Curious how a track measures? Settings › Metering › Show metering puts its dynamic range, loudness and true peak under its name.

What it does

Play your music, untouched.

Point it at your music — on a NAS, a cloud drive, or on the device — and play. Desibel reads the original samples and hands them to your DAC at the file's native rate (and, for convenience, plays locally without one too). By default it changes nothing; four opt-in conversions exist for matching a particular DAC or leaving headroom, each off unless you turn it on and always shown when it runs — never silent.

PCM

Lossless & uncompressed PCM

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

DSD

Native DSD via DoP

.dsf and .dff stream to your DAC as native DSD via DoP (DSD-over-PCM, the standard way to carry DSD over USB) — as high as your device and DAC will lock the rate. No conversion in the default path.

⟳

Opt-in conversions, disclosed

Four optional modes — DSD→PCM, PCM upsampling, PCM→DSD and an exact −6.02 dB headroom step — for a DAC that prefers a certain rate or format, or for a loud master. Every one is off by default and, when on, shown in gold ⟳ — never a silent change.

What "bit-perfect" means here

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

Desibel 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. The green ✓ appears only on a real USB DAC that locks that rate. On any other output — Bluetooth, AirPlay, the built-in speaker — which can't carry bit-perfect audio, or when iOS or iPadOS has to resample, it still plays but the status line warns you instead of showing a false ✓. Disclosed, never hidden.

What no iOS or iPadOS app can do is see past the system audio layer to confirm what the DAC physically receives. So the status line is an honest first-line check, not a proof. To actually prove it, Desibel includes built-in Test Signals: you capture the output externally, then analyze it right in the app under Settings → Advanced → Analyze a recording.

Every track traces its own path, on one line: your file on the left, your DAC on the right, and every step in between. The colour says whether anything left the bit-perfect path.

✓ PCM 24/96 kHz
a native PCM file, locked to its own rate
✓ DSD64 (DST) → DoP 176.4 kHz
native DSD over DoP, carrier locked
⟳ DSD64 → PCM 88.2 kHz
DSD→PCM — a conversion you turned on
⟳ PCM 24/96 kHz → PCM 384 kHz
PCM UPSAMPLED — a conversion you turned on
⟳ PCM 24/96 kHz → PCM −6.02 dB
PCM −6.02 dB — every sample halved, a change you turned on
⟳ PCM 16/44.1 kHz → DSD256 → DoP 705.6 kHz
PCM→DSD — a conversion you turned on
⚠ PCM 24/96 kHz → PCM 48 kHz
RESAMPLED BY iOS / iPadOS — the system coerced the rate
⚠ DSD64 → PCM 88.2 kHz → PCM 48 kHz
a conversion the system then resampled — both steps shown
⚠ PCM 16/44.1 kHz
NON-USB OUTPUT — Bluetooth, AirPlay or the built-in speaker

The line reads source → converted → output: what your file is, what it was turned into if you asked for that, and what actually reaches the DAC. Steps that would say the same thing twice collapse, so a bit-perfect track is a single item. The symbol and colour mark whether anything left the bit-perfect path — green ✓ is a native file untouched on a USB DAC, gold ⟳ is an opt-in conversion you turned on that then locked (DSD→PCM, PCM UPSAMPLED, PCM→DSD or PCM −6.02 dB), and red ⚠ is either the system coercing the rate or a route that can't be bit-perfect at all. Tap the line and Desibel names the state and explains it in plain language, down to which device is on the end of the chain.

The Desibel player: a FLAC file playing, and under its name a green check mark with the line PCM 24/96 kHz.
The Desibel player with a red warning symbol and the line PCM 24/96 kHz → PCM 48 kHz under the track name.

On an iPad or an iPhone with a USB DAC: a PCM file locked to its own rate (green ✓), and a rate the system resampled to 48 kHz (red ⚠).

And that proof has been run. Two of the built-in bit-exact test signals — PRNG sequence · 96 kHz and Walking-bit · 96 kHz — were sent to a USB DAC, captured on the USB link, and analyzed back in Desibel: bit-exact — every sample, both channels, all 24 bits intact.

PRNG sequence 96 kHz and Walking-bit 96 kHz test signals, captured on the USB link to a Benchmark DAC2 HGC with a Teledyne LeCroy Mercury T2C USB analyzer (export data transfer out) and converted to audio files in Audacity (import raw data as 32-bit; export as 24-bit / 32-bit with dithering off), then analyzed on the Desibel app.

DSD

Native DSD — or an honest conversion.

DSD is a first-class citizen here, not an afterthought. Desibel plays your .dsf and .dff files as native 1-bit DSD over DoP, straight to your DAC — as high as your device and DAC will lock the carrier rate (the PCM rate DoP rides on), with no conversion in the default path.

It reads SACD disc images directly, too: open an .iso like a folder, and its tracks play bit-perfect as native DSD — no extraction needed. Desibel plays the disc's stereo layer, decoding DST-compressed discs losslessly on the fly. A DST source — a SACD track or a DST .dff — is labeled DSD64 (DST) in the player, so you can always see when a track was DST-compressed.

By default DSD plays strictly native — the Native (DoP) mode. For a DAC that can't take DoP, switch Settings → DSD Playback → Output to Convert to PCM and Desibel converts it — telling you with a gold ⟳ in the player's status line (DSD64 → PCM 88.2 kHz), never a silent downgrade. Those are the two DSD output modes; a shared conversion filter applies when it converts.

Output matching · optional

Upsample, modulate or add headroom — if you want.

A fresh install never changes a sample. But some DACs simply sound their best fed a particular rate or format — so Desibel offers four opt-in conversions for matching your DAC or leaving headroom. Every one is off by default, and when you switch it on the track plays with a gold ⟳ in the status line — disclosed, never a bit-perfect ✓. This is output matching, not a fidelity improvement: manufacturing a higher rate can't add detail that isn't in the file.

PCM ↑

Upsample PCM

Integer-upsample any PCM file to a higher rate in its own family (44.1 or 48). Three tiers: 88.2 · 96 kHz (which only doubles 44.1 / 48 kHz files), 176.4 · 192 kHz and 352.8 · 384 kHz. A file already at or above the target passes through untouched (green ✓); otherwise it's shown as ⟳ PCM UPSAMPLED. If it reconstructs a peak past full scale, the optional Show metering readout shows it — and Attenuation can leave room.

PCM→DSD

Modulate PCM to DSD

Turn a 44.1-family PCM file into a 1-bit DSD stream (DSD64–DSD256) over DoP, for a DAC you'd rather feed DSD. Shown as ⟳ PCM→DSD, and it plays about 6 dB quieter — 1-bit DSD needs the headroom. (48-family files have no integer ratio to DSD, so they aren't modulated.)

−6.02

Attenuate PCM, exactly

With Upsample and Modulate both Off, Attenuation can halve every PCM sample: a one-bit shift, so exactly −6.02 dB — an integer operation, no filter, no dither, no resampling. It leaves headroom for peaks between samples that your DAC would otherwise reconstruct above full scale. Not bit-perfect while on: shown as ⟳ PCM −6.02 dB. DSD is never attenuated, and a 32-bit file loses its lowest bit.

Upsampling reconstructs the peaks that fall between a file's samples, and on a loud master those true peaks can run just past digital full scale — an over that's already implied by the file, not one Desibel adds. When the reconstruction turns such a peak into a real sample it clamps to full scale — the track clips. Rather than hide that, Desibel can show it: switch on Show metering (Settings → Metering) and each track's true peak (TP) appears under its name once it has played through, in red when it reaches full scale; a track that does also raises a short note on the player. Prefer to leave room? Attenuation (Settings → PCM Playback) lowers the level: −1, −3 or −6 dB for upsampled or modulated audio, or the exact −6.02 dB for PCM that plays natively. It's off by default — the over is shown, never hidden, and never fixed by quietly turning you down.

Everything is exact integer-ratio — there is no fractional resampling anywhere in the app — and PCM→DSD tops out at DSD256, the highest rate verified on real hardware. You choose them in Settings → PCM Playback and Settings → DSD Playback; a shared Conversion filter (linear-phase, minimum-phase or apodizing) applies to all of them. Turn everything off and Desibel is what it is out of the box: bit-perfect.

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.

✓

Bit-perfect — and honest about it

Decodes the original integer samples and locks your DAC to each file's native rate — no resampling, volume, EQ or mixing. The status line shows the lock, and tells you honestly on the rare occasion iOS or iPadOS resamples.

♪

Plays your formats

WAV, FLAC, ALAC and AIFF play bit-perfect; DSD (.dsf / .dff) plays native over DoP, or converts to PCM if you switch that on for a DAC that can't take DoP. Lossless only, stereo and mono.

📁

Rides the Files app — on purpose

SMB, WebDAV, Dropbox, iCloud or local: if it's in the Files app, Desibel plays it. By design it contains no networking code and stores no passwords — your connections live in iOS or iPadOS, 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. And most streamers can't play Apple Music, so the phone's in your setup anyway.

▤

Live folder browser

No indexing, no waiting for a library to build. Browse folders directly and tap a track — the rest of its folder follows as a queue. Cover art and booklets that live in the folder — images and PDFs — open right in a viewer you can swipe through.

⇥

Gapless playback

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

⏯

Lock-screen & background play

Keeps playing with the screen locked, with track info and play, pause and next / previous on the lock screen and Control Center. Drag or tap the position bar to seek, here and on the lock screen — or switch seeking off in Settings.

⌾

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 the PCM/DSD conversions are our own code, since iOS and iPadOS ship no framework for them.

∿

Built-in analysis (optional)

Want to prove the output is bit-perfect? Built-in Test Signals generate reference patterns you capture off the DAC's digital output and analyze on-device for a byte-exact match. It's there if you care to check — under Settings → Advanced.

Δ

Metering per track

Dynamic range (DR), loudness range (LRA), integrated loudness (INT) and true peak (TP), measured from the file as you listen — so conversions never change them. Show them under each track, and spot a loud master before it clips.

▦

A HUD for your setup

An optional panel of live figures — buffer, dropouts, read and compute time, what the system does with the audio, thermal state and route. Off by default, and when it's off it does no work at all. What the rows mean.

⚲

Pinned Albums & quick jumps

Pin a folder or SACD image and find it again in the source menu — a place, not a playlist. A button jumps to the playing track's folder, another back to your sources.

Formats

What it plays.

WAV PCM FLAC lossless ALAC .m4a · lossless AIFF PCM DSF DSD DFF DSD / DST SACD .iso · DSD

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. SACD disc images (.iso) play directly — open one like a folder and play its stereo layer as native DSD. DST-compressed DSD — common with SACD — is decoded losslessly. Stereo and mono only — it's built for a two-channel USB DAC, so multichannel files aren't played. ALAC files carry the .m4a extension; a lossy .m4a (AAC) isn't played — Desibel is lossless only.

FormatTested bit depthMax tested rate
WAV24-bit768 kHz
AIFF24-bit768 kHz
FLAC24-bit384 kHz
ALAC24-bit384 kHz
DSD .dsf / .dff1-bitDSD256
SACD .iso1-bitDSD64

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.

The Desibel player with the HUD open: a panel of live figures such as buffer, dropouts, conversion, true peak and route, above a player showing a gold line PCM 24/96 kHz → PCM 384 kHz.
The Desibel player on an iPhone: a folder with three entries, a DSF file playing, and a green line DSD64 → DoP 176.4 kHz under its name.
The Settings screen on an iPhone showing the Player Controls, Browsing and Metering sections with their switches and help texts.

Shot with a USB DAC: a PCM file upsampled to 384 kHz with the HUD open (iPad, or iPhone on a narrow screen), then native DSD over DoP and part of Settings (iPhone).

Why I made it

A player that gets out of the way.

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

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

I listen on Apple Music, which almost no streamer can play, so it already reaches the DAC through an Apple device. My own hi-res and DSD files used to need a second box too — two devices fighting over the DAC's one USB input. Desibel ends that: the Apple Music app and Desibel on one Apple device — no streamer, no switch, nothing to re-plug.

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.

General

What does it cost?

A 30-day free trial, then a one-time $9.99 purchase — no subscription, no ads, no accounts. Buy it once and it's yours. ($9.99 is the US price; your local App Store price may differ.)

Do I need a USB DAC?

No — Desibel 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.

Will there be an Android or desktop version?

Desibel is iPhone and iPad only — built on Apple's audio frameworks, so there's no Android or desktop version, and none is planned at the moment. If you'd like to see one, send an email — knowing there's interest helps.

Can I move within a track — and turn that off?

Yes: drag or tap the position bar in the player, or the scrubber on the lock screen. If you'd rather it can't be nudged by accident, switch off Settings → Player Controls → Enable seeking (on by default) — the bar then only displays the position, here and on the lock screen. A DST-compressed .dff on its own and the generated test signals can't be sought.

Does it play multichannel / surround files?

No — Desibel plays stereo (2-channel) and mono only. It's built for a two-channel USB DAC, so multichannel files (5.1 surround, quad, multichannel SACD) aren't played: tapping one shows a short "mono and stereo only" message instead of half-playing it. Multichannel isn't planned at the moment.

Is there a volume control?

No, by design — a software volume would alter the samples. Desibel 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.

Does it ever change my audio?

Not by default — and never silently. Out of the box Desibel alters nothing: no resampling, volume, EQ or mixing; PCM (WAV/FLAC/ALAC/AIFF) and native DSD play untouched. The only changes it can make are the four opt-in conversions — DSD→PCM, PCM upsampling, PCM→DSD and the exact −6.02 dB attenuation — and each is off unless you turn it on in Settings and always shown in gold ⟳ when it runs. See the conversion questions below.

There's a second case, but it's iOS or iPadOS, not the app: if the hardware can't lock a file's native sample rate, it resamples to a rate it can. Desibel never adds that conversion itself — it discloses it with a red ⚠ status line (its explanation reads RESAMPLED BY iOS / iPadOS) so you always know.

And if you send audio somewhere other than a USB DAC — Bluetooth, AirPlay or the built-in speaker — that route can't carry bit-perfect audio at all; the ⚠ status line (NON-USB OUTPUT in its explanation) tells you, so it's never mistaken for untouched.

What does the status line tell me?

The truth about each track, on one coloured line under its name in the player: a symbol, then the chain of formats from your file to your DAC — for example ✓ PCM 24/96 kHz, ✓ DSD64 → DoP 176.4 kHz, ⟳ PCM 24/96 kHz → PCM 384 kHz or ⚠ PCM 24/96 kHz → PCM 48 kHz. The line reads source → converted → output, and steps that would say the same thing twice collapse.

The symbol and colour say whether anything left the clean bit-perfect path: ✓ (green) means untouched — PCM or DSD with the DAC locked to the file's native rate; ⟳ (gold) means a disclosed conversion you turned on — DSD→PCM, PCM UPSAMPLED, PCM→DSD or PCM −6.02 dB; and ⚠ (red) means the audio left that path — iOS or iPadOS resampled the rate (RESAMPLED BY iOS / iPadOS; it still plays, you're just told), or you're not on a USB DAC (NON-USB OUTPUT: Bluetooth, AirPlay or the built-in speaker, which can't be bit-perfect at all).

Tap the line and Desibel names the state and explains it in plain words, including which device is actually on the end of the chain and, for a mono file sent to a stereo-only DAC, that its channel was duplicated (Channels 1 → 2) — which changes no sample value. One thing the line doesn't cover is level and loudness — how hot the track is and how its loudness varies; that's a separate, optional readout under Settings → Metering (see the metering question).

What do DR, LRA, INT and TP under each track mean?

They're the per-track metering readout. Desibel measures each track as you listen to it — dynamic range (DR), loudness range (LRA), integrated loudness (INT) and true peak (TP) — from the file's own samples, so upsampling and the other conversions never change them. Under Settings → Metering, Enable metering is on by default (off measures nothing) and Show metering is off by default; switch it on and a line such as DR7  LRA 3.8  INT −8.5  TP +1.2 appears under each track once it has played through. Clear stored metering data deletes what has been collected.

DR is the track's dynamic range as a whole number, by the method behind the DR figures printed for albums (TT / Pleasurize Music Foundation): how far the loudest passages' level sits below the track's peak. A small number means a loud, compressed master; a larger one means more room between loud and peak.

LRA, in LU (loudness units), is the loudness range — how far loudness swings between the quietest and loudest passages, measured the way broadcasters do (EBU Tech 3342). A large number means wide dynamics; a small one means the track is levelled flat.

INT, in LUFS, is the track's overall loudness (ITU-R BS.1770, gated so silence doesn't count). Values are negative; the closer to zero, the louder.

TP, in dBTP, is the true peak: the loudest point of the reconstructed waveform, including peaks that fall between samples. The other three figures carry no warning colour — a range or a loudness is neither good nor bad in itself — but TP does, on four bands: grey well below full scale (under −3 dBTP), normal from there, orange within a decibel of full scale, and red at or above it. A track whose TP reads above 0 has peaks that your DAC would reconstruct above full scale.

Native DSD over DoP carries no PCM, so measuring it takes a background DSD→PCM decode alongside playback: Settings → Metering → Meter DSD (on by default; shown while DSD Output is Native (DoP)). Playback stays bit-perfect. It's CPU-heavy, and may not keep up at high DSD rates on older devices; the values are of the decoded PCM (DSD ÷ 32), since DSD has no 0 dB reference. A PCM→DSD modulation isn't metered.

Is playback gapless?

Yes — consecutive tracks that share the same format (same sample rate, bit depth and channel count) flow into each other with no gap and no re-lock, so albums and continuous live recordings play through seamlessly. This holds for PCM and for native DSD over DoP alike. A change in rate, bit depth or DSD rate between two tracks needs the DAC to re-lock, so a brief gap there is unavoidable.

One honest exception: when you've set DSD to Convert to PCM, two kinds of source — DST-compressed DSD, and tracks inside a SACD disc image (.iso) — can leave a very brief seam of well under a millisecond (a few tenths of a millisecond) at each track boundary rather than being perfectly gapless. Those formats are decoded on the fly and can't be read ahead across the boundary the way a plain .dsf or .dff file can, so the converter restarts cleanly at each track. It's a small technical limitation, not a dropout — and it doesn't affect native DoP playback (the default) or ordinary .dsf/.dff files converted to PCM, which stay perfectly gapless.

The beginning of a track is cut off. Why?

Almost always your DAC, not the file — and Desibel already works around it. When playback starts, the DAC has to lock onto the incoming stream, and most DACs mute their output while they do. On a track that opens straight into music rather than a moment of silence, that mute swallows the first fraction of a second.

The giveaway is that it only happens when you tap a track directly. Play the album from the track before and the same passage is complete — because tracks flowing into each other never stop the stream, so the DAC never re-locks and nothing is muted.

So Desibel sends a short stretch of silence before a track's first audio, giving the DAC time to lock before the music arrives. There are two settings under Settings → Playback Start: PCM preamble, 100 ms by default, and DSD preamble, 500 ms.

They differ because the two kinds of stream cost very different amounts to start. For PCM the DAC only has to lock its clock to the incoming sample rate. DSD over DoP asks for a second step on top of that. DoP carries DSD inside what looks, to the USB link, like an ordinary PCM stream: the DSD bits ride in the lower part of each sample and the top byte carries a marker that alternates between two fixed values, frame after frame. A DAC has no advance warning of which kind of stream it is being sent, so it assumes PCM and watches for that alternating marker. Only after a run of consecutive correct frames does it accept the stream as DSD and switch over — and it has to be that careful, because mistaking real PCM for DoP would send the marker values to the speakers as full-scale noise. It mutes across the changeover. That detection window is why DSD needs several times longer than PCM before the music can safely start.

The two settings follow what actually reaches the DAC rather than what the file is, so a DSD file you have set to convert to PCM uses the PCM setting — by then it is PCM on the wire, with nothing to detect.

Those defaults are enough for the DACs we've been able to measure, which is a small number next to everything on the market — and a DAC that has just been switched on can be slower still. If you hear a clipped start, raise the one for that kind of file. If your DAC locks quickly and you'd rather playback began sooner, lower it, or set it to Off. The cost is only that: the wait before the music starts. Nothing is added between tracks, so gapless playback is untouched.

This never alters your audio. The silence sits ahead of the file's first sample; every sample still reaches the DAC exactly as stored.

What happens to my settings and purchase if I reinstall?

Deleting the app clears its on-device data: your settings return to their defaults and your added sources are forgotten, so you'll re-add them and can re-tune the streaming buffers. Your trial and one-time unlock are not lost — they're tied to your Apple ID through the App Store. The trial keeps counting from your original download date (reinstalling doesn't start a fresh trial), and the unlock restores automatically, with a Restore Purchases option if you ever need it.

If you just want to free up space without losing anything, use iOS's Offload App (Settings › General › iPhone Storage) instead of deleting — that keeps your settings and sources; only a full delete clears them.

Browsing & Streaming

Where does it get my music?

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

Why don't I see all my files in the browser?

By design the browser stays focused. By default it lists your playable music plus the cover art and booklets that live in the folder — images and PDFs — and hides everything else, so stray files don't clutter it. Two toggles under Settings → Browsing change what shows:

Show only supported files (on by default) — turn it off and the files Desibel can't play are listed too, greyed out and non-playable, so you can still see what's in a folder. Show artwork & documents (on by default) — turn it off to hide the images and PDFs as well. So a file you have but can't play — a lossy .m4a (AAC), say, or some other unsupported format — only appears with the first toggle off.

Does it have a library, playlists or search?

No. It's a folder player by design. Tap a track and the rest of its folder follows as a queue, gapless where possible; a folder row has no play button of its own — playback starts from a track. Nothing to index, nothing to sync. For the folders you come back to, see Pinned Albums.

What are Pinned Albums?

A shortcut to a place. The pin button in the top bar of any folder or SACD image pins it; Pinned Albums, in the source menu beside Test Signals, lists your pins by album name, with the source's name beneath. Open one and press Back, and you return to the list. A pin is a place, not a playlist — it holds a folder, never a selection of songs.

What do the buttons in the top bar do?

On a folder or disc screen, from the left: Back, then the pin button, a back-to-sources button that returns to the top level in one tap, a go-to-playing-track button, and Settings. The go-to-playing button appears while a track is playing, sits directly left of Settings, switches to that track's source if needed, opens its folder and scrolls the playing row into view — it only navigates, playback is never touched.

What if my source doesn't answer?

Desibel stops waiting after 3 seconds. While browsing, the screen says the source isn't responding and offers Retry; when opening a track, it says "Source not responding" and you tap the track again. A NAS that is waking its disks usually answers on the second try.

What are the buffer settings?

Network and cloud files are read ahead into a buffer so playback rides out brief stalls. Two settings under Settings → Streaming control it. Streaming buffer is how far ahead a track is buffered while it plays — the cushion against network hiccups. Start pre-buffer is how much is filled before a track starts playing: a lower value (the default is 0.4 seconds) starts almost instantly and stays responsive, while a higher one waits a little longer before the first sound but rides out a slow first read from a cold or distant source. Local files start instantly either way.

Not sure what to choose? Settings → Source Speed has a Test source speed button that reads a file from each source and reports its throughput and first-byte latency, then suggests a streaming buffer and start pre-buffer to match — a fast local NAS suggests the smallest values, a slower or more distant source larger ones. It's only a suggestion; you set the final values yourself.

PCM Playback

Does it play 32-bit float WAV/AIFF files?

No — and that's on purpose. A DAC works in integer PCM, so a floating-point file can't be sent bit-perfect: it would first have to be converted to integer (re-quantized, and anything above 0 dBFS clipped). Rather than do that silently behind a "PCM" status line, Desibel refuses a float file with a short message. Export or convert it to integer WAV/AIFF (16, 24, or 32-bit) — or FLAC/ALAC, which are always integer — and it plays untouched. Float is a DAW / mastering working format; the music files you play are almost always already integer.

Does it play DXD files?

Yes. DXD isn't a separate format — it's a name for high-rate PCM, 352.8 kHz at 24-bit (sometimes 32-bit), used as an editing format for DSD/SACD production (at 24-bit it carries exactly three times the data rate of DSD64, in the same 44.1 kHz clock family). On disk a DXD file is an ordinary WAV, FLAC or AIFF, so Desibel plays it bit-perfect through the normal PCM path — no special handling, no conversion — as long as your DAC locks the rate. One caveat: Desibel plays integer PCM only, and some DXD files are 32-bit float — if yours is, see the float question above.

DSD Playback

How does Desibel play DSD?

Two modes under Settings → DSD Playback → Output, with Native (DoP) the default:

Native (DoP) (default) — plays DSD bit-perfect as native 1-bit DSD over DoP. Strict: if your DAC won't lock the carrier rate it stops and tells you rather than convert (resampling a DoP carrier would be noise, not graceful degradation). Convert to PCM — converts DSD to PCM, for a DAC that can't do DoP at all; shown as ⟳ DSD→PCM.

There's no automatic mode: a DAC's DoP support can't be probed reliably, so the honest default is strict native DoP, and you switch to Convert to PCM yourself if your DAC needs it.

What about DST-compressed DSD?

DST is the lossless compression used on many DSD and SACD releases (it roughly halves the file size). Desibel decodes it transparently: a DST-compressed .dff or SACD track plays like any other DSD — native over DoP (bit-perfect) by default, or through the DSD→PCM conversion if you've set DSD to Convert to PCM for your DAC — with nothing extra to switch on for DST itself. Because DST is lossless, native DoP of a decoded DST track is genuinely bit-perfect. The player labels a DST track DSD64 (DST) in its format line, so you can always see when the DSD came from a DST-compressed source. If a DST file ever gives you trouble, please get in touch.

Can it play SACD ISO files?

Yes — Desibel plays tracks straight out of a SACD disc image (.iso), with no extraction needed. Open the .iso in the browser like a folder and its tracks are listed; tap one and it plays the stereo layer bit-perfect as native DSD (DSD64) over DoP, exactly like a .dsf or .dff file — same status line, and gapless between tracks when playing native over DoP (the default). Only SACD images work: a regular audio-CD or data .iso shows no tracks. Multichannel layers aren't played (stereo and mono only), and DST-compressed discs — most SACD releases — are decoded losslessly. If you switch DSD to Convert to PCM for a non-DoP DAC, SACD tracks can then leave a very brief seam of well under a millisecond between tracks rather than being perfectly gapless — see the gapless question.

What is the "Max PCM rate" setting?

It only matters when you set the DSD Output mode to Convert to PCM. Desibel 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 or iPadOS resamples the result (the red ⚠ status line) — 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 (⟳ DSD→PCM) — 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 → Probe output sample rates) 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.

Conversions & verification

What are the upsampling, PCM→DSD and attenuation options?

They're optional, all off by default — a fresh install is bit-perfect and never converts a sample. Some DACs sound their best fed a particular rate or format, so you can opt in to upsample PCM to a higher rate in the same family (three tiers: 88.2 · 96, 176.4 · 192 and 352.8 · 384 kHz), or modulate 44.1-family PCM to DSD (DSD64–DSD256). You set them under Settings → PCM Playback. PCM→DSD modulation is CPU-heavy at the top rates — on a slower device, see whether your device can keep up below.

The fourth is not about matching a rate but about headroom: with both of those Off, Attenuation can halve every PCM sample — an exact −6.02 dB, an integer operation with no filter, no dither and no resampling (how it works). It exists for loud masters whose true peak reads above 0: the DAC would otherwise reconstruct those peaks above full scale.

This is output matching and headroom, not a fidelity improvement — manufacturing a higher rate can't add detail that wasn't in the file, and every conversion uses an exact integer ratio (no fractional resampling). Whenever one is on, the track is shown in gold ⟳ (PCM UPSAMPLED, PCM→DSD or PCM −6.02 dB) — never a bit-perfect ✓ — so you always know. One honest note on PCM→DSD: 1-bit modulation needs a little headroom, so it plays about 6 dB quieter — a property of the conversion, not a hidden volume stage.

They also never stack. Each track takes one path, matched to its source: a PCM file follows Settings → PCM Playback (leave native, upsample, or modulate to DSD — and the exact −6.02 dB only while both are Off), and a DSD file follows Settings → DSD Playback (native over DoP, or decode to PCM). So a DSD file you decode to PCM is not then run through PCM upsampling — its rate is set once by the decode (DSD ÷ 32, only ever lowered by Max PCM rate), never raised by the Upsample setting. One controlled conversion, never two.

The Attenuation row is one row with two meanings: with Upsample or Modulate on, it offers −1, −3 and −6 dB for the converted audio; with both Off, it offers the exact −6.02 dB for native PCM. Each mode keeps its own choice.

Can upsampling clip a loud track?

It can, and Desibel shows you. Upsampling reconstructs the peaks that fall between a file's stored samples; on a loud, modern master those true peaks can sit just past digital full scale — an over already implied by the file, not one Desibel adds. When the reconstruction turns such a peak into a real sample, it's clamped to full scale and the track clips. Switch on Show metering (Settings → Metering) and you'll see the sign: a track whose TP reads 0 or above has such peaks, in red. TP is the file's own, measured from the source, so it reads the same whether the track plays natively or upsampled. A track whose true peak reaches full scale also raises a short note on the player.

To give those peaks room, use Attenuation under Settings → PCM Playback: with upsampling on it offers −1, −3 or −6 dB (set it to at least the amount TP is above 0), lowering the upsampled level just enough that the reconstructed peaks stay under full scale. It's off by default, because turning the level down is itself a change — so Desibel would rather show the over than quietly attenuate to hide it. For PCM that plays natively, the same row offers an exact −6.02 dB; there it isn't Desibel that clamps but the DAC's own reconstruction that would go over. (Within Desibel, only PCM upsampling creates new peaks this way.)

What are the conversion filters?

The Conversion filter (its own section in Settings) sets the interpolation/decimation filter used by any conversion — decoding DSD to PCM, upsampling PCM, or modulating PCM to DSD: 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 rates its pre-ringing sits in the inaudible ultrasonic range. The others are there if you prefer their trade-offs. It takes effect on the next track, and only bites when something is actually being converted — native DSD over DoP and untouched PCM never touch it. The exact −6.02 dB attenuation is a bit shift and uses no filter.

Do the DSD conversions need a fast device?

Desibel runs on a wide range of hardware (any iPhone or iPad that can run iOS or iPadOS 17 or newer), and everyday playback is light: bit-perfect PCM and DSD, and PCM upsampling, run comfortably on any supported device. The CPU-heavy mode is PCM→DSD modulation at the higher rates — DSD128 and especially DSD256 — because the 1-bit sigma-delta modulator has to run in real time on every single sample.

On a slower or lower-powered device, those top rates may not keep up. If that happens you may hear a brief dropout, and if it still can't sustain the rate Desibel stops and tells you rather than playing glitchy or noisy audio — it never drops the DoP lock into noise, so you're never left guessing. The fix is simple: pick a lower DSD rate (DSD64 is comfortable on far more devices) or use a lighter mode. Newer, faster devices have ample headroom for DSD256. Since these modes are opt-in and off by default, none of this affects ordinary bit-perfect playback.

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

Not from software alone — and no iOS or iPadOS app can. The system doesn't expose what the DAC physically receives, so the in-app status line only confirms the sample rate locked. To prove the rest, Desibel includes built-in Test Signals: play a reference signal, record it off the DAC on a computer, then bring the recording back and check it on-device under Settings → Advanced → Analyze a recording. See the next question for which signal to use.

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

Desibel generates reference signals on the fly (the Test Signals entry in the source menu). They're grouped the same way as in the app:

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

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 the analyzer. It's off by default — it plays through your amp at whatever volume is set — and is switched on with Settings → Advanced → Enable Measurement signals.

Analysis — bit-exact. Record the DAC's digital input — an S/PDIF tap clock-locked to the incoming stream, or the USB link with a protocol analyzer (as in the proof above). Use PRNG sequence or Walking-bit for a true sample-for-sample byte compare — the proof that every bit arrived intact. These are full-scale, capture-only signals, so they're off by default too: switch them on with Settings → Advanced → Enable Analysis signals, with your amp or headphones disconnected. (Recording the DAC's analog output can't prove bit-perfectness — the conversion's own gain and noise floor make an exact comparison impossible — so Desibel doesn't pretend to; it verifies the digital output, which is the part it's responsible for.)

The gated signals stay listed; tapping one while its switch is off shows a message explaining how to enable it under Settings → Advanced.

For the Analysis signals, capture the output and check it under Settings → Advanced → Analyze 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 stream — otherwise the two clocks drift and the sample-for-sample compare won't line up. These verify the native PCM path, so they won't play while PCM upsampling, PCM→DSD conversion or the −6.02 dB attenuation is switched on — turn those off in Settings to run them.

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.

HUD

What is the HUD?

An optional panel of live figures for diagnosing a setup: how full the buffer is, whether anything dropped out, how hard the device is working, what iOS or iPadOS does with the audio, and where it goes. It's off by default. Switch it on with Settings → Advanced → Enable HUD (on any iPhone or iPad) and a HUD button appears at the right of the player controls; tap it to show the panel above the player, tap again to hide it.

The HUD shows numbers, never a verdict — what happened to the audio is told by the status line. Playback is the same with the HUD on or off, and with it off the HUD does no work at all. See what each row means.

What do the HUD's rows mean?

In the order they appear (the two system rows read “iOS” on an iPhone and “iPadOS” on an iPad):

Buffer
How much audio is read ahead, out of the streaming buffer — for example 3.9 s of 4.0 s (98 %).
Dropouts
How many times the output got silence because the buffer ran dry. One dropout is one I/O block (see I/O buffer).
Read
Milliseconds spent reading from the source per second of audio.
Compute
Milliseconds spent converting per second of audio; “no conversion” when nothing is converted.
Performance
How many times faster than real time the audio is prepared — see the next question.
Conversion · Filter · Attenuation
What acts on this track, with its parameters — for example “PCM upsample ×4”, “linear-phase”, “−3 dB”; “none” for plain playback.
True Peak
The highest true peak so far in this track. It reads “Disabled” when metering is off, and “Next track” when metering was switched on after this track started.
App → iOS / iPadOS (two rows)
The exact format Desibel hands to the system: the sample format (for example “24-bit int hi-aligned”), then the rate and channels (“176.4k 2ch”).
iOS / iPadOS → DAC
The rate and channels the system runs the output at. See why only those two.
I/O buffer
Apple's I/O buffer duration: the block size the system asks for each time, for example 10.7 ms.
Thermal
The device's thermal state — nominal, fair, serious or critical. Heavy conversions slow down when the device is hot.
Route
Where the audio goes — for example “USB DAC” followed by the device's own name.
How do I read Read, Compute and Performance?

Read and Compute are milliseconds per second of audio: the time spent fetching it from the source, and the time spent converting it. Performance is 1000 ms divided by their sum — how many times faster than real time the audio is being prepared. Read 31 ms and Compute 101 ms give 7.6×.

Well above 1× is comfortable; near 1× means the device is only just keeping up; below 1× the audio can't be prepared as fast as it plays, and you'll see Dropouts. The heavy conversions at the highest rates are where a slower device gets close — see whether your device can keep up.

Why doesn't the HUD show the DAC's bit depth?

The iOS / iPadOS → DAC row shows only the rate and the channel count the system runs the output at. The system doesn't tell an app the DAC's real bit depth — its own internal format is 32-bit float, which says nothing about the DAC — so the HUD doesn't pretend to. What it can show you is a comparison: if the rate there differs from the rate on the App → iOS / iPadOS line above it, the system is resampling (and the status line will show a red ⚠). It's the same limit as in the proof question: what the DAC physically receives can't be seen from software.

Under the hood

How does PCM upsampling work?

By whole-number (integer-ratio) interpolation — never a fractional resample. Each tier stays inside the file's own rate family, so the ratio is always a power of two: 44.1 kHz → 352.8 kHz is ×8, 96 kHz → 384 kHz is ×4, and so on. Desibel inserts the new sample slots and runs a polyphase FIR (finite-impulse-response) interpolation filter — a windowed-sinc low-pass by default, or the minimum-phase or apodizing variant you choose under Conversion filter — to reconstruct the band-limited waveform on the denser grid. Output is 24-bit integer; no dither or noise-shaping is applied or needed, because the re-quantization error sits about 144 dB down, far below any real recording's noise floor. Since the ratio is exact and same-family, no new frequencies and no pitch or timing error are introduced — it's the same signal, just carried at a higher rate. A file already at or above the tier's target is passed straight through (green ✓), never downsampled. The lowest tier, 88.2 · 96 kHz, only doubles 44.1 / 48 kHz files.

How does Desibel convert DSD to PCM?

DSD is a 1-bit stream at a very high rate (DSD64 is 2.8224 MHz) whose quantization noise is sigma-delta-shaped up out of the audio band. Converting it to PCM — demodulating it — is decimation: a steep low-pass FIR (finite-impulse-response) filter removes that ultrasonic shaped noise, and the stream is downsampled by an exact factor of 32, so DSD64 → 88.2 kHz, DSD128 → 176.4 kHz and DSD256 → 352.8 kHz, at 24-bit integer. The low-pass is the same selectable filter used everywhere else (linear-phase, minimum-phase or apodizing). The ÷32 factor is fixed, but you can cap the result lower with Max PCM rate if your DAC won't lock the natural target. This runs only when you set DSD Output to Convert to PCM; by default DSD plays natively over DoP with no demodulation at all.

How does Desibel modulate PCM to DSD?

In two stages, and only for 44.1-family PCM so the ratio to the DSD rate is a whole number (44.1 kHz to DSD64 is ×64, to DSD256 is ×256). First the PCM is interpolated up to the DSD sample rate in one fused integer-ratio step. Then a high-order (5th-order) sigma-delta modulator — an error-feedback loop that shapes quantization noise up out of the audio band, the same principle a DSD recorder uses — re-quantizes it to the 1-bit DSD stream, which is packed into DoP for the DAC. The loop runs per channel with independent state; its noise-shaping response is tuned for stability (peak gain held near 1.5×), and because a 1-bit loop can sing idle tones on pure tones, DC or digital silence, the comparator is dithered with a small triangular-PDF (TPDF) noise to break them up. One honest consequence: a 1-bit modulator needs headroom, so the input is attenuated by a fixed 6 dB — a deliberate, disclosed property of the conversion, not a hidden volume stage. Because DSD is a 44.1-based rate, 48-family PCM (48 / 96 / 192 / 384 kHz) has no integer path to it and is never modulated — it upsamples or plays native instead.

How does the −6.02 dB attenuation work?

Every PCM sample is shifted right by one bit before it is queued — an integer operation, so the result is exactly half: −6.02 dB (not −6, which is the separate converted-audio setting). There is no filter, no dither and no resampling. For 16- and 24-bit files the shift is exact: nothing is lost, because the bit it moves into was spare. A 32-bit file has no spare bit, so it loses its lowest. It applies to native PCM only, while Upsample and Modulate are both Off; DSD is never attenuated. Because it changes the samples, it's shown in gold ⟳ as PCM −6.02 dB, never as a green ✓.

Metering is unaffected: the figures are measured from the file before the shift.

How does Desibel measure DR, LRA, INT and TP?

The true peak (dBTP) follows the broadcast standard ITU-R BS.1770: the signal is over-sampled — its waveform reconstructed between the stored samples with a polyphase interpolation filter (BS.1770's own published filter) — and then the largest magnitude of that denser reconstruction is taken. That's what catches an inter-sample peak sitting higher than any stored sample. The over-sampling factor scales with the rate to keep the reconstruction around 352.8 / 384 kHz: ×8 at 44.1 / 48 kHz, less as the file's own rate climbs, and none at all at 352.8 kHz and above, where the grid is already that dense. That's twice the density BS.1770 calls sufficient, so the reading rarely under-reads a real peak.

The loudness range (LRA) and the integrated loudness (INT) come from the same broadcast standards. Desibel runs the audio through ITU-R BS.1770 K-weighting — a filter shaped to how we actually hear. INT is the gated loudness of the whole track, in LUFS. For LRA it tracks the short-term loudness over a sliding three-second window and takes the spread between the quiet end (the 10th percentile) and the loud end (the 95th percentile) of those readings, after the gating EBU Tech 3342 specifies to set aside silence and the very quietest passages.

The dynamic range (DR) follows the TT / Pleasurize Music Foundation method. The track is cut into three-second blocks; per channel, the level of the loudest fifth of the blocks (measured 3 dB hotter than a plain RMS, so a full-scale sine reads DR 0) is compared with the second-highest block peak, and the difference in decibels, averaged over the channels and rounded, is the DR.

All four are computed from the file's own samples as the track plays, off to the side of the bit-perfect playback path, which the measurement never touches — a metered stream is byte-identical to an unmetered one. Because they're measured on the source, conversions don't change them. When a track has played through, its figures are stored on the device, keyed by the file's content, so they survive a rename or a move; nothing leaves the device. See the metering question for what the numbers mean in use.

Support

Need a hand?

Questions, bug reports or feedback — send an email and I'll get back to you.

support@desibel.ch