Nova Master Identity ๐ชช
Release metadata, and an archive name that isn't FINAL_v3
- identity_json
- fingerprint_json
- archive_name
Every music folder on every drive has a master_final_v3_ACTUAL.aiff in it. The naming is a symptom: the file carries the identity of a release in its filename, because nothing else in the pipeline knows what it is.
Nova Master Identity ๐ชช turns a mastering report into release and archive identity - what source, what settings, what came out - and emits a deterministic archive name plus a fingerprint you can validate against later.
How it works
You feed it the report_json from Nova Audio Master. It attaches a publication identity to that report: artist, title, track number, version, catalogue number, ISRC, label, credits, territory, language, explicit flag, plus a target format (target_bit_depth of 24 or 16, target_sample_rate of 48000, 44100 or 96000). Then it computes:
- An archive name, built from track number, artist initials, title, version and target format - sanitised into something filesystem-safe, and deterministic, so re-running produces the same name rather than a new timestamped mess.
- A fingerprint - a JSON record of the source PCM SHA-256, the master PCM SHA-256, a settings hash, the reproduction fingerprint, a report payload hash, hashes of the recording and publication identities, and a hash of the fingerprint record itself.
The report also records lineage: a parent report id and a root report id, so a re-master of a re-master can still be traced back to the take it came from.
Outputs: identity_json (the enriched report), fingerprint_json, and archive_name - which is the one you wire into the validator.
Inputs
Required: report_json and artist_name and track_title. Everything else is optional - and "everything else" is about two dozen fields: artist_initials, track_number, version (Master by default), album_title, catalog_number, isrc, publisher, label, mastering_engineer, mastering_company, copyright_owner, release_year, composer, producer, mix_engineer, project_name, territory, language, explicit_flag, upc_ean, work_id, client_reference, notes, and the two target-format combos.
Do not retype those from a spreadsheet. That's what identity_fields_json is for: wire it from Nova SQLite Reader's identity_json output with that node's column_set set to identity. Every field it carries replaces the widget below it, blanks are ignored, and fields it doesn't mention keep whatever the widgets say. Your catalogue stays the single source of truth and survives a browser reset.
The coercion is worth trusting here: an integer field gets range-checked, and the two combo fields only accept their exact legal strings - so a database value of 24-bit is reduced to 24 rather than trusted, and an unrecognised value leaves the widget alone instead of breaking the graph. Somebody thought about the fact that a database is not a form.
Install
ComfyUI Manager โ Nova Audio Player โ install โ restart. Or:
cd ComfyUI/custom_nodes
git clone https://github.com/NovaFemme/ComfyUI-NovaAudioPlayer.git
Under โถ๏ธ Nova Audio โ ๐๏ธ Mastering Process. Nothing to install, nothing to download - it's all string, hash and dict work over a report you already have.
Where it fits
Nova Audio Master ๐งพ โโ report_json โโโถ Nova Master Identity ๐ชช
โ identity_json
Nova SQLite Reader ๐๏ธ โโ identity_json โโโโโโโโ
โ archive_name
โผ
Nova Final Master Validator
That last wire is the point. The archive folder is full of working names, and filenames lie; the validator matches on identity recorded inside each report instead. Give it the archive name and a selector and it can find the right reference without anyone maintaining a naming convention by hand.
If you're making one track for yourself, this node is overkill. If you're shipping anything - to a distributor, a client, or just to yourself in six months - it's the difference between an archive and a pile.
Inputs (29)
| Name | Type | Default | Description |
|---|---|---|---|
| report_json | STRING | โ | |
| artist_name | STRING | โ | |
| track_title | STRING | โ | |
| artist_initialsopt | STRING | โ | |
| track_numberopt | INT | 11โ999 | โ |
| versionopt | STRING | Master | โ |
| album_titleopt | STRING | โ | |
| catalog_numberopt | STRING | โ | |
| isrcopt | STRING | โ | |
| publisheropt | STRING | โ | |
| labelopt | STRING | โ | |
| mastering_engineeropt | STRING | โ | |
| mastering_companyopt | STRING | Nova Audio Master | โ |
| copyright_owneropt | STRING | โ | |
| release_yearopt | INT | 20261900โ2200 | โ |
| composeropt | STRING | โ | |
| produceropt | STRING | โ | |
| mix_engineeropt | STRING | โ | |
| project_nameopt | STRING | โ | |
| territoryopt | STRING | โ | |
| languageopt | STRING | โ | |
| explicit_flagopt | BOOLEAN | false | โ |
| upc_eanopt | STRING | โ | |
| work_idopt | STRING | โ | |
| client_referenceopt | STRING | โ | |
| notesopt | STRING | โ | |
| target_bit_depthopt | COMBO | 24 | 2 options: 24, 16 |
| target_sample_rateopt | COMBO | 48000 | 3 options: 48000, 44100, 96000 |
| identity_fields_jsonopt | STRING | Field values from a database, normally wired from Nova SQLite Reader's identity_json output with its column_set set to 'identity'. Every field it carries replaces the widget below it, so the catalogue stays the single source of truth and nothing has to be retyped after a browser reset. Blank values are ignored, and fields it does not mention keep whatever the widgets say. |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| identity_json | STRING | โ |
| fingerprint_json | STRING | โ |
| archive_name | STRING | โ |