Nodes/ComfyUI Lackluster Nodes/Trap Prompt Generator v2
ComfyUI Node

Trap Prompt Generator v2

A beat-description typewriter, not a beat machine

By LacklusterOpsec·Created 5 months ago·Updated 17 days ago· 1
Trap Prompt Generator v2
    • prompt
    seed0
    prompt_styletags
    genre
    bpm
    key
    mood
    energy
    bass
    drums
    rhythm
    melody
    vocals
    atmosphere
    fx
    mix
    arrangement
    custom_tags

    Let's get the name out of the way first: this node does not generate trap music. It writes a description of trap music - a text prompt - and it does that entirely in Python with zero API calls, zero model downloads, and no key to sign up for. The name is the only fancy thing about it. What you get is a STRING that describes a beat, which you then feed into whatever actually makes sound: ACE-Step, Stable Audio, or even Suno if you're in the habit of typing prompts into cloud tools. In a ComfyUI world where audio is still a bolted-on afterthought, these prompt-writers are the cheap front half of the job.

    It's the v2 of the pack's older Trap Prompt Generator, and the upgrade is real. v2 spreads its net over 14 musical categories instead of 10 - genre, BPM, key, mood, energy, bass, drums, rhythm, melody, vocals, atmosphere, fx, mix, arrangement. Each category is a dropdown with a curated pool of options, and the two options that matter on every one of them are 🎲 Random and - None -.

    Here's the mechanism, since it's simple enough to fully trust. The seed input drives a deterministic per-category random pick (random.Random(seed * 31 + offset) in the source, one offset per category so the picks don't collide). Same seed plus same dropdown settings equals the exact same prompt, every run - which is the whole point. 🎲 Random rerolls that category from the seed; - None - drops the category from the output entirely. One honest gotcha: genre is the only category without a None option, so if you want a beat with no genre at all, you can't have it.

    The prompt_style dropdown picks how it all gets glued together:

    • tags - comma-separated list, the classic tag soup. BPM gets turned into "140 BPM".
    • natural - a flowing sentence: "A phonk beat at 140 BPM in C minor, aggressive with high-energy bounce, featuring deep punchy 808s, …". This is the one to reach for if your target model was trained on prose rather than tags.
    • structured - [genre] phonk [bpm] 140 [key] C minor …, a labeled-token format some music models and pipelines expect.

    The optional custom_tags field is a plain multiline text box whose contents get appended verbatim after a comma. That's raw injection, not smart merging - handy for bolting on your own model-specific tokens or a style LoRA's trigger words, but don't expect it to integrate grammatically.

    The inputs that actually matter for a beginner: seed (set it, or you'll swear the Random button is broken when you get the same output twice), prompt_style, and whichever categories you care about - leave the rest on Random and let the seed do the work. The single output, prompt (STRING), wires straight into a text input anywhere downstream.

    Install - it ships in ComfyUI Lackluster Nodes, so ComfyUI Manager → search "ComfyUI Lackluster Nodes" → Install → restart, or:

    cd path/to/ComfyUI/custom_nodes
    git clone https://github.com/LacklusterOpsec/ComfyUI-Lackluster-Nodes.git
    cd ComfyUI-Lackluster-Nodes
    pip install -r requirements.txt
    

    The pack's requirements are just requests and numpy - this particular node barely uses the stdlib, so there's no heavy dependency tax and nothing to download. You'll find it under Lackluster/Audio/Trap, next to its v1 sibling (Trap Prompt Generator) and the Style Selector.

    Where people get burned: same seed, no variation - that's by design, bump the seed. The custom_tags append surprises people who expect it to slot into the sentence. And if you picked this over v1 for the extra categories, remember to actually set key, mood, fx, and arrangement to something other than None - otherwise the "enhanced" version quietly produces a v1-shaped prompt.

    CategoryLackluster/Audio/Trap

    Inputs (17)

    NameTypeDefaultDescription
    seedINT00–18446744073709550000Seed for deterministic randomisation of 🎲 Random categories.
    prompt_styleCOMBOtagsOutput format: tags (comma list), natural (flowing sentence), structured ([label] value).
    genreCOMBO19 options: 🎲 Random, club trap, twerk trap, southern bounce trap, strip club trap, hypnotic club trap, +13
    bpmCOMBO15 options: 🎲 Random, — None —, 100, 110, 115, 120, +9
    keyCOMBO14 options: 🎲 Random, — None —, C minor, C# minor, D minor, D# minor, +8
    moodCOMBO14 options: 🎲 Random, — None —, aggressive, dark and moody, euphoric party, melancholic, +8
    energyCOMBO12 options: 🎲 Random, — None —, high-energy bounce, late-night party energy, aggressive club energy, hypnotic groove, +6
    bassCOMBO12 options: 🎲 Random, — None —, deep punchy 808s, trunk-rattling sub bass, rolling basslines, distorted sliding 808s, +6
    drumsCOMBO14 options: 🎲 Random, — None —, hard kick drums, snappy claps, rimshot-heavy percussion, glitchy trap hats, +8
    rhythmCOMBO12 options: 🎲 Random, — None —, bounce-driven rhythm, syncopated groove pocket, skittering hi-hat rolls, triplet swing pattern, +6
    melodyCOMBO15 options: 🎲 Random, — None —, minimal dark synth stabs, hypnotic arpeggiated synths, eerie pluck melody, ambient club pads, +9
    vocalsCOMBO12 options: 🎲 Random, — None —, chant-style vocal hooks, repetitive hypnotic phrases, ad-lib heavy vocal chops, confident feminine vocal energy, +6
    atmosphereCOMBO12 options: 🎲 Random, — None —, dark neon club atmosphere, strip-club bounce aesthetic, sweaty underground dancefloor vibe, late-night city energy, +6
    fxCOMBO13 options: 🎲 Random, — None —, heavy reverb tails, tape saturation, vinyl crackle, bit-crushed textures, +7
    mixCOMBO12 options: 🎲 Random, — None —, club-ready mix, hard compressed low-end focus, wide stereo percussion, punchy modern trap mix, +6
    arrangementCOMBO11 options: 🎲 Random, — None —, intro build drop, loop-based minimal, verse-chorus-drop, slow build crescendo, +5
    custom_tagsoptSTRINGExtra text appended to the generated prompt.

    Outputs (1)

    NameTypeDescription
    promptSTRING