Mtx 0.2.0 - #1
Merged
Merged
Conversation
Implements the change requests raised in the 2026-08-29 Listening Room
session, verified against purchased audio rather than fixtures.
R1 --stems reaches the digest. A ## STEMS section, one row per stem
(lvl_vs_mix, lufs_delta, LUFS-I, crest, crest10s, tilt(R2), side/mid,
corr, sub%, air%), the separation model named in the block and in the
header, and the caveat carried as a FLAGS line. The budget grows by 4 KB
when the table renders: those numbers exist nowhere else in the
paste-able output, and analysis.json never leaves the machine.
R2 --blind writes the digest without printing it and prints predict.md, the
headline as a form with FLAGS and METHOD intact and no values anywhere.
DETAIL and CORPUS ROW are omitted from the sheet because both restate the
headline. mtx predict --check scores a filled sheet: signed error,
absolute error, interval hit or miss, sorted by |error| x confidence.
Arithmetic only; it never says whether a prediction was good.
R3 The corpus row gains PSR min, PSR median, DR14, Crest (loudest 10s) and
an mtx run line (version / schema / profile / sha256, plus the stem model
when stems were separated), and corpus_row.json is written alongside the
digest: the same row already typed, keyed by property name, unmeasurable
fields null rather than guessed.
R4 batch --csv-schema corpus renames the columns a corpus database has
properties for, and carries mtx_run. CSV values are rounded to 3 decimals;
analysis.json keeps the unrounded number. A corpus run under --profile
quick now warns that the True peak column will be empty in every row.
R5 --sections (by group or block name) and --digest-budget. An unrecognised
section name is an error listing the valid ones, never a silent no-op.
A budget below the never-dropped sections is reported as not met rather
than met by dropping provenance.
R6 Band-envelope correlation reaches the digest as off-diagonal
min/median/max/mean plus the two least-correlated pairs and the most
correlated pair; the full 8x8 matrix stays in the JSON. Priority 3, not 5:
234 bytes for the clearest broadband-vs-multiband tell in the tool should
not die alongside the 700-byte processing block.
R7 mtx validate-dr <file> --published <DR> records this build's DR14 against
a published rating for a track the user owns. FLAGS and METHOD then report
what the record says -- [validated against N track(s)], [disputed], or
[unverified] -- instead of a disclaimer that stays true forever.
Also fixes a crash found on a purchased file with non-Latin-1 tags:
subprocess.run(..., text=True) decodes with the machine's locale codec, so
ffprobe output on such a file killed the reader thread, proc.stdout came back
None, and json.loads(None) raised an uncaught TypeError. Every helper call now
states encoding="utf-8", errors="replace", run_ffprobe warns on empty output,
and a test fails if any future call site omits an explicit encoding.
params.profile.skipped_in_quick no longer lists stems: separation is opt-in
through --stems at either profile and was never a profile switch. The params
block is what makes a number traceable, so it cannot be the part that is wrong.
Schema 1.1.0, additive only: dr14.validation.record, and the off-diagonal
summary and extreme pairs under band_envelope_correlation.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The output directory was named after the file, so a track ripped as
"07. Man I Need.flac" landed in mtx_out/07. Man I Need/ and told you
nothing about what it held.
Take the name from the embedded title and artist tags instead, falling
back to the filename when a file carries no title. Multi-value artist
tags (";", NUL or " / " joined) collapse to "A, B" with accent-folded
deduplication, and the result is sanitised for Windows path rules: no
reserved characters, no trailing dot or space, 150 characters at most.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.