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
- Install Desibel and connect your USB DAC.
- Add your music: tap + and pick a source — a NAS, a cloud drive, or a folder on the device.
- 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
- 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.
- Want to upsample PCM? Settings › PCM Playback › Upsample to a higher rate.
- Want DSD output from your 44.1 kHz-family PCM too? Settings › PCM Playback › Modulate PCM to DSD.
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; a few opt-in conversions exist for matching a particular DAC, each off unless you turn it on and always labeled when it runs — never silent.
Lossless & uncompressed PCM
WAV, FLAC, ALAC and AIFF play bit-perfect — the exact integer samples, at the file's native sample rate.
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
Optional output-matching modes — DSD↔PCM, or PCM upsampling — for a DAC that prefers a certain rate. Every one is off by default and, when on, badged 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 badge 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 badge 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 → Analyze a recording.
Every track shows you exactly what's happening — the badge names the lock; the detail line traces the file to your DAC:
The label names the format or the transform; the symbol and colour show whether anything left the bit-perfect path — green ✓ PCM is a native PCM file on a USB DAC, gold ⟳ marks an opt-in conversion you turned on that then locked (DSD→PCM, PCM UPSAMPLED or PCM→DSD), red RESAMPLED BY iOS / iPadOS (⚠) is the system coercing the rate, and red NON-USB OUTPUT (⚠) is a route that can't be bit-perfect at all — Bluetooth, AirPlay or the built-in speaker.
And here is that proof. 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 ⟳ DSD→PCM badge, never a silent downgrade. Those are the two DSD output modes; a shared conversion filter applies when it converts.
Output matching · optional
Upsample or modulate, 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 a few opt-in conversions for matching your DAC. Every one is off by default, and when you switch it on the track plays through the badge in gold ⟳ — 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.
Upsample PCM
Integer-upsample any PCM file to a higher rate in its own family (44.1 or 48), up to 352.8 / 384 kHz. A file already at or above the target passes through untouched (green ✓); otherwise it's badged ⟳ PCM UPSAMPLED. If it reconstructs a peak past full scale, the optional peak readout shows it — with optional headroom to prevent it.
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. Badged ⟳ 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.)
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 → Browsing) and each track's peak and true peak appear as it plays, in red when a peak reaches full scale. Prefer to leave room? An optional Attenuation setting (−1, −3 or −6 dB) lowers the upsampled level just enough to keep those peaks under the ceiling. 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. A badge 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 play a track or a whole album 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.
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.
Formats
What it plays.
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.
| Format | Tested bit depth | Max tested rate |
|---|---|---|
| WAV | 24-bit | 768 kHz |
| AIFF | 24-bit | 768 kHz |
| FLAC | 24-bit | 384 kHz |
| ALAC | 24-bit | 384 kHz |
| DSD .dsf / .dff | 1-bit | DSD256 |
| SACD .iso | 1-bit | DSD64 |
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.
Actual screenshots from iPhone and iPad.
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.
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 opt-in output-matching conversions — DSD→PCM, PCM upsampling, and PCM→DSD — and each is off unless you turn it on in Settings and always badged 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 the ⚠ RESAMPLED BY iOS / iPadOS badge 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 ⚠ NON-USB OUTPUT badge tells you, so it's never mistaken for untouched.
What does the status badge tell me?
The truth about each track, read on two simple axes. The label names the locked state: PCM or DSD when the DAC is locked to the file's native rate; one of the gold conversion labels when an opt-in conversion is on — DSD→PCM, PCM UPSAMPLED or PCM→DSD; RESAMPLED BY iOS / iPadOS (⚠ — the system had to resample; it still plays, you're just told); or NON-USB OUTPUT (⚠ — you're not on a USB DAC, so the output can't be bit-perfect at all: Bluetooth, AirPlay or the built-in speaker). The symbol is whether anything left the clean bit-perfect path: ✓ (green) means untouched, ⟳ (gold) means a disclosed conversion you turned on, and ⚠ (red) means the audio left that path — iOS or iPadOS resampled the rate, or you're on a route that can't be bit-perfect. A detail line under the badge traces the file to your DAC (for example DSD64 → PCM 88.2 kHz), so you're never left guessing. One thing the badge doesn't cover is level and loudness — how hot the track is, and how much its loudness varies; that's a separate, optional readout you can switch on under Settings → Browsing (see the metering question).
What do the dBFS, dBTP and LU numbers under each track mean?
They're an optional metering readout, off until you switch on Show metering under Settings → Browsing. With it on, each track shows three figures as it plays — held for the folder until you play another: its peak in dBFS and its true peak in dBTP (each the louder of the two channels), and its loudness range in LU.
dBFS is the loudest actual sample — how close the stored samples come to digital full scale (0 dBFS). dBTP is the loudest point of the reconstructed waveform, including the peaks that fall between samples. The two can differ, and that's the point: on a loud master a track can sit at −0.1 dBFS — no sample clipping — while its true peak reconstructs to +0.8 dBTP, a real peak 0.8 dB past full scale that your DAC has to reproduce but a plain sample meter never sees. The colour is the warning — the figures read grey with headroom to spare, normal as they climb, orange within a decibel of full scale, and red at or above it. A red true peak is the clip mark.
The third figure, in LU (loudness units), is the track's loudness range — how far its loudness swings between the quietest and loudest passages, measured the way broadcasters do (EBU R128). A large number means wide dynamics, quiet moments sitting well below the loud ones; a small one means the track has been levelled flat, the way a heavily compressed master is. It carries no warning colour — unlike a peak, a range is neither good nor bad in itself, it just says how dynamic the track is — and it appears after a few seconds, once enough has played to measure, refining as the track goes on.
Two things surprise people. On high-rate files (96 kHz and up) the two peak figures usually match — the sample grid is already dense enough to land on the true peak, so there's nothing extra between samples to find; intersample overs are mostly a 44.1 / 48 kHz thing. And upsampling a hot track can genuinely clip it: the reconstruction turns those in-between peaks into real samples, which hit the ceiling and clamp — so the same track that reads −0.1 / +0.8 played native reads 0.0 / 0.0 in red once upsampled. If you upsample loud masters, the Attenuation setting (Settings → PCM Playback, −1 / −3 / −6 dB) gives those peaks the room to stay under the ceiling.
The readout covers only the PCM Desibel actually sends — native PCM, upsampled PCM, and DSD set to Convert to PCM. Native DSD over DoP isn't measured: it's a 1-bit stream, not PCM, so there's no dBFS or loudness figure to show.
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.
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. Play a single track or a whole folder as a queue. Nothing to index, nothing to sync.
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" badge, 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; badged ⟳ 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 badge, 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 ⚠ RESAMPLED BY iOS / iPadOS 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 (⟳ 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 and PCM→DSD options?
They're optional output-matching conversions, 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 (up to 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.
This is output matching for your DAC, 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 badged gold ⟳ (PCM UPSAMPLED or PCM→DSD) — 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 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.
Can upsampling clip a loud track?
It can, and Desibel shows you when. 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 → Browsing) and you'll see it: a track reading, say, −0.1 dBFS / +0.8 dBTP played native reads 0.0 / 0.0 in red once upsampled.
To give those peaks room, switch on Attenuation under Settings → PCM Playback (−1, −3 or −6 dB): it lowers 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. (Only PCM upsampling reconstructs new peaks this way; native playback, DSD→PCM and PCM→DSD don't add them.)
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, or upsampling 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 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.
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 badge 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 → 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 (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 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 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 the analyzer.
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 screenshots above). Use PRNG sequence or Walking-bit for a true sample-for-sample byte compare — the proof that every bit arrived intact. (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.)
For these signals, capture the output and check it under Settings → 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 or PCM→DSD conversion 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.
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.
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 Desibel measure peak, true peak and loudness range?
The peak (dBFS) is just the largest sample value in the track so far, in decibels relative to digital full scale — the loudest actual sample. 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 — which matters because it doubles as the clip mark.
The loudness range (LU) comes from the same broadcast standards. Desibel runs the audio through ITU-R BS.1770 K-weighting — a filter shaped to how we actually hear — 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. That spread is the loudness range.
The two peaks are the louder of the two channels; the loudness range combines both. All three are computed as the track plays, on the exact samples that are sent to the DAC — off to the side of the bit-perfect playback path, which the measurement never touches. Only the PCM Desibel actually outputs is measured (native PCM, upsampled PCM, and DSD set to Convert to PCM); native DSD over DoP is a 1-bit stream with no PCM samples and no clean full-scale reference, so it isn't metered. 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.