Uncompose Compare
Honest, local-first A/B listening for two audio files.
When you have produced two derived versions of a piece of audio — two separations, two masters, two renders — there is no honest way to judge them in an ordinary player: switching files loses your position, hides small differences behind resync gaps, and leaves no trace of what you heard or decided. Uncompose Compare loads exactly two files, lets you listen to the same moment in either one with zero drift, loop the region where the difference lives, write down what you hear as you hear it, pick a winner, and keep a trustworthy record of the whole evaluation.
Everything runs locally: your audio never leaves your machine, and you are responsible for having the rights to the audio you process.
Status
Pre-v0.1: the first release is being built in the open on the
issue tracker, with decisions this
repo owns recorded in docs/adr/. The install line below goes live with the
v0.1.0 tag. See the release notes and
known limitations for what v0.1 does and does not do.
Install
Uncompose Compare is part of the Uncompose family.
It installs as the uncompose-compare command and is also reachable through the
uncompose dispatcher as uncompose compare:
# placeholder — goes live with v0.1.0
uncompose compare a.wav b.wav
That loads a.wav and b.wav as candidates A and B and opens the listening workbench in
your browser.
Command line
uncompose-compare <A> <B> [--port <PORT>] [--out <PATH>] [--cache-max-bytes <BYTES>]
uncompose-compare cache clear
--portpins the loopback port instead of taking an ephemeral one.--outwrites the concluded comparison record to this path instead of<ULID>.jsonin the directory you ran from. An existing destination is refused, never overwritten.--cache-max-bytescaps the playback-proxy cache, pruned least-recently-used at startup. It defaults to 2 GiB — the flag is here because a cache that can grow to gigabytes of your disk should be yours to bound.cache cleardeletes every cached proxy and reports what it removed.
Release files for uncompose-compare 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| uncompose_compare-0.1.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl | Python 3 | none | Linux glibc 2.17+ x86-64 | Details |
Release files / uncompose_compare-0.1.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | uncompose_compare-0.1.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 2.5 MB |
| Tags | Linux glibc 2.17+ x86-64 Python 3 |
|
SHA-256 checksum How to use checksums |
3776a1adc1938754f38e41dde0927267d24f4b77803fdaa0bc116e226dccd88e
|
|
BLAKE2b-256 checksum How to use checksums |
a86eebb941b408e00b52b881e265ae2db2c75f3a4cb1e371170c8f5790887000
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 12, 2026.
Transparency log