TEXT Concat OSC Control @ vrch.ai
Build a prompt by flipping tags on a tablet
- TEXT_OUTPUT
TEXT Concat OSC Control is the node that turns a tablet into a prompt editor. You store up to eight text chunks, each one tied to its own OSC toggle, and the node glues together whatever chunks are currently switched ON. Flip "neon," "portrait," and "cinematic" and you get neon, portrait, cinematic out the other side. This is the classic live-tagging rig - it's the reason you can stand in front of a crowd and compose a prompt from a phone instead of typing it into ComfyUI.
How it works
Each of the eight text inputs - text1 through text8 - has a matching path, path1 through path8, defaulting to /toggle1 … /toggle8. Send 1 to a path and that chunk joins the output; send 0 and it drops out. The active chunks are joined with whatever separator you set (default is a comma) and emitted as a single TEXT_OUTPUT string. Empty text boxes contribute nothing, so you can leave slots spare for later.
Two details make this genuinely useful rather than just a concat with extra steps:
- It's value-based, not edge-triggered - your controller sends
0or1, and the node reflects the latest state. TouchOSC toggle buttons (or the pack's bundledcomfyui_osc_control.toscpanel, which speaks these exact paths on port 8000) are the intended driver. - Order is fixed by slot number, so the output reads predictably: text1 always comes first, text8 always last, regardless of the order you flip things. Keep your structure - subject, style, lighting, quality - in slot order and the assembled prompt stays grammatical.
Wiring it
The output is a STRING, so it feeds a CLIP Text Encode, a text router, or another concat node downstream. The combo that gets the most mileage: run this node's output into TEXT Key Control's... no - more practically, pair it with the pack's TEXT Switch OSC Control if you want a fixed preset (radio-style) plus live tags (toggle-style) in the same prompt. Preset picks the base, this node adds the garnish.
Installing it
Standard pack install:
- ComfyUI Manager → search ComfyUI Web Viewer → install.
- Manual:
Windows portable:cd ComfyUI/custom_nodes git clone https://github.com/VrchStudio/comfyui-web-viewer pip install -r requirements.txtpython_embeded\python.exe -m pip install -r ComfyUI\custom_nodes\comfyui-web-viewer\requirements.txt. - Restart ComfyUI.
The python-osc dependency rides along in the pack's requirements. First install is slow because that file also bundles the optional Music2Emotion stack (librosa, pytorch_lightning, numba) - nothing to do with this node, just let it finish.
Gotchas
The usual OSC suspects apply: the default server_ip of 172.17.0.2 is a Docker-bridge leftover and means nothing on a normal desktop - set it to 127.0.0.1 or your LAN IP. And remember the value rule: a toggle that never receives 0 stays stuck ON, so your output can quietly keep a tag you thought you turned off. Flip debug on while you're setting up and watch the console confirm each path is landing before you go live with it.
Inputs (20)
| Name | Type | Default | Description |
|---|---|---|---|
| text1 | STRING | — | |
| text2 | STRING | — | |
| text3 | STRING | — | |
| text4 | STRING | — | |
| text5 | STRING | — | |
| text6 | STRING | — | |
| text7 | STRING | — | |
| text8 | STRING | — | |
| server_ip | STRING | 172.17.0.2 | — |
| port | INT | 80000–65535 | — |
| path1 | STRING | /toggle1 | — |
| path2 | STRING | /toggle2 | — |
| path3 | STRING | /toggle3 | — |
| path4 | STRING | /toggle4 | — |
| path5 | STRING | /toggle5 | — |
| path6 | STRING | /toggle6 | — |
| path7 | STRING | /toggle7 | — |
| path8 | STRING | /toggle8 | — |
| separator | STRING | , | — |
| debug | BOOLEAN | false | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| TEXT_OUTPUT | STRING | — |