Nodes/Nova Audio Player/Nova Master Identity ๐Ÿชช
ComfyUI Node

Nova Master Identity ๐Ÿชช

Release metadata, and an archive name that isn't FINAL_v3

By NovaFemmeยทCreated 20 days agoยทUpdated 2 days agoยท 0
Nova Master Identity ๐Ÿชช
    • identity_json
    • fingerprint_json
    • archive_name
    โ—„report_jsonโ–บ
    โ—„artist_nameโ–บ
    โ—„track_titleโ–บ
    โ—„artist_initialsโ–บ
    โ—„track_number1โ–บ
    โ—„versionMasterโ–บ
    โ—„album_titleโ–บ
    โ—„catalog_numberโ–บ
    โ—„isrcโ–บ
    โ—„publisherโ–บ
    โ—„labelโ–บ
    โ—„mastering_engineerโ–บ
    โ—„mastering_companyNova Audio Masterโ–บ
    โ—„copyright_ownerโ–บ
    โ—„release_year2026โ–บ
    โ—„composerโ–บ
    โ—„producerโ–บ
    โ—„mix_engineerโ–บ
    โ—„project_nameโ–บ
    โ—„territoryโ–บ
    โ—„languageโ–บ
    โ—„explicit_flagfalseโ–บ
    โ—„upc_eanโ–บ
    โ—„work_idโ–บ
    โ—„client_referenceโ–บ
    โ—„notesโ–บ
    โ—„target_bit_depth24โ–บ
    โ—„target_sample_rate48000โ–บ
    โ—„identity_fields_jsonโ–บ

    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.

    Categoryโ–ถ๏ธ Nova Audio/๐ŸŽ›๏ธ Mastering Process

    Inputs (29)

    NameTypeDefaultDescription
    report_jsonSTRINGโ€”
    artist_nameSTRINGโ€”
    track_titleSTRINGโ€”
    artist_initialsoptSTRINGโ€”
    track_numberoptINT11โ€“999โ€”
    versionoptSTRINGMasterโ€”
    album_titleoptSTRINGโ€”
    catalog_numberoptSTRINGโ€”
    isrcoptSTRINGโ€”
    publisheroptSTRINGโ€”
    labeloptSTRINGโ€”
    mastering_engineeroptSTRINGโ€”
    mastering_companyoptSTRINGNova Audio Masterโ€”
    copyright_owneroptSTRINGโ€”
    release_yearoptINT20261900โ€“2200โ€”
    composeroptSTRINGโ€”
    produceroptSTRINGโ€”
    mix_engineeroptSTRINGโ€”
    project_nameoptSTRINGโ€”
    territoryoptSTRINGโ€”
    languageoptSTRINGโ€”
    explicit_flagoptBOOLEANfalseโ€”
    upc_eanoptSTRINGโ€”
    work_idoptSTRINGโ€”
    client_referenceoptSTRINGโ€”
    notesoptSTRINGโ€”
    target_bit_depthoptCOMBO242 options: 24, 16
    target_sample_rateoptCOMBO480003 options: 48000, 44100, 96000
    identity_fields_jsonoptSTRINGField 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)

    NameTypeDescription
    identity_jsonSTRINGโ€”
    fingerprint_jsonSTRINGโ€”
    archive_nameSTRINGโ€”