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 | Nova Audio Master's report_json. The identity and the fingerprints are bound to this report. | |
| artist_name | STRING | Artist or band name, as it should appear on the release. | |
| track_title | STRING | Title of this track. Also used in the archive file name. | |
| artist_initialsopt | STRING | Short form of the artist name for the archive file name, e.g. NA. Empty: derived from artist_name. | |
| track_numberopt | INT | 11โ999 | Position on the album. Leads the archive file name as two digits, e.g. 02. |
| versionopt | STRING | Master | Which version this is, e.g. Master, Radio Edit, Instrumental. Part of the archive file name. |
| album_titleopt | STRING | Album or release title. | |
| catalog_numberopt | STRING | Your label's catalogue number for the release, e.g. NOVA-001. | |
| isrcopt | STRING | International Standard Recording Code: 12 characters, e.g. US-S1Z-26-00001. Hyphens are optional. | |
| publisheropt | STRING | Music publisher, if any. | |
| labelopt | STRING | Record label, if any. | |
| mastering_engineeropt | STRING | Who mastered the track. | |
| mastering_companyopt | STRING | Nova Audio Master | Studio or tool credited with the mastering. |
| copyright_owneropt | STRING | Owner of the sound recording copyright (the name only, without the year or the symbol). | |
| release_yearopt | INT | 20261900โ2200 | Year of release, four digits. |
| composeropt | STRING | Who wrote the music. Separate several names with commas. | |
| produceropt | STRING | Who produced the track. | |
| mix_engineeropt | STRING | Who mixed the track. | |
| project_nameopt | STRING | Your own name for the project or session this master belongs to. | |
| territoryopt | STRING | Where the release is cleared for, e.g. Worldwide, or a list of country codes. | |
| languageopt | STRING | Language of the lyrics, e.g. English, or an ISO code such as en. Empty for an instrumental. | |
| explicit_flagopt | BOOLEAN | false | On when the lyrics are explicit. Recorded in the identity; nothing is changed in the audio. |
| upc_eanopt | STRING | Barcode of the release: a 12-digit UPC or a 13-digit EAN, digits only, e.g. 012345678905. | |
| work_idopt | STRING | Identifier of the composition, e.g. an ISWC such as T-123.456.789-0. | |
| client_referenceopt | STRING | The client's own reference or job number, if you master for someone else. | |
| notesopt | STRING | Free text kept with the identity record, e.g. a mastering note. | |
| target_bit_depthopt | COMBO | 24 | The bit depth the release is meant to have. Recorded only: this node converts nothing. The save node decides what is written. |
| target_sample_rateopt | COMBO | 48000 | The sample rate the release is meant to have, in Hz. Recorded only: this node does not resample. |
| identity_fields_jsonopt | STRING | Field values from a database, as a JSON object. Wire Nova SQLite Single Row Filter's single_row_json (rows from Nova Dynamic SQLite Browser), or the deprecated Nova SQLite Reader's identity_json. Columns are matched by name: Title, Artist, Album, ISRC and so on, or this node's own field names. Every field it carries replaces the widget of the same name, 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 | โ |