{
    "effectName": "Spirograph",
    "description": "Note: r should be <= R",
    "properties": [
        {
            "id": "Spirograph_Speed",
            "label": "Speed",
            "type": "int",
            "controlType": "slider",
            "default": 10,
            "valueCurve": true,
            "lockable": true,
            "min": 0,
            "max": 50,
            "settingPrefix": "TEXTCTRL",
            "description": "Controls how fast the spirograph pattern rotates over time. Higher values make the drawing point orbit more quickly."
        },
        {
            "id": "Spirograph_R",
            "label": "R - Radius of outer circle",
            "type": "int",
            "controlType": "slider",
            "default": 20,
            "min": 1,
            "max": 100,
            "valueCurve": true,
            "lockable": true,
            "description": "Radius of the fixed outer circle as a percentage of the buffer width. This sets the overall size of the spirograph pattern."
        },
        {
            "id": "Spirograph_r",
            "label": "r - Radius of inner circle",
            "type": "int",
            "controlType": "slider",
            "default": 10,
            "min": 1,
            "max": 100,
            "valueCurve": true,
            "lockable": true,
            "description": "Radius of the rolling inner circle as a percentage of the buffer width. The ratio of R to r determines the number of lobes in the pattern. Must be less than or equal to R."
        },
        {
            "id": "Spirograph_d",
            "label": "d - Distance",
            "type": "int",
            "controlType": "slider",
            "default": 30,
            "min": 1,
            "max": 100,
            "valueCurve": true,
            "lockable": true,
            "description": "Distance of the drawing point from the center of the inner circle as a percentage of the buffer width. Controls how far the lobes extend outward."
        },
        {
            "id": "Spirograph_Animate",
            "label": "a - Animation",
            "type": "int",
            "controlType": "slider",
            "default": 0,
            "valueCurve": true,
            "lockable": true,
            "min": -50,
            "max": 50,
            "settingPrefix": "TEXTCTRL",
            "description": "Gradually changes the distance parameter (d) over time, causing the spirograph pattern to morph and evolve as it draws."
        },
        {
            "id": "Spirograph_Length",
            "label": "Length",
            "type": "int",
            "controlType": "slider",
            "default": 20,
            "valueCurve": true,
            "lockable": true,
            "min": 0,
            "max": 50,
            "settingPrefix": "TEXTCTRL",
            "description": "How much of the spirograph curve is drawn each frame, measured in degrees. Higher values draw more of the pattern, creating a longer visible trail."
        },
        {
            "id": "Spirograph_Width",
            "label": "Width",
            "type": "int",
            "controlType": "slider",
            "default": 1,
            "valueCurve": true,
            "lockable": true,
            "min": 1,
            "max": 50,
            "settingPrefix": "TEXTCTRL",
            "description": "Thickness of the drawn spirograph line in pixels. The line is drawn along the normal to the curve at each point."
        }
    ]
}
