Skip to content
Meringoa music player for Android

Asked & Answered

A few things worth knowing.

Does Meringo play DSD (.dsf / .dff) files?

Meringo is a PCM-first player by design — built for listeners who want total control over their signal chain. The EQ engine processes audio in 64-bit double precision (IEEE 754 binary64), so every band, every gain change, every output adjustment stays mathematically clean end-to-end. That precision is what DSD fundamentally can't offer: it's a 1-bit sigma-delta delivery format, and the moment you apply DSP to it, it must be converted to PCM anyway — at which point you've lost what made it DSD.

In practice, almost every commercial DSD release is a delivery container layered on top of a PCM master. Recording and mastering happens in PCM (often DXD at very high sample rates). A 24/96 or 24/192 FLAC of the same master sounds effectively identical and weighs roughly a quarter as much on disk.

DSD over PCM (DoP) is a real protocol — DSD bits wrapped inside PCM frames over USB Audio — and it's how Meringo is built to hand DSD to an external DAC that can decode it natively: DSD64, DSD128 and DSD256 via DoP, for DACs on a built-in list of DSD-capable models. It doesn't bypass the precision constraint, though: the moment you apply any DSP to the unwrapped stream, you're back to PCM math. What Meringo won't do is force DSD onto hardware that can't take it — the M21 I tune against routes its onboard ES9219MQ DACs from PCM regardless, so on-device DSD would mean a silent conversion behind your back. So the on-device path stays PCM-and-FLAC, and the DoP carriage opens only when a capable DAC is attached.

For practical purposes: if you have .dsf or .dff files in your library, Meringo's scanner indexes them and labels them lossless on the format strip — you'll see them sitting next to your FLACs. Tap a DSD track on the M21 (or another Snapdragon 680-class device) and the route surfaces an unsupported-format error rather than play. Plug in an external USB DAC that decodes DSD natively and is on that list — the iFi hip-dac 2 is one — and the path is built to open; Meringo hands the stream to the DAC and lets its onboard decoder do the work. We have not measured that path on any DAC, so there is no receipt for it yet.

Does Meringo work with Android Auto?

Yes, including voice. Ask for an artist, an album, or just “play some music,” and Meringo plays from your own library — never from a stream, because there is no streaming service here to fall back on. An open-ended request resumes your last queue where it left off; with nothing to resume it plays your recent listening, newest first; a library you have never played starts at the top of the shelf in album order; and before you have added any music at all, the bundled sample plays.

A request that matches nothing you own still starts your own music rather than leaving the car silent. That is deliberate, and it follows Android’s driving guidance: silence after a voice request at speed reads as a breakdown, and the right fallback is your own library — never arbitrary content.

Tapping a track plays its whole list, not that track on its own. Albums and artists each get a shelf at the browse root, as do playlists and Atmospheres once you have any, and shuffle and repeat sit on the media notification as custom actions.

One honest caveat: head units cache the browse tree hard. Straight after an update a stale shelf can play a single track instead of its list until the car refreshes its copy — reconnecting the phone clears it.

Does Meringo do ReplayGain / loudness leveling?

Yes. Meringo reads the ReplayGain tags embedded in your files (track and album) and applies the per-track adjustment so albums level out against each other — no re-encoding, nothing written back to disk. When a track's gain tag is non-zero and the adjustment is actually doing work, the route badge reads “Scaled −X dB” so you know the bits leaving Meringo aren't bit-identical to the file even though the routing is. A 0 dB tag (or no tag) lights the chip green like normal. You can switch it off in Settings — some people do, and that's also fine.

Because normalisation mostly pulls loud modern masters down, a whole library can end up quieter than you'd like. So there's a ReplayGain pre-amp (Settings → ReplayGain, 0 to +12 dB): a fixed boost on top of the per-track adjustment that keeps the album-to-album leveling without living at half volume. It rides only on tracks that carry a gain tag — untagged tracks still play at unity, untouched. Push it far enough and a hot master can clip; the badge shows the net scaling, and your ears will tell you.

My WAV files don't show album artwork. Now what?

Drop a cover.jpg, folder.jpg, front.jpg, or album.jpg next to your audio in the same folder. Case-insensitive; .jpeg and .png variants also work.

Meringo's sibling-image resolver picks them up automatically. WAV doesn't carry embedded artwork the way FLAC does, so the sidecar approach is the right answer there.

What do the gold dot and colored bar on my album covers mean?

Two separate signals from the same Identity Resolver — both shown on the Vault and Cloud album grids.

The gold dot in the bottom-left corner means Meringo has matched the album to a MusicBrainz Release ID (an MBID). That's the canonical "we know which album this is" stamp — once it lands, the album is anchored to a globally stable identifier that survives renames, re-rips, and cross-source duplicates. Cover art, release year, and editorial metadata all hang off that MBID.

The colored bar with a percentage below the album title is a different read: it's MusicBrainz's own search score for the album-title and album-artist query that found the match, and it shifts color with that score. Teal at 90% and above. Dimmed gold below that threshold — a tentative match, usually for releases with messy metadata or unusual edition variants.

Acoustic DNA (the on-device Chromaprint fingerprint) is not what the dot represents, and it is not how the MBID is found — album identity comes from MusicBrainz, looked up by album title and album-artist name. The fingerprint's job is to match your own copies against each other: when the same recording sits both on your device and on your server, the chain that collapses them into one library entry runs MBID first, then ISRC, then a metadata tuple (title + album + album-artist + disc + track), and finally the Chromaprint fingerprint as the catch-all when everything else disagrees. That comparison never leaves your device. Tentative low-confidence matches re-attempt every 90 days; unresolved albums every 30.

For the deeper version, Settings → Field Guide walks through the resolver chapter by chapter, with a swatch legend that maps both bar colors.

Are playlists supported?

Three flavours:

Smart Playlists — rule-based, curated by Meringo. Ultra (Studio Vault on older installs; Hi-Res only), Deep Cuts, which shuffles the tracks past each album's first three, Coffee-Logic moods (Lite Roast through Slow Drip). You can author your own from Home → My Playlists with rule editors for mood, tempo, era, codec, and more.

Imported M3U playlists — if your Vault folders already contain .m3u or .m3u8 files exported from MusicBee, Plex, foobar2000, or any other tool, the scanner reads them on import and surfaces each under Home → Imported Playlists. No import button, no extra step. Both plain M3U and extended (#EXTM3U + #EXTINF) formats are supported. Tracks that can't be found in your Vault stay visible as greyed-out missing rows so you can see exactly which file is gone — re-save the playlist or rescan to re-resolve.

Saved queues — once you've shaped a queue you like, the ✚ in the Queue top bar saves the current order as a smart playlist you can return to.

Jellyfin / Subsonic server-side playlists are on the next-up list. Today you can queue any track from those servers individually through the album or artist views.

How do I install Meringo? Is it on the Play Store?

Yes — Meringo is on the Google Play Store. New users get a 7-day free trial of the full app, then $9.99, once. No subscription, no ads, no premium tier locked behind a second purchase.

If you switch phones or reinstall later, your purchase restores automatically — Google tracks the entitlement against the Google account you bought with. Settings → Subscription → Restore purchase if it doesn't trigger on its own.

If you'd rather just follow along — or chat about audio gear, bug reports, feature ideas — email Adam directly at support@meringo.app.

Why is Meringo "built for FiiO M21"? Does it run on other devices?

Meringo runs on any Android device that meets the minimum requirements (Android 13, API 33). The M21 is what every release is verified and tuned against — the audio engine, scan strategy, and UI density are all calibrated for its Snapdragon 680 / 4 GB RAM target and ~360 dp screen width.

Early users have reported it working well on the Jade Audio JM21 (FiiO's sister-brand entry-level DAP — similar Snapdragon audio substrate). Other DAPs should run it, but compatibility isn't a guarantee until I have hands on a unit.

Is there an iPhone version of Meringo?

No, and the reason is structural. Meringo's claim is a SHA-256 of the bytes it sent to your DAC, and only the code doing the sending can compute that. Apple's Developer Technical Support has said in writing that general USB communication is not possible for an iPhone app, so an iPhone Meringo would have nothing to hash and no receipt to hand you. Apple's words, what an iPhone player can and cannot show you, and what to do instead are at meringo.app/iphone.

Does Meringo ever resample my audio?

Meringo itself never resamples unless you turn on Force Output Sample Rate. It asks for each file's native rate; when the hardware can't take it, the badge says RESAMPLED, and over USB Direct the track is refused rather than converted. Phones default to offload, where Android picks the rate, and Bluetooth always re-encodes.

Settings → Force Output Sample Rate is the opt-in alternative — it pins the AudioTrack to a single rate (88.2, 96, 176.4, 192, 352.8, or 384 kHz) and has Meringo's polyphase Kaiser-windowed sinc resampler convert every track to it in 64-bit double precision before output. The trade-off is named directly on the Now Playing route badge: INTERNAL SRC replaces BIT-PERFECT because resampling is mathematical interpolation, not bit-identity.

Audiophiles who prefer a single stable DAC clock across an entire session over per-track HAL renegotiation choose it. Everyone else leaves it off. On the USB Direct path, if an external DAC is locked to a rate it won't switch to your file's native rate, Meringo refuses the track — a banner names the DAC and the rate it's stuck at — rather than silently resampling it behind your back; USB Direct never resamples. Over Bluetooth the stream is always re-encoded by the OS, so that path can never be bit-perfect and the route badge simply reads Bluetooth.

Are lyrics supported? Where do they come from?

Yes. Tap the ♪ LYRICS pill on the Now Playing format strip and a velvet sheet slides up over the screen. When the track's source returns synchronised lyrics, the active line highlights in Candlelight Gold and the sheet smooth-scrolls to keep it centred; plain-text lyrics render as a scrollable Cormorant block.

Where the words come from depends on where the track lives. For music on your phone, Meringo reads the lyrics your files already carry: a sidecar .lrc with the same name in the same folder, or the lyrics tag inside the file (the LYRICS comment in FLAC and Ogg, USLT in MP3, ©lyr in AAC and ALAC). Nothing leaves the device. If a file has both, timed lyrics beat plain text, and the .lrc breaks a tie. For Jellyfin tracks, Meringo asks the server's /Audio/{id}/Lyrics endpoint — LRC sidecars, SYLT/USLT embedded frames, plain-text .txt sidecars all decode to the same sheet. Subsonic's own lyrics endpoint isn't wired up yet, so Subsonic tracks get words only through Online lyrics, below. A track with no lyrics anywhere lands on the calm no lyrics on file empty state.

By default no third-party lyrics service is involved — Meringo reads your own files, or asks the same server your audio comes from over the same encrypted transport. The one opt-in exception is Online lyrics (off by default): switch it on and, when a track has no lyrics of its own (no .lrc, no lyrics tag, nothing from your server), its title, artist and album — nothing else — are sent to lrclib.net, a community lyrics database, to find matching words (it's in the privacy policy's third-party list). If you scroll the sheet manually, auto-follow pauses for four seconds before resuming so you can read ahead without the cursor yanking you back.

Does Meringo scrobble to ListenBrainz or Last.fm?

ListenBrainz is supported as an opt-in integration (Settings → ListenBrainz). Paste your user token from listenbrainz.org/profile/; the token validates against the server, stores in encrypted Keystore-backed storage, and never logs in plaintext.

A listen counts when you've heard 240 seconds OR 50% of the track, whichever first — the literal ListenBrainz spec. Tracks shorter than 30 seconds never scrobble. Failed submissions persist to a local retry queue and drain via a 30-minute background worker when the network allows. A revoked token gracefully disconnects the integration instead of looping.

Last.fm is not currently supported. The scrobble path is built around the ListenBrainz submit-listens API; the data shapes are similar enough that Last.fm could be added later, but ListenBrainz's community-run, MusicBrainz-anchored posture fits the rest of Meringo's identity layer more naturally — that's where the first slot went.

If I close the app, will I lose my place?

No. Force-stop Meringo, swipe it from recents, reboot the phone. Open the app two days later and the queue is still there — track list, current index, exact position to the second. The lens is where you set it.

Restoration never auto-plays. The app comes back to the same state but waits for your tap before sound resumes — opening the app for an unrelated reason shouldn't fire audio at the bus seat next to you. The standard Android player UX, deliberately.

Can I share or export what I'm seeing on the route badge?

Two share affordances both reach the route badge via the ⤴ glyph.

Long-press the Now Playing format strip to open the Audio Path sheet, then tap the ⤴ in the header. The current readout — bit depth, sample rate, route, device, runtime modifiers — goes to your system share intent as a forum-ready plain-text card. Honest by construction: if the active route is RESAMPLED / TRUNCATED / INTERNAL SRC, the share text says so verbatim. No marketing rewrite at the share boundary.

Settings → Audio diagnostics has the same ⤴ in its header for the longer support-ticket form (build info, device class, identity-resolution stats, recent-events ring buffer). Server URLs are deliberately omitted from the diagnostics export so a public-channel screenshot can't leak your home-server address.

Where can I get the FFmpeg source code Meringo bundles?

Meringo bundles a Meringo-built FFmpeg derivative (libavcodec, libavutil, libswresample) under the GNU LGPL v2.1 or later. The exact build configuration, version, license texts, and a written offer for the source are all available in the app under Settings → Open Source Licenses.

If you'd rather not go through the app, email support@meringo.app and I'll send you the source archive directly.

Longer answers, about Android and USB DACs

→ What Android app should I use with my USB DAC?

→ Does Android resample my music?

→ What Android 14’s “USB lossless” actually means

→ Which USB DACs show the rate they receive?