Nodes/Comfyui_URN_AudioTools/URN Audio Style Selector
ComfyUI Node

URN Audio Style Selector

Pick music tags by clicking instead of retyping a comma-separated mess

By Clivey1234·Created 2 days ago·Updated a day ago· 4
URN Audio Style Selector
    • Final_Styles
    ◄Generated_Styles—►

    Music generation in ComfyUI runs on style strings: dreamy, female vocal, 90 bpm, warm analog production. URN Audio Lyrics will hand you a decent one built from MusicBrainz tags, but you'll want to add "lo-fi", remove "live", and try it again - which means editing a long comma-separated string inside a tiny text widget, over and over.

    URN Audio Style Selector turns that string into clickable tags in a tabbed panel. Incoming tags are grey, your additions are purple, and clicking a selected tag removes it. What comes out is the same comma-separated string, just curated.

    How it works

    The node has exactly one input and one output, which tells you most of the story: the work happens in the frontend, and the node is a gate. Generated_Styles comes in as a string (normally from Music_Description), gets split into tags, and rendered in the selected area in grey. The available-tags panel on the left is populated from a JSON file the pack ships:

    urn_audio_style_selector_styles.json
    

    Each top-level key in that file becomes a tab - the bundled set is Genre, Vocals, Instruments, Mood, Production, Tempo, Era, BPM and User Custom - and each value is a list of tags. The node reads it fresh on request, so hand-editing categories doesn't require restarting ComfyUI. Tag lists are sorted alphabetically except BPM, which is kept in numeric order because alphabetically "100" comes before "90" and that's maddening.

    Quick Custom is the bit that makes it more than a preset picker: type a tag that isn't there, hit Add Quick Custom (or Enter), and it's added to the current selection and written permanently into the User Custom section of that JSON file. Accept Changes posts the final selection back through a local route on ComfyUI's web server and resumes the workflow.

    Inputs and outputs

    • Generated_Styles - the incoming STRING. This is the only input, and it's required, so if you have nothing upstream to feed it, type something into the widget or use a text primitive.
    • Final_Styles - output STRING, all remaining selected tags joined with commas. Wire it into the style/prompt input of your music model.

    Interaction is all on the node: click available tags to add, click any selected tag to remove - including the grey incoming ones, which is how you prune what the lyrics node suggested. The available-tags panel highlights already-selected entries so you can see duplicates. The node is an output node, so accepting is what continues the run.

    Install

    cd ComfyUI/custom_nodes
    git clone https://github.com/Clivey1234/Comfyui_URN_AudioTools
    

    Restart ComfyUI, then hard refresh the browser (Ctrl+F5) if you were already running the pack - the entire selector is a frontend extension. This node needs none of the pack's Python dependencies; the routes it uses to talk to the backend come from aiohttp, which ComfyUI already ships.

    ComfyUI Manager: search Comfyui_URN_AudioTools. You'll find it as URN Audio Style Selector under URN Audio Tools.

    Common issues

    The tabs are empty or the node renders as a blank box. Almost always a stale frontend cache. Hard refresh; if that doesn't do it, restart ComfyUI and hard refresh again.

    I edited the styles JSON and broke the node. The file is parsed as JSON on read, so a trailing comma or a missing comma between sections takes out the whole list - every tab goes empty rather than one tag going missing. Every top-level section except the last needs a comma after its closing ]. Keep a copy before you hand-edit.

    My Quick Custom tag didn't stick. It's written to the JSON when you click Add Quick Custom, not when you click Accept. If the write failed, the tag is still in the current selection (purple) but it'll be gone next session, and the User Custom tab is the one you should check.

    The selector sits there and the workflow won't finish. It's waiting for Accept Changes. It's a gate by design - same pattern as URN Text Edit. Bypass it (Ctrl+B) if you only want the incoming styles passed through untouched.

    CategoryURN Audio Tools

    Inputs (1)

    NameTypeDefaultDescription
    Generated_StylesSTRING—

    Outputs (1)

    NameTypeDescription
    Final_StylesSTRING—