Hardware-first · Bit-perfect · Deep Velvet
A bit-perfect music player for Android DAPs, built for audiophiles who care about the full signal chain. Plays your local files and your Jellyfin or Subsonic server, with parametric EQ, AcoustID fingerprinting, and a one-time $9.99 lifetime price — no subscription.

Ch. 01 — The Library
Meringo gives you a dual-lens library: a Vault of local FLAC and ALAC files, and a Cloud lens that spans Jellyfin and the Subsonic / OpenSubsonic family — Navidrome, Airsonic, and friends.
Each lens stands on its own — toggle, search, and sort within the world you're in. But when the same recording lives on more than one source, Meringo collapses the duplicate intelligently: Vault wins over Jellyfin wins over Subsonic, matched by MusicBrainz Recording ID, ISRC, a metadata tuple, or an acoustic-fingerprint twin link when the tags disagree. A + Vault or + Cloud chip on every Album page tells you which copies of a track live where. Quality chips on every album — ULTRA, FLAC, MP3 — round out the rack at a glance.

Bring your own server
Two paths into the same shared library. Jellyfin gets first-class treatment. The Subsonic family — Navidrome, Airsonic, Funkwhale, Gonic, Ampache, and every other server that implements the OpenSubsonic API — gets the same fidelity-first connection posture: bit-perfect direct play, no transcoding, password never stored beyond the hash derived from it. URL, username, password, Connect. Set it once.
Connect both at the same time if you have both. The library collapses twin recordings to a single entry across all three sources (Vault + Jellyfin + Subsonic) using the MusicBrainz → ISRC → metadata tuple → Chromaprint match chain. Same dedup rules everywhere.

Jellyfin

Subsonic family
Ch. 02 — The Engine
By default, every sample reaches your DAC at the recording's native rate and depth. No silent format conversion. The system audio mixer operates as a single-client passthrough at unity gain — bits in, bits out — the same condition FiiO's stock player relies on. Bit-perfect on three axes: sample-rate parity, bit-depth parity, single-client passthrough. The Now Playing route badge flips its routing chip off when the path itself can't deliver (HAL resample, DAC depth truncation); per-frame modifiers (ReplayGain scaling, EQ DSP, concurrent system mixing) decorate the badge with explicit suffixes rather than lie. No fake green light.
Meringo bundles its own FFmpeg-derived decoder for FLAC and ALAC — sidestepping the buggy platform decoders some Snapdragon DAPs ship with. The EQ engine runs in 64-bit double precision (IEEE 754 binary64) — biquad coefficients, accumulators, output trim, all Double — so low-frequency, high-Q bands don't accumulate rounding drift across thousands of samples the way single-precision math would. The parametric EQ ships in two phase modes: Minimum Phase (default — zero-latency 10-band biquad cascade) or Linear Phase (FIR convolution with constant group delay, preserving transient shape; 35 ms latency at 44.1 kHz, 8 ms at 192). The route badge flips its IIR-MP tag to FIR-LP when linear phase is engaged.
Prefer a single stable DAC clock across an entire session? Force Output Sample Rate opts in to Meringo's polyphase Kaiser-windowed sinc resampler — every track converted to a fixed 96, 176.4, 192, or 384 kHz in 64-bit double precision before AudioTrack. The badge reads INTERNAL SRC when active, not BIT-PERFECT — because that's what's actually happening.
Plugging in a USB DAC takes Meringo off the AudioTrack road entirely. The app parses the DAC's USB Audio Class descriptors, claims the audio-streaming interface, and ships PCM frames through isochronous transfers directly to the silicon — no AudioFlinger between the bits and the chip. The bit-perfect chip stays gold-teal when the iso pipe is live and the DAC's negotiated rate matches the source file. Verified to date on Fosi DS2 (UAC2 high-speed async, up to 384 kHz / 32-bit), Jcally JM6 Pro (UAC1 high-speed sync, 96 kHz), and Qudelix 5K (UAC1 full-speed sync, 96 kHz / 24-bit). The Apple USB-C → 3.5mm Headphone Jack Adapter is a known awkward fit and falls back to OS routing automatically on phones — the Field Guide explains why on dedicated DAPs the path is different.
Same path. Every device.
Every sample, honestly accounted for.
Receipt
Open Settings → Audio Diagnostics on any Meringo build and the screen reads back exactly what the engine sees: device tier (LEAN / BALANCED / FLAGSHIP), RAM ceiling, CPU core count, USB-DAC presence, manufacturer, model, Android level, ABI. The buffer profile, the visualizer policy, the thermal-aware worker batch limits — every one of those numbers is derived from these values at cold start.
The screenshot is a real readout from a FiiO M21. Quote it in a support ticket and the values are reproducible cold start to cold start — same hardware, same readout, no telemetry round-trip required to produce them. Being honest about the bits begins with being honest about the silicon they're running on.

Verify it yourself
Plenty of players claim bit-perfect output. Meringo is the only one that hands you a cryptographic receipt. Plug in a USB DAC, open Settings → Audio Diagnostics, and arm Verified Capture — Meringo writes every byte the isochronous pipe ships to your DAC and computes a SHA-256 over the whole stream.
Then point it back at the same file. Meringo re-decodes it, lays the PCM out in the identical iso-pipe format, and hashes that. Matching hashes mean nothing — no resample, no requantise, no EQ, no ReplayGain — touched a single bit between the file and the DAC's USB endpoint. Share the receipt; anyone can check it. No other player hands you the proof.
Not a mockup: verified bit-identical across three DACs — Fosi DS2 (16/44.1), Qudelix 5K (24/96), and the Jcally JM6 Pro (16/96) — each with its own shareable receipt.
═════════════════════════ MERINGO · BIT-PERFECT 1.28.5 · Qudelix 5K · 24/96 ═════════════════════════ [Capture] iso pipe → DAC endpoint cb459147…295adf [Source decode] same file, re-decoded cb459147…295adf BIT-IDENTICAL ✓
Real capture · Qudelix 5K · 24/96 · 1.28.5 — reproduce your own in ~3 min
Ch. 03 — The Workbench
A 10-band parametric workbench with a calibrated dB scale, Slot A and Slot B preset slots, and built-in Pink Noise and Sine Sweep test tones. Tune to your IEMs, your headphones, or your room — and save the curve.
Undo, redo, reset, gain trim, file load, library browse. Nothing buried in a menu. Nothing assumed about what your ears want. Every adjustment runs through the same 64-bit double-precision DSP path as the rest of the engine.
Below the graph: Pink Noise and Sine Sweep test signals routed through the active EQ bands. Adjust a slider, hear the test tone reshape in real time — the same headphone-calibration workflow Pro Tools and iZotope expose in studio plugins, one tap deep. Phase Mode toggles between minimum-phase (zero latency) and 1025-tap linear-phase FIR (constant group delay across frequency) without rebuilding your tuning.


Ch. 04 — The Tuning Vault
Every signature you build in the Workbench lands in the Tuning Vault, alongside the baseline. Recall a curve with one tap. Capture a new one with the ⊕ on the graph.
Import 10-band AutoEQ parametric strings or your own CSV / JSON profile files directly. The None (Pure Meringo) baseline is always one tap away — flat response, all bands zeroed, no signature applied. The honest reference.
Your Rack is the organising layer that sits on top of the Vault. List the headphones you actually tune for (brand, model, over- or in-ear); tag each new signature with the pair it was built for; recall every signature for a single headphone in one tap. The per-headphone screen carries an A/B Compare picker — pick two signatures, drop straight into the Workbench with both already cued up into Slots A and B. If a headphone you add has a bundled correction, its page offers it in one tap — a measured preset by oratory1990, bundled offline via the OPRA project — three taps from new headphone in my collection to calibrated tuning loaded.
Flat response. All bands zeroed.
No signature applied.

Ch. 05 — Acoustic DNA
AcoustID fingerprinting scans your library and matches it against MusicBrainz — surfacing release year, genre classifications, editorial biography, and high-res artwork from the Cover Art Archive. Tag-poor files become tag-rich in the background. Cross-source recordings collapse to a single library entry by Recording MBID — JAY-Z and Jay-Z and Shawn Carter all merge to one artist card once MusicBrainz resolves the canonical identity.
The payoff lands on the home screen as Smart Playlists generated from the metadata you didn't have to type. Hi-Res Vault. Deep Cuts. Long plays. Studio Vault. Curation, without a curator — and a mood-driven library navigation primitive that reads from the same fingerprint pass.

Ch. 06 — Sonic Match
Tap the ≋ icon on Now Playing and Meringo searches the Chromaprint fingerprints it has been building in the background, ranking what's playing against the rest of your library by Hamming distance — and surfaces tracks that genuinely sound like the current one. Same harmonic shape, same rhythmic feel. Hold the icon to switch to Acoustic Texture: same energy and structural arc, regardless of key.
Tap any match card and you've launched Sonic Radio — an auto-extending queue of texture-aligned tracks seeded from that match. Five tracks deep in standard mode, eight in Deep Dive. The B-side that lives next door to the long-form ambient piece you forgot you owned. The cover the algorithm spotted before you did.
Deep Dive Mode is the critical-listening posture: pool widens (Sonic Match candidate set 20 → 50), similarity floor rises (only matches ≥ 0.45 survive), Radio tail grows. On the audio side it switches in a defensive buffer profile, detaches the OS Visualizer's PCM tap, and pauses background analysis workers so the M21's cores aren't competing with the engine. A two-layer commitment to listening with intent.
Not a recommendation engine.
A librarian who's been listening.

Ch. 07 — Atmospheres
Coffee-Logic classifies every track in your library by its actual audio character, not by metadata. Five mood classes — Lite Roast (bright, acoustic clarity), Fruity (complex harmonics — jazz, soul, bossa), Medium Roast (balanced indie/electronic), Dark & Bold (heavy low-end, aggressive transients), Slow Drip (atmospheric, long-form) — derived deterministically from each track's Chromaprint fingerprint, technical metadata, and MusicBrainz genre tags.
Stack mood × tempo (Slow 60-100 BPM, Mid 100-140, Fast 140-200, computed by onset autocorrelation on the same PCM extraction) and the library narrows to a coherent listening session. Dark & Bold × Slow for a 2am session. Lite Roast × Mid for a morning walk. Each tile lens-scoped, each surfaced from the same fingerprint pass that powers Sonic Match.
Same file always produces the same tag. No recommendation lottery, no telemetry, no third-party classifier in the loop. The library knows what it sounds like because Meringo listened to it once, on your phone.
Mood navigation that reads the audio,
not the tags.

Critical Acclaim
A small selection of reviews from the discerning gentlemen of r/DigitalAudioPlayer, lightly annotated.
“Ai sloppar.”
Ed.We assume this is Italian for “sloppy.” Adam was, in fact, born in Buffalo. The slop is artisanal.
“Its[sic] funny how every ai generated interface looks the same.”
Ed.Bold claim from a man whose username is the lead character of Star Trek: Voyager with a 4 dropped in.
Built anyway, by Adam Siemaszko — Erie County, NY
Asked & Answered
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 some Android DAPs support it end-to-end. But it requires both the player and the DAC to agree on the wrap/unwrap, and it doesn't bypass the precision constraint: the moment you apply any DSP to the unwrapped stream, you're back to PCM math. Meringo doesn't ship a DoP path; the M21 I tune against routes its onboard ES9219MQ DACs from PCM regardless. Rather than ship a DSD path that wraps or converts behind your back, Meringo commits to the PCM and FLAC route, where the precision you hear is the precision you can control.
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 a [FormatUnsupported] error rather than play. Plug in an external USB DAC that decodes DSD natively — a Chord Mojo 2, iFi Hip-Dac, or similar — and the path opens up; Meringo hands the stream to the DAC and lets its onboard decoder do the work.
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 and AIFF don't carry embedded artwork the way FLAC does, so the sidecar approach is the right answer for those file families.
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 the confidence in that identification, and it shifts color with that confidence. Teal at 90% and above — every signal (album title, artist name, track count, total runtime, fingerprint) lined up cleanly with MusicBrainz. Dimmed gold below that threshold — the resolver landed a tentative match but isn't fully certain, usually for releases with messy metadata or unusual edition variants.
Acoustic DNA (the Chromaprint fingerprint) is one of the paths the resolver uses to land an MBID — not what the dot itself represents. The full match chain 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. 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.
Search is scoped to the lens you're currently viewing — Vault (local files) or Cloud (Jellyfin / Subsonic). If you're on Cloud searching for a local album, you'll get nothing back.
When search comes up empty on the current lens, Meringo offers a one-tap hint pointing at the other one with your query preserved. New installs with local folders but no server default to Vault to avoid the confusion entirely.
Three flavours, all in 1.24.2:
Smart Playlists — rule-based, curated by Meringo. Studio Vault (Hi-Res only), Deep Cuts (long-tail plays), 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.
Currently in Closed Testing on Google Play. The app isn't publicly listed yet — testers are added by email invitation.
If you'd like to try it, send a note to support@meringo.app with the Google account email you'd use on the device, and I'll add you to the test list.
Yes — Meringo is on the Google Play Store. New users get a 7-day free trial of the full app, then a one-time $9.99 unlock for permanent lifetime access. 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 — the Meringo Discord is where the regulars hang out.
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.
Beta testers have reported it working well on the Jade Audio JM21 (FiiO's sister-brand entry-level DAP — similar Snapdragon audio substrate), the FiiO M33 (same Qualcomm audio silicon family), and on modern Android phones from 2022 and newer. Other DAPs should run it, but compatibility isn't a guarantee until I have hands on a unit.
By default, no. Every sample is sent to AudioTrack at the file's native rate and depth, bit-for-bit — that's the bit-perfect path the engine is built around.
Settings → Force Output Sample Rate is the opt-in alternative — it pins the AudioTrack to a single rate (96, 176.4, 192, 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 and the bit-perfect path is unchanged. If a DAC can't accept a file's native rate at all (e.g. a Bluetooth codec capped at 48 kHz), the OS surfaces an error rather than silently downsampling — same posture either way.
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.
Today Meringo reads from Jellyfin's /Audio/{id}/Lyrics endpoint — LRC sidecars, SYLT/USLT embedded frames, plain-text .txt sidecars all decode to the same sheet. Local files and Subsonic tracks land on the calm no lyrics on file empty state today; embedded USLT extraction and Subsonic getLyrics2 are road-map work.
No third-party lyrics service is involved — Meringo asks the same server your audio comes from, with the same encrypted transport. 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.
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 encrypted 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.
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.
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.
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.
Closed Testing · Google Play
Meringo is in Closed Testing on Google Play — invitation only. Email me with the Google account you'd use on the device and I'll add you to the test list. As a solo developer, I read and reply to every message personally.
Reach Adam directly at support@meringo.app · or in the Discord
Available now · Google Play
Meringo runs on any Android device meeting the minimum requirements (Android 13, API 33). Tuned for the FiiO M21 target.
Support: support@meringo.app · community: Discord
Legal
EFFECTIVE DATE: May 26, 2026 · MERINGO LABS LLC
First run · disclosed before you tap
Before any CTA loads — before you connect to Jellyfin, Subsonic, or pick a local folder — Meringo lays out exactly what it does with your data. Your Data Stays Yours (local-first storage). The Acoustic DNA Scan (AcoustID fingerprinting, opt-in). External Services (MusicBrainz + Cover Art Archive for editorial metadata). Crash Reporting (Sentry, opt-in with an explicit toggle, off by default). Software As-Is (a solo developer's honest disclaimer). The five headings on the screen to the right correspond one-to-one with the sections of the policy below. Same content, same wording, same posture.

I do not run servers that collect your personal data. I do not run analytics pipelines. Server credentials are encrypted on-device using Android Keystore; your music library and preferences live in private app storage; crash reporting through Sentry is opt-in (off by default, with the consent toggle on the first-run screen) and redacts known auth parameters before transmission.
Meringo is a local-first music player published by Meringo Labs LLC. I do not operate servers that collect your personal data. I do not run analytics pipelines. I built Meringo because I wanted a more refined, high-fidelity way to experience a music library — not to harvest data.
This policy describes what minimal data interactions the application has, and exactly why they exist.
Meringo collects no personal data on my servers. On your device, the app stores:
None of this data is transmitted for advertising or tracking purposes. When crash reporting is enabled (off by default; opt in on the first-run screen), anonymised error reports may be sent to Sentry — see the Crash Reporting section below.
The Identity Resolver uses AcoustID (libchromaprint) to generate an acoustic fingerprint of your audio files. This fingerprint is a compact mathematical representation of the audio signal — not an audio recording.
Fingerprints are submitted to the AcoustID public API solely to retrieve a MusicBrainz recording ID. No personal information, file names, or listening history is attached to these submissions. The AcoustID service is subject to its own privacy policy at acoustid.org.
Meringo uses Sentry (sentry.io) for crash and error reporting. This helps me identify and fix stability problems without you having to file a bug report manually.
Crash reports are opt-in. New installs see a consent toggle on the first-run screen (off by default); until the user makes a choice and taps a Connect button, Sentry is held in a no-op state and zero crash data leaves the device. The same toggle is available afterwards under Settings → Privacy → Crash reporting. Disabling it at any time stops Sentry from running for the remainder of the session; it will not be started on the next launch either.
Existing installs from before this consent flow (where the user had already completed onboarding under the previous default-on behavior) are treated as having implicitly consented and keep their existing crash-reporting preference. The toggle remains available to flip off whenever they like.
A crash report contains:
Crash reports do not contain your music library, file paths, server credentials, listening history, or any content from your device. Known authentication parameters in server URLs — Jellyfin api_key, OpenSubsonic apiKey, and the Subsonic legacy auth quartet (t, s, u, p) — are redacted from any URL captured in a crash report before it is transmitted.
When crash reporting is enabled, Meringo also reports release-health signals to Sentry — anonymous session start/stop events (used to compute crash-free-session and crash-free-user rates) and ANR (app-not-responding) events. These carry no personal data and follow the same opt-in and redaction rules as the crash reports above.
Sentry's own privacy policy is available at sentry.io/privacy.
Meringo integrates with the following public, read-only APIs to provide editorial content:
api.listenbrainz.org. No data is sent until you've affirmatively connected. Token is stored encrypted on-device using Android Keystore; pausing or disconnecting in Settings stops submission immediately. Failed submissions persist to a local retry queue and never leave the device until the network allows them.Content retrieval requests carry no personal identifiers. Crash reports are governed by the terms described in the Crash Reporting section above. Use of all third-party services is subject to their respective privacy policies.
Server credentials are encrypted on-device using the Android Keystore system (EncryptedSharedPreferences). Non-sensitive preferences are kept in the app's private DataStore, accessible only to Meringo. The local Room database is stored in the app's private data directory, inaccessible to other apps without root access.
Meringo declares only the permissions required for its operation:
maxSdkVersion=32)Because Meringo does not collect personal data on any server I control, there is no centralized profile for me to provide, correct, or delete on my end. All data the app holds is stored on your device and remains under your direct control.
Right to access (GDPR Art. 15, CCPA § 1798.110). All data Meringo holds about you is on your device: the local library database, encrypted server credentials, app preferences, and any cached metadata. You can inspect it directly through Android's app-data tools, or open the JSON dump produced by the Export my data feature described below.
Right to erasure (GDPR Art. 17, “right to be forgotten”). Uninstalling Meringo, or using Android Settings → Apps → Meringo → Storage → Clear all data, deletes every byte the app has on your device. Because no copy lives on my servers, this completes the erasure.
Right to portability (GDPR Art. 20). Tap Settings → Privacy → Export my data to write a human-readable JSON file of your EQ presets, smart playlists, granted folder URIs, and every non-sensitive preference to a location of your choice. Encrypted credentials and the library database are excluded by design and documented in the export manifest. Your music files themselves remain in the formats you provided — the app does not lock them in proprietary containers.
Right to object & opt out. Crash reporting can be disabled at any time under Settings → Privacy → Crash reporting. AcoustID fingerprinting is opt-in via Settings → Library → Identify unknown albums. ListenBrainz scrobbling requires you to provide a token before any data is sent.
Right to lodge a complaint. EU/EEA users may lodge a complaint with their national data-protection authority. California residents may contact the California Attorney General. For questions about this policy or to exercise any right above, write to support@meringo.app.
The application is provided as-is. As a solo developer, I work hard to keep Meringo stable and respectful of your privacy, but I cannot guarantee it will be free of defects.
Meringo is an independent project and is not affiliated with, endorsed by, or sponsored by any third-party service, project, or hardware manufacturer referenced on this page or in the application. All product names, logos, and brands are property of their respective owners and are used here for descriptive, interoperability, and identification purposes only (nominative fair use).
Quoted reviews appearing elsewhere on this page are reproduced as public commentary under fair use, attributed to their original authors, and accompanied by editorial response. They are not endorsements.
Meringo bundles a Meringo-built decoder derived from FFmpeg (libavcodec, libavutil, libswresample) statically linked for ALAC and FLAC playback. It is used under the terms of the GNU LGPL v2.1 or later, with no GPL-licensed components enabled in the build.
Full attribution, license texts, build configuration, and the written offer of source availability are bundled into the application under Settings → Open Source Licenses. The remaining open-source dependencies (Media3, Coil, AndroidX, Hilt, Room, and others) are enumerated in the same screen, generated automatically from the build manifest.
Questions about this privacy policy or Meringo's data practices? Write to me directly:
support@meringo.appLegal
EFFECTIVE DATE: May 26, 2026 · MERINGO LABS LLC
Meringo is software I built. It is licensed to you for personal use, comes with no warranty, and you agree to a few common-sense restrictions about how you use it. The full text is below.
By downloading, installing, or using the Meringo Android application (“Meringo” or “the app”) or the website at meringo.app, you (“you” or “user”) agree to these Terms of Service (“Terms”). If you do not agree, do not use the app or the site.
These Terms form a binding contract between you and Meringo Labs LLC (“Meringo Labs,” “we,” or “I”), a limited liability company organized under the laws of New York, United States.
Subject to your compliance with these Terms, I grant you a personal, limited, revocable, non-exclusive, non-transferable, non-sublicensable license to install and use Meringo on devices you own or control, for your personal, non-commercial enjoyment of music you have a legal right to play.
This license does not transfer ownership. The Meringo source code, brand, design, and trade dress remain the property of Meringo Labs LLC.
You agree not to:
Meringo is a local-first player. You provide the music files on your device, the Jellyfin / Subsonic / compatible server you connect to (if any), and the ListenBrainz token you provide (if any). You are responsible for ensuring you have a legal right to possess and play the music in your library. I make no claim of ownership over your music, server, credentials, or any data the app reads from your device.
Meringo integrates with third-party services as enumerated in the Privacy Policy: MusicBrainz, Cover Art Archive, AcoustID, ListenBrainz, Wikipedia, Sentry, and any user-configured media server. Your use of those services is subject to the terms and privacy policies of each provider. I am not responsible for the availability, accuracy, or conduct of any third-party service.
Meringo is currently in closed testing on the Google Play Store. The app may contain bugs, change behavior, or be modified at any time without notice. Beta users acknowledge that they are using pre-release software and accept the increased risk of defects.
Meringo is distributed via the Google Play Store. New users receive a seven (7) day trial of the full application beginning at first launch. After the trial expires, continued use requires a one-time in-app purchase ("Meringo Lifetime") for $9.99 USD, or local-equivalent pricing set by Google Play. The Lifetime purchase grants you a perpetual, non-exclusive, non-transferable, revocable license to use Meringo on devices signed into the Google account that completed the purchase, subject to these Terms.
Refunds, chargebacks, and revocation of purchase are handled by Google Play in accordance with Google's policies. If Google revokes your purchase for any reason — including refund, chargeback, or fraud determination — your license terminates automatically and the app returns to a locked state on next launch.
Restoration of a prior purchase is supported via Settings → Subscription → Restore Purchase, or automatically on first launch of a fresh install signed into the original Google account.
“Meringo,” the wordmark, the waveform logo, the Field Guide, the Full Manual, and the visual design of the app and website are the intellectual property of Meringo Labs LLC, protected by copyright and trademark law. Third-party trademarks are used nominatively, as detailed in the Privacy Policy's Trademarks & Attribution section.
THE APP AND THE WEBSITE ARE PROVIDED “AS IS” AND “AS AVAILABLE,” WITHOUT WARRANTIES OF ANY KIND, WHETHER EXPRESS, IMPLIED, OR STATUTORY. TO THE FULLEST EXTENT PERMITTED BY LAW, MERINGO LABS LLC DISCLAIMS ALL WARRANTIES, INCLUDING MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
I do not warrant that the app will be uninterrupted, error-free, or compatible with every device, every Android version, or every audio file. I do not warrant that bit-perfect playback claims hold true under all device, OS, and routing combinations; the Field Guide and route-badge UI describe known caveats.
Some jurisdictions do not allow disclaimer of implied warranties; in those jurisdictions the foregoing applies to the maximum extent permitted by law.
TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, IN NO EVENT WILL MERINGO LABS LLC OR ITS OWNERS BE LIABLE FOR ANY INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL, EXEMPLARY, OR PUNITIVE DAMAGES, OR ANY LOSS OF DATA, REVENUE, PROFITS, OR GOODWILL, ARISING OUT OF OR IN CONNECTION WITH YOUR USE OF THE APP OR THE WEBSITE, WHETHER BASED ON WARRANTY, CONTRACT, TORT (INCLUDING NEGLIGENCE), OR ANY OTHER LEGAL THEORY.
IF THE FOREGOING LIMITATION IS HELD UNENFORCEABLE, MERINGO LABS LLC'S TOTAL CUMULATIVE LIABILITY ARISING OUT OF OR RELATED TO THESE TERMS WILL NOT EXCEED THE GREATER OF (A) THE AMOUNTS YOU HAVE PAID TO MERINGO LABS LLC IN THE TWELVE (12) MONTHS PRECEDING THE CLAIM, OR (B) ONE HUNDRED U.S. DOLLARS ($100).
You acknowledge that Meringo is offered at a one-time low purchase price relative to comparable professional audio software, and that these limitations are essential to my willingness to make the app available as a solo-developer product.
You agree to defend, indemnify, and hold harmless Meringo Labs LLC, its members, and contributors from and against any claims, damages, losses, and expenses (including reasonable attorneys' fees) arising out of (a) your use of the app, (b) your violation of these Terms, (c) your violation of any third-party right — including any copyright, property, or privacy right — in connection with the music you play through the app, or (d) any content or instruction you transmit through the app to a third-party service.
Meringo Labs LLC respects the intellectual property rights of others and complies with the Digital Millennium Copyright Act. If you believe content available through or in connection with Meringo infringes your copyright, send a notice satisfying 17 U.S.C. § 512(c)(3) to:
DMCA Agent — Meringo Labs LLC
69 Stillwell Ave
Kenmore, NY 14217
United States of America
Email: support@meringo.app
I may suspend or terminate your license to use the app at any time, with or without notice, for any reason, including a violation of these Terms. You may terminate at any time by uninstalling the app. Sections 7 (Intellectual Property), 8 (Warranty Disclaimer), 9 (Liability), 10 (Indemnification), 13 (Governing Law), and 14 (Dispute Resolution) survive termination.
These Terms are governed by the laws of the State of New York, United States, without regard to its conflict-of-laws principles. The United Nations Convention on Contracts for the International Sale of Goods does not apply.
Before filing a claim, you agree to attempt informal resolution by emailing support@meringo.app with a description of the dispute. We will attempt to resolve the matter within thirty (30) days.
If informal resolution fails, any dispute arising out of or related to these Terms or your use of Meringo shall be resolved exclusively in the state or federal courts located in Erie County, New York, and you consent to personal jurisdiction in those courts. You and Meringo Labs LLC each waive any right to a jury trial.
I may update these Terms from time to time. Material changes will be noted by updating the Effective Date at the top of this page and, where practicable, by an in-app notice or release-notes mention. Continued use after a change takes effect constitutes your acceptance of the revised Terms.
If any provision of these Terms is held invalid or unenforceable, the remaining provisions will continue in full force and effect, and the invalid provision will be modified to the minimum extent necessary to make it valid and enforceable while preserving the parties' intent.
These Terms, together with the Privacy Policy, constitute the entire agreement between you and Meringo Labs LLC regarding the app and supersede any prior agreements.
Legal
In accordance with §5 of the German Telemediengesetz (TMG) and equivalent EU disclosure requirements.
Meringo Labs LLC
69 Stillwell Ave
Kenmore, NY 14217
United States of America
Adam Siemaszko, Member
Email: support@meringo.app
Adam Siemaszko (address as above), in accordance with §18(2) of the Medienstaatsvertrag (MStV).
The European Commission provides a platform for online dispute resolution (ODR) at ec.europa.eu/consumers/odr. Meringo Labs LLC is not obligated and not willing to participate in dispute resolution proceedings before a consumer arbitration board.