Nodes/scg_Foundation-1-comfyUI/SCG Foundation-1 Prompt Builder
ComfyUI Node

SCG Foundation-1 Prompt Builder

The SCG Foundation-1 Prompt Builder speaks the model's tag language so you don't have to

By SanDiegoDude·Created 6 months ago·Updated 6 months ago· 19
SCG Foundation-1 Prompt Builder
    • prompt
    instrument_familySynth
    sub_familySynth Lead
    timbre_1Warm
    timbre_2None
    timbre_3None
    structureMelody
    speedNone
    densityNone
    contourNone
    rhythmNone
    spatialNone
    bandNone
    wave_techNone
    styleNone
    fx_reverbNone
    fx_delayNone
    fx_distortionNone
    fx_modulationNone
    additional_tags

    Foundation-1 isn't a free-text audio model in the way you might assume from the image world. It's a structured text-to-sample model: it was trained on a layered tag vocabulary, so a string like Warm, Bright, Melody means something precise to it, and the quality of your loop tracks how well you speak that vocabulary. The SCG Foundation-1 Prompt Builder is a wall of dropdowns that maps directly onto those training layers. You pick, it assembles.

    That matters more than it sounds. The prompt system comes from the RC Enhanced Fork of stable-audio-tools, and the tag hierarchy - instrument family, sub-family, timbre, FX, structure - is exactly what the model conditioned on. Typing natural-language prose into the prompt box works, but you're leaving control on the table. The builder is deterministic control: same selections, same prompt, every time. If you'd rather roll dice, that's what the Random Prompt node is for.

    What you're actually choosing

    • instrument_family + sub_family - the core of it. Ten families (Synth, Keys, Bass, Bowed Strings, Mallet, Wind, Guitar, Brass, Vocal, Plucked Strings) and 60+ sub-families beneath them. Synth Lead, Grand Piano, Reese Bass, Church Organ, Kalimba - the model knows these by name.
    • timbre_1 / timbre_2 / timbre_3 - the sound character: 50 descriptors from Warm to Buzzy to Nasal. timbre_1 defaults to Warm, the other two to None. Two or three is usually the sweet spot; more than that and the model starts averaging them out.
    • structure - what the loop should do: Melody, Chord Progression, Dance Chord Progression, Top Melody, Arp, Bassline. This is the knob that separates "a pad" from "a riff."
    • Everything else - speed, density, contour, and rhythm, plus the optional spatial, band, wave_tech, and style dropdowns, and four FX groups (reverb, delay, distortion, modulation) with graduated levels like "Low Delay" vs "Ping Pong Delay."
    • additional_tags - free-form, comma-separated extras appended verbatim. The escape hatch when none of the dropdowns has the word you want.

    Output and wiring

    The single output, prompt (a STRING), goes into the Sample Generator's prompt input. Note what it does not include: key, scale, bars, and BPM. The Sample Generator appends those itself from its own inputs, so don't add them here or you'll get duplicates.

    Mechanically the node is boring in the best way: it comma-joins every dropdown that isn't None and prints the assembled prompt to your console so you can see exactly what it built. No hidden prompt magic, no randomness - which is exactly what makes it the deterministic complement to the Random Prompt node.

    Installing

    Same as the rest of the pack - this is a four-node set from SanDiegoDude (the same author behind ComfyUI-HiDream-Sampler). ComfyUI Manager, search "SCG Foundation-1", install, restart. Manual:

    cd ComfyUI/custom_nodes
    git clone https://github.com/SanDiegoDude/scg_Foundation-1-comfyUI
    cd scg_Foundation-1-comfyUI
    python install.py
    

    The one install landmine, repeated because it will otherwise nuke your environment: never pip install stable-audio-tools without --no-deps. It force-downgrades torch, numpy, and pandas and breaks ComfyUI. install.py does it right.

    Gotchas

    The builder only produces a string - the Loader still has to be running for the sampler to do anything with it, so keep that first in the graph. And a practical note: None selections are silently dropped, so there's no "clearing" ritual - just set a dropdown back to None. The defaults (Synth, Synth Lead, Warm, Melody) make a genuinely decent starter loop if you want to verify the whole pipeline before you start sculpting.

    Categoryaudio/SCG Foundation-1

    Inputs (19)

    NameTypeDefaultDescription
    instrument_familyCOMBOSynth11 options: None, Synth, Keys, Bass, Bowed Strings, Mallet, +5
    sub_familyCOMBOSynth Lead62 options: None, Acoustic Guitar, Analog Bass, Atmosphere, Bass Trombone, Bassoon, +56
    timbre_1COMBOWarm51 options: None, Airy, Biting, Boomy, Breathy, Bright, +45
    timbre_2COMBONone51 options: None, Airy, Biting, Boomy, Breathy, Bright, +45
    timbre_3COMBONone51 options: None, Airy, Biting, Boomy, Breathy, Bright, +45
    structureCOMBOMelody7 options: None, Chord Progression, Dance Chord Progression, Melody, Top Melody, Arp, +1
    speedCOMBONone4 options: None, Slow Speed, Medium Speed, Fast Speed
    densityCOMBONone6 options: None, Simple, Repeating, Catchy, Complex, Epic
    contourCOMBONone8 options: None, Rising, Falling, Bounce, Rolling, Sustained, +2
    rhythmCOMBONone6 options: None, Off Beat, Alternating, Triplets, Strummed, Arp
    spatialoptCOMBONone12 options: None, Wide, Mono, Near, Far, Spacey, +6
    bandoptCOMBONone9 options: None, Sub, Sub Bass, Bass, Low Mids, Mids, +3
    wave_techoptCOMBONone14 options: None, Saw, Square, Sine, Triangle, Pulse, +8
    styleoptCOMBONone12 options: None, Dubstep, Chiptune, Acid, 303, Retro, +6
    fx_reverboptCOMBONone5 options: None, Low Reverb, Medium Reverb, High Reverb, Plate Reverb
    fx_delayoptCOMBONone8 options: None, Low Delay, Medium Delay, High Delay, Ping Pong Delay, Stereo Delay, +2
    fx_distortionoptCOMBONone4 options: None, Low Distortion, Medium Distortion, High Distortion
    fx_modulationoptCOMBONone7 options: None, Phaser, Low Phaser, Medium Phaser, High Phaser, Bitcrush, +1
    additional_tagsoptSTRING

    Outputs (1)

    NameTypeDescription
    promptSTRING