You bounced the mix at 2 a.m. It sounds fine in headphones and thin next to the reference on Spotify. Online "AI mastering" wants the WAV, an account, and a monthly plan. Matchering's idea is older and simpler: take your track, take a song you actually want it to resemble, and copy loudness, frequency balance, peak, and stereo width. No mystery model. Two files in, a mastered target out.
Matchering (sergree/matchering, ~2.7k GitHub stars, GPL-3.0, Python) is open-source audio matching and mastering. It ships as a Python library (pip install matchering), a Docker web app, a CLI, and a ComfyUI node. It is also wired into the UVR5 desktop app. The algorithm matches RMS, frequency response, peak amplitude, and stereo width to the reference, then applies their open Hyrax brickwall limiter. A Benn Jordan listening test (linked from the README) ranked it well when the reference was chosen carefully. That last clause matters more than any star count.
How you actually use it
Target is the mix you want finished. Reference is a commercial (or previous album) track whose envelope you want. Garbage in, garbage out: a whispered folk demo will not become a club master because you pointed at a Skrillex drop.
Library usage is a few lines:
import matchering as mg
mg.process(
target="my_song.wav",
reference="some_popular_song.wav",
results=[
mg.pcm16("my_song_master_16bit.wav"),
mg.pcm24("my_song_master_24bit.wav"),
],
)
Needs Python 3.8+, about 4 GB RAM, libsndfile on Linux, optional FFmpeg if you load MP3. The web image is the self-host path most people want:
docker run -dp 8360:8360 -v mgw-data:/app/data \
--name mgw-app --restart always \
sergree/matchering-web
UI at http://127.0.0.1:8360. Upstream's "Keep the Privacy" wiki exists for a reason: if you bind this to the public internet, you are hosting other people's unreleased music. Put auth and TLS in front, or keep it on a VPN.
Why self-host?
Unreleased stems are the product. Uploading them to a US mastering SaaS is a contract conversation. Running Matchering on a box you control means the WAV never leaves the VLAN. GPL-3.0 is fine for personal and studio use; if you wrap it as a paid mastering API for clients, read copyleft before you productize.
Hosted demos exist (Songmastr, MVSEP, Moises). Self-host when you batch an album, when references are your own catalogue, or when "the file sat on someone else's disk" is a no.
This is not a mixing engineer. It will not fix a bad arrangement. It will not replace a human master for a label delivery. It will get a podcast bed, a Bandcamp single, or album cohesion "close enough" overnight if you pick honest references.
Who it is for
Good fit: bedroom producers matching an album to one "hero" track; small studios that want a consistent first-pass master; anyone scripting a folder of WAVs in Python; ComfyUI audio graphs.
Skip it: if you need Dolby / streaming codec QC; if you refuse to choose a reference; if 4 GB RAM is already spoken for by the DAW on the same machine.
Hosting in Canada
CPU work, not GPU. A modest CloudBox VPS with 4 GB+ RAM, Docker, and a volume for mgw-data is enough. Keep the port off the public internet or behind HTTPS plus login. Canadian residency is about where the unreleased files sit, not about DSP magic. Pair with Navidrome if you want to A/B the result in a private streamer after the bounce.
Bottom line
Matchering is reference matching you can run without mailing a WAV to a vendor. Pick the reference like you mean it, give it RAM, and do not expose 8360 to the world. That is the whole product, and it is a good one.
Talk with Swift Host if you want a quiet Canadian VPS for Matchering (or a private streamer next to it). We are in St. Albert and actually answer the phone.