ComfyUI Node

OCS Param

How to hand the sampler something it can't type in a text box

By blepping·Created 2 years ago·Updated about a month ago· 30
OCS Param
  • value
  • params_opt
  • OCS_PARAMS
key
parameters

Every OCS node has a YAML text block where you configure it, but YAML can't hold a noise generator, a sampler, or a VAE - those are things with wires. OCS Param is the bridge: it lets you inject a real input into the parameter system so a sampler, group, or substeps node can use it. If you've ever thought "I wish I could plug a custom noise node into that YAML block," this is the node.

What it is

Think of it as a key-value pair for the OCS parameter bag. You pick a key - what kind of parameter you're supplying - and connect the matching value to it. The output (OCS_PARAMS) connects to the params_opt input on an OCS Sampler, OCS Group, or OCS Substeps node. The receiving node then treats the parameter as if you'd written it into its text block.

The inputs that matter

  • key (required) - an enum defining the parameter type. Your choices are custom_noise (a custom noise generator for ancestral/SDE sampling), restart_custom_noise, merge_sampler, sampler, vae, and upscale_model. The key you pick dictates what you must connect to value.
  • value (required) - connect the actual thing. It accepts SIGMAS, OCS_NOISE, SONAR_CUSTOM_NOISE, SAMPLER, VAE, IMAGE, or UPSCALE_MODEL wire types; if the type doesn't match the key you chose, you get an error at execution time rather than a nice warning. There's no type checking until you run.
  • params_opt (optional) - chain another OCS Param or OCS MultiParam here to supply several parameters at once.
  • parameters (optional) - a text block for extra options. The genuinely useful one is rename, which lets you retarget the parameter. For example, set key to custom_noise, write rename: test in the text block, then in the receiving node's YAML write custom_noise: test to use exactly that generator.

The single OCS_PARAMS output feeds params_opt anywhere in the pack.

The realistic workflow

The most common use is custom noise. Build an OCSNoise PerlinSimple node, connect it to an OCS Param with key: custom_noise, chain that into a OCS MultiParam or straight to the OCS Sampler's params_opt. Now your Perlin noise participates in ancestral sampling - something no amount of YAML could express. Same pattern applies for dropping a VAE or UPSCALE_MODEL into a merge strategy.

Installing and gotchas

Part of the pack, so install via ComfyUI Manager ("Overly Complicated Sampling") or git clone https://github.com/blepping/comfyui_overly_complicated_sampling into ComfyUI/custom_nodes and restart. No models, no mandatory deps.

The main trap is the untyped value input - it'll happily accept any of those wire types, so a mismatched connection fails only when you run. The other thing to know: merge_sampler and sampler params are niche and only used by specific merge methods, so don't feel obligated to wire one up just because the option exists. For 90% of users this node exists to feed noise generators into the sampling stack, and it does that one job cleanly.

Categorysampling/custom_sampling/OCS

Inputs (4)

NameTypeDefaultDescription
keyCOMBOUsed to set the type of custom parameter.
valueSIGMAS,OCS_NOISE,VAE,SONAR_CUSTOM_NOISE,SAMPLER,IMAGE,UPSCALE_MODELConnect the type of value expected by the key. Allows connecting output from any type of node HOWEVER if it is the wrong type expected by the key you will get an error when you run the workflow. The following input types are supported: SIGMAS, OCS_NOISE, VAE, SONAR_CUSTOM_NOISE, SAMPLER, IMAGE, UPSCALE_MODEL
params_optoptOCS_PARAMSYou may optionally connect the output from other OCS Param or OCS MultiParam nodes here to set multiple parameters.
parametersoptSTRINGThe text parameter block allows setting custom parameters using YAML (recommended) or JSON. Optional, may be left blank.

Outputs (1)

NameTypeDescription
OCS_PARAMSOCS_PARAMSCan be connected to another OCS Param or OCS MultiParam node or any other OCS node that takes OCS_PARAMS as an input.