OCS Param
How to hand the sampler something it can't type in a text box
- value
- params_opt
- OCS_PARAMS
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 arecustom_noise(a custom noise generator for ancestral/SDE sampling),restart_custom_noise,merge_sampler,sampler,vae, andupscale_model. The key you pick dictates what you must connect tovalue.value(required) - connect the actual thing. It acceptsSIGMAS,OCS_NOISE,SONAR_CUSTOM_NOISE,SAMPLER,VAE,IMAGE, orUPSCALE_MODELwire 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 anotherOCS ParamorOCS MultiParamhere to supply several parameters at once.parameters(optional) - a text block for extra options. The genuinely useful one isrename, which lets you retarget the parameter. For example, setkeytocustom_noise, writerename: testin the text block, then in the receiving node's YAML writecustom_noise: testto 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.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| key | COMBO | Used to set the type of custom parameter. | |
| value | SIGMAS,OCS_NOISE,VAE,SONAR_CUSTOM_NOISE,SAMPLER,IMAGE,UPSCALE_MODEL | Connect 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_optopt | OCS_PARAMS | You may optionally connect the output from other OCS Param or OCS MultiParam nodes here to set multiple parameters. | |
| parametersopt | STRING | The text parameter block allows setting custom parameters using YAML (recommended) or JSON. Optional, may be left blank. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| OCS_PARAMS | OCS_PARAMS | Can be connected to another OCS Param or OCS MultiParam node or any other OCS node that takes OCS_PARAMS as an input. |