When building patches, you’ll notice that ports (the small connectors on actors) use shapes and fills to indicate scaling and mutability states. These visual cues help you understand how a port behaves and how you can work with it.


1. Port Shapes: Scaling State

Port shape tells you whether scaling is enabled, disabled, or if the port is Non-linkable.

  • Circle → Scaling enabled

    • Both scale min and scale max are set to specific numbers.

  • Square → Scaling disabled

    • Either scale min or scale max is at the global MIN/MAX value.

  • Triangle → Non-linkable port

    • Used for inputs that control the number of inputs/outputs on an actor (e.g., “Add Input”).


2. Port Fill: Mutability State

Port fill tells you whether the port’s data type can change.

  • Solid (filled) → Fixed type

    • The port has a permanent data type that cannot be changed.

  • Hollow (empty) → Mutable type

    • The port starts as a Float by default but can change type when connected.


3. Mutating a Port

To mutate a port, you connect it to another actor’s port with the data type you need. The mutable port adopts that type.

Example:

  1. Drag a link from a Text output to a hollow mutable input.

  2. The hollow port changes type to Text automatically.

  3. From now on, it will only accept Text until reset.

You can do this with other data types too (e.g., Integer, Boolean, Color).


4. Practical Use

  • When you see a hollow circle, you know it’s both scalable and mutable. Connect it to any data type you want—it will adapt.

  • When you see a solid square, you know scaling is off and the type is fixed. You can’t mutate it, but you can still pass in the correct value.

  • Triangles remind you these aren’t data ports at all, but instead control the structure of the actor.


5. Tips

  • If you’re not sure what type a mutable port has become, hover over it to display its current type (You can also click on the ports name to open the Property Inspector Widget.)

  • To get back to the default Float, remove the link and re-initialize the actor.

  • Use scaling (circles) for values you want to map across a range; disable scaling (squares) for precise values.


Above you can see a Table actor in its default mode, where many of the Inputs and Outputs are mutable with scaling Off.

Then below, again a Table actor that has had its output connected to an Text input on a Trigger Text actor. Now all the previously mutable inputs and outputs of the Table have been changed to type Text. The Property Inspector for input 'value 1' has been opened, and shows the Type = Text.