{
    "effectName": "Tendril",
    "properties": [
        {
            "id": "Tendril_Movement",
            "label": "Movement",
            "description": "The path the tendril head follows. Options include geometric patterns like circle and square, zig-zag paths, music-reactive modes, or fully manual control via value curves.",
            "type": "enum",
            "controlType": "choice",
            "options": [
                "Random",
                "Square",
                "Circle",
                "Horizontal Zig Zag",
                "Horiz. Zig Zag Return",
                "Vertical Zig Zag",
                "Vert. Zig Zag Return",
                "Music Line",
                "Music Circle",
                "Manual"
            ],
            "default": "Circle",
            "lockable": true
        },
        {
            "id": "Tendril_TuneMovement",
            "label": "Tune Movement",
            "description": "Controls the magnitude of the tendril head movement. Higher values produce larger, more dramatic movements across the buffer.",
            "type": "int",
            "controlType": "slider",
            "default": 10,
            "valueCurve": true,
            "lockable": true,
            "min": 0,
            "max": 20,
            "settingPrefix": "TEXTCTRL"
        },
        {
            "id": "Tendril_Thickness",
            "label": "Thickness",
            "description": "The line width of the tendril in pixels. Higher values draw a thicker, more visible tendril strand.",
            "type": "int",
            "controlType": "slider",
            "default": 3,
            "valueCurve": true,
            "lockable": true,
            "min": 1,
            "max": 20,
            "settingPrefix": "TEXTCTRL"
        },
        {
            "id": "Tendril_Friction",
            "label": "Friction",
            "description": "Controls how quickly node velocity decays. Lower values allow nodes to move more freely, while higher values make the tendril more sluggish.",
            "type": "int",
            "controlType": "slider",
            "default": 10,
            "lockable": true,
            "min": 0,
            "max": 20,
            "settingPrefix": "TEXTCTRL"
        },
        {
            "id": "Tendril_Dampening",
            "label": "Dampening",
            "description": "How much each node is influenced by the velocity of its predecessor. Higher values make the tendril body follow the head more closely.",
            "type": "int",
            "controlType": "slider",
            "default": 10,
            "lockable": true,
            "min": 0,
            "max": 20,
            "settingPrefix": "TEXTCTRL"
        },
        {
            "id": "Tendril_Tension",
            "label": "Tension",
            "description": "Controls how quickly the spring force decays along the tendril chain. Higher values keep the tail tighter to the head; lower values let it wave more freely.",
            "type": "int",
            "controlType": "slider",
            "default": 20,
            "lockable": true,
            "min": 0,
            "max": 39,
            "settingPrefix": "TEXTCTRL"
        },
        {
            "id": "Tendril_Trails",
            "label": "Trails",
            "description": "Number of parallel tendril strands drawn. Each trail has a slightly different spring constant, creating a ribbon-like appearance.",
            "type": "int",
            "controlType": "slider",
            "default": 1,
            "lockable": true,
            "min": 1,
            "max": 20,
            "settingPrefix": "TEXTCTRL"
        },
        {
            "id": "Tendril_Length",
            "label": "Length",
            "description": "Number of nodes in the tendril chain. More nodes create a longer, more flowing tendril.",
            "type": "int",
            "controlType": "slider",
            "default": 60,
            "lockable": true,
            "min": 5,
            "max": 100,
            "settingPrefix": "TEXTCTRL"
        },
        {
            "id": "Tendril_Speed",
            "label": "Speed",
            "description": "How fast the tendril head moves along its chosen path. Higher values make the tendril traverse its pattern more quickly.",
            "type": "int",
            "controlType": "slider",
            "default": 10,
            "min": 1,
            "max": 10,
            "settingPrefix": "TEXTCTRL"
        },
        {
            "id": "Tendril_XOffset",
            "label": "Horizontal Offset",
            "description": "Shifts the entire tendril pattern left or right as a percentage of the buffer width.",
            "type": "int",
            "controlType": "slider",
            "default": 0,
            "valueCurve": true,
            "lockable": true,
            "min": -100,
            "max": 100,
            "settingPrefix": "TEXTCTRL"
        },
        {
            "id": "Tendril_YOffset",
            "label": "Vertical Offset",
            "description": "Shifts the entire tendril pattern up or down as a percentage of the buffer height.",
            "type": "int",
            "controlType": "slider",
            "default": 0,
            "valueCurve": true,
            "lockable": true,
            "min": -100,
            "max": 100,
            "settingPrefix": "TEXTCTRL"
        },
        {
            "id": "Tendril_ManualX",
            "label": "Manual X",
            "description": "Manually sets the horizontal target position for the tendril head when movement is set to Manual. Use with a value curve to animate the path.",
            "type": "int",
            "controlType": "slider",
            "default": 0,
            "valueCurve": true,
            "min": 0,
            "max": 100,
            "settingPrefix": "TEXTCTRL"
        },
        {
            "id": "Tendril_ManualY",
            "label": "Manual Y",
            "description": "Manually sets the vertical target position for the tendril head when movement is set to Manual. Use with a value curve to animate the path.",
            "type": "int",
            "controlType": "slider",
            "default": 0,
            "valueCurve": true,
            "min": 0,
            "max": 100,
            "settingPrefix": "TEXTCTRL"
        }
    ],
    "visibilityRules": [
        {
            "when": {
                "property": "Tendril_Movement",
                "equals": "Manual"
            },
            "enable": [
                "Tendril_ManualX",
                "Tendril_ManualY"
            ],
            "disable": [
                "Tendril_TuneMovement"
            ]
        }
    ]
}
