Trigger Builder β‘π ‘π π £π
Turn a spoken word into a value curve
- previous_triggers
- trigger_image
- TRIGGER_SET
Most of this pack's reactive nodes respond to continuous signals - audio amplitude, motion, brightness. Trigger Builder is the discrete cousin: instead of a curve that constantly moves, it fires off a value change when a specific word or phrase gets spoken. Say "explode" and have an effect ramp up right on that word, or use a pattern match to catch every instance of a name across a whole transcript. This is the node that turns spoken language itself into a controllable event.
Notice what's not in its required inputs, though: no audio, no transcript. Trigger Builder only defines the rule - what to match and what value curve to produce when a match happens. The actual audio-to-text work happens elsewhere in this pack's Whisper-source family; this node is one ingredient of that pipeline, not the whole thing.
How it works
pattern is the word or phrase to watch for, and match_mode decides how literally: exact matches whole words only, contains matches substrings within words, regex opens it up to full regular expressions for complex patterns, and phonetic matches on how a word sounds rather than how it's spelled - handy for catching a word Whisper transcribed slightly wrong, since speech-to-text isn't always literal.
Once a match happens, start_value and end_value define the range the trigger moves through - from the moment the matched word begins to the moment it ends, unless you override that with duration_frames (0 uses the word's actual spoken duration; anything above 0 forces a fixed length instead). fade_type shapes the transition itself: none snaps instantly, linear ramps at a constant rate, smooth eases in and out. fill_behavior decides what happens between triggers when nothing's currently matched - none leaves gaps, hold keeps the last value, loop repeats the sequence.
You'll rarely want just one trigger rule. previous_triggers lets you chain multiple Trigger Builder nodes into a single combined TRIGGER_SET, and blend_mode (blend, add, multiply, max) controls how overlapping triggers combine when more than one is active on the same frame.
Inputs and outputs
pattern(default"hello") - the word or phrase this rule watches for.start_value/end_value- the range the trigger sweeps through, 0 to 1.match_mode- how strict the match is.previous_triggers(optional,TRIGGER_SET) - chain in earlier rules to build a combined set.trigger_image(optional,IMAGE) - an image you can associate with this specific trigger, for effects or overlays keyed to that word.- Output - a single
TRIGGER_SET.
Installing it
Install through ComfyUI Manager (search RyanOnTheInside) or manually:
cd ComfyUI/custom_nodes
git clone https://github.com/ryanontheinside/ComfyUI_RyanOnTheInside
Then pip install -r requirements.txt and restart ComfyUI. The Whisper-source family this node belongs to needs OpenAI Whisper installed for the actual transcription step - that model downloads automatically from Hugging Face the first time a Whisper-based node in this pack runs, so expect a one-time download delay on first use rather than a config step you need to do by hand.
Common issues
The biggest point of confusion for beginners is exactly the gap described above - wiring up Trigger Builder and expecting it to somehow "just work" without ever connecting it to actual audio. It won't; you need the upstream Whisper transcription step from this pack feeding the combined trigger set before any of this fires against real speech.
Beyond that, phonetic matching is worth trying before you assume a trigger "isn't working" - Whisper transcripts aren't perfectly literal, and a name or unusual word that gets slightly mis-transcribed will silently fail an exact match while still catching under phonetic. And if end_frame-style timing feels off, check duration_frames first - leaving it at 0 ties your trigger's length to how long the word was actually spoken, which varies clip to clip, rather than the fixed length you might be assuming.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| pattern | STRING | hello | Word or phrase to match in the transcription. Can be a single word, multiple words, or a pattern depending on match_mode. |
| start_value | FLOAT | 0.000β1 | Value when the matched word/phrase starts (0-1). Controls the initial intensity of the effect. |
| end_value | FLOAT | 1.000β1 | Value when the matched word/phrase ends (0-1). Controls the final intensity of the effect. |
| match_mode | COMBO | contains | How to match the pattern: - exact: Match whole words only - contains: Match substrings within words - regex: Use regular expressions for complex patterns - phonetic: Match similar-sounding words |
| fade_type | COMBO | linear | How values transition: - none: Instant change - linear: Smooth linear transition - smooth: Eased transition with acceleration/deceleration |
| duration_frames | INT | 0 | Duration of the effect in frames. 0 = use actual word duration >0 = force specific duration |
| blend_mode | COMBO | blend | How this trigger combines with others: - blend: Average with other active triggers - add: Sum all active trigger values - multiply: Multiply active trigger values - max: Use highest active trigger value |
| fill_behavior | COMBO | none | How to handle frames between triggers: - none: No values between triggers - hold: Keep last trigger value - loop: Repeat trigger sequence |
| previous_triggersopt | TRIGGER_SET | Optional previous trigger set to chain with | |
| trigger_imageopt | IMAGE | Optional image to associate with the trigger. Can be used for visual effects or overlays. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| TRIGGER_SET | TRIGGER_SET | β |