{
    "effectName": "VU Meter",
    "properties": [
        {
            "id": "VUMeter_Bars",
            "label": "Bars",
            "description": "Number of bars or segments displayed in bar-based VU meter types. Controls the resolution of the frequency or level display.",
            "type": "int",
            "controlType": "slider",
            "default": 6,
            "min": 1,
            "max": 100,
            "lockable": true
        },
        {
            "id": "VUMeter_Type",
            "label": "Type",
            "description": "The visualization style for the VU meter. Options include spectrogram, volume bars, waveform, timing event responses, level-based displays, note tracking, and more.",
            "type": "enum",
            "controlType": "choice",
            "options": [
                "Spectrogram",
                "Spectrogram Peak",
                "Spectrogram Line",
                "Spectrogram Circle Line",
                "Volume Bars",
                "Waveform",
                "Frame Waveform",
                "On",
                "Color On",
                "Dominant Frequency Colour",
                "Dominant Frequency Colour Gradient",
                "Intensity Wave",
                "Pulse",
                "Level Bar",
                "Level Random Bar",
                "Level Color",
                "Level Pulse",
                "Level Jump",
                "Level Jump 100",
                "Level Pulse Color",
                "Level Shape",
                "Timing Event Bar",
                "Timing Event Bar Bounce",
                "Timing Event Random Bar",
                "Timing Event Bars",
                "Timing Event Spike",
                "Timing Event Sweep",
                "Timing Event Sweep 2",
                "Timing Event Timed Sweep",
                "Timing Event Timed Sweep 2",
                "Timing Event Alternate Timed Sweep",
                "Timing Event Alternate Timed Sweep 2",
                "Timing Event Timed Chase From Middle",
                "Timing Event Timed Chase To Middle",
                "Timing Event Color",
                "Timing Event Jump",
                "Timing Event Jump 100",
                "Timing Event Pulse",
                "Timing Event Pulse Color",
                "Note On",
                "Note Level Pulse",
                "Note Level Jump",
                "Note Level Jump 100",
                "Note Level Bar",
                "Note Level Random Bar"
            ],
            "default": "Waveform",
            "lockable": true
        },
        {
            "id": "VUMeter_TimingTrack",
            "label": "Timing Track",
            "description": "The timing track used for timing-event-based VU meter types. Events on this track trigger visual responses like spikes, sweeps, and color changes.",
            "type": "enum",
            "controlType": "choice",
            "options": [],
            "default": "",
            "lockable": true
        },
        {
            "id": "Filter",
            "label": "Filter Label",
            "description": "Text filter applied to timing track labels. Only timing events whose labels match this filter text will trigger the VU meter response.",
            "type": "string",
            "controlType": "text",
            "default": ""
        },
        {
            "id": "Regex",
            "label": "Regex",
            "description": "When enabled, the filter text is treated as a regular expression pattern instead of a plain text match.",
            "type": "bool",
            "controlType": "checkbox",
            "default": false
        },
        {
            "id": "VUMeter_Sensitivity",
            "label": "Sensitivity",
            "description": "Audio level threshold that must be exceeded to trigger the VU meter response. Lower values make it more responsive to quiet sounds.",
            "type": "int",
            "controlType": "slider",
            "default": 70,
            "min": 0,
            "max": 100,
            "lockable": true
        },
        {
            "id": "VUMeter_Gain",
            "label": "Gain",
            "description": "Amplifies or attenuates the audio signal level before it drives the visualization. Positive values boost the signal, negative values reduce it.",
            "type": "int",
            "controlType": "slider",
            "default": 0,
            "min": -100,
            "max": 100,
            "valueCurve": true
        },
        {
            "id": "VUMeter_Shape",
            "label": "Shape",
            "description": "The shape used for level-shape VU meter type. The shape is drawn at a size proportional to the audio level.",
            "type": "enum",
            "controlType": "choice",
            "options": [
                "Circle",
                "Filled Circle",
                "Square",
                "Filled Square",
                "Diamond",
                "Filled Diamond",
                "Star",
                "Filled Star",
                "Tree",
                "Filled Tree",
                "Crucifix",
                "Filled Crucifix",
                "Present",
                "Filled Present",
                "Candy Cane",
                "Snowflake",
                "Heart",
                "Filled Heart",
                "SVG"
            ],
            "default": "Circle",
            "lockable": true
        },
        {
            "id": "SVGFile",
            "label": "SVG File",
            "description": "Path to an SVG file used as the shape when Shape is set to SVG. The SVG is rendered at a size driven by the audio level.",
            "type": "file",
            "controlType": "filepicker",
            "default": ""
        },
        {
            "id": "VUMeter_SlowDownFalls",
            "label": "Slow Down Falls",
            "description": "When enabled, bars and levels fall gradually after a peak rather than dropping instantly, creating a smoother visual decay.",
            "type": "bool",
            "controlType": "checkbox",
            "default": true,
            "lockable": true
        },
        {
            "id": "VUMeter_StartNote",
            "label": "Start Note",
            "description": "The lowest MIDI note number included in frequency analysis. Used to focus the spectrogram or note display on a specific pitch range.",
            "type": "int",
            "controlType": "slider",
            "default": 36,
            "min": 0,
            "max": 127,
            "lockable": true
        },
        {
            "id": "VUMeter_EndNote",
            "label": "End Note",
            "description": "The highest MIDI note number included in frequency analysis. Together with Start Note, defines the visible pitch range.",
            "type": "int",
            "controlType": "slider",
            "default": 84,
            "min": 0,
            "max": 127,
            "lockable": true
        },
        {
            "id": "VUMeter_LogarithmicX",
            "label": "Logarithmic X axis",
            "description": "When enabled, the frequency axis uses a logarithmic scale that better matches human pitch perception, giving more space to lower frequencies.",
            "type": "bool",
            "controlType": "checkbox",
            "default": false
        },
        {
            "id": "VUMeter_XOffset",
            "label": "Horizontal Offset",
            "description": "Shifts the VU meter display left or right as a percentage of the buffer width.",
            "type": "int",
            "controlType": "slider",
            "default": 0,
            "min": -100,
            "max": 100,
            "valueCurve": true,
            "lockable": true
        },
        {
            "id": "VUMeter_YOffset",
            "label": "Vertical Offset",
            "description": "Shifts the VU meter display up or down as a percentage of the buffer height.",
            "type": "int",
            "controlType": "slider",
            "default": 0,
            "min": -100,
            "max": 100,
            "valueCurve": true,
            "lockable": true
        },
        {
            "id": "VUMeter_AudioTrack",
            "label": "Audio Track",
            "description": "Selects which audio track drives this VU Meter. 'Main' uses the sequence's primary audio; additional tracks are listed if alternate audio tracks have been added in Sequence Settings.",
            "type": "enum",
            "controlType": "choice",
            "dynamicOptions": "audioTracks",
            "default": "",
            "lockable": true
        }
    ],
    "visibilityRules": [
        {
            "when": { "property": "VUMeter_Type", "oneOf": [
                "Spectrogram", "Spectrogram Peak", "Spectrogram Circle Line", "Spectrogram Line"
            ] },
            "enable": [ "VUMeter_LogarithmicX" ]
        },
        {
            "when": { "property": "VUMeter_Type", "oneOf": [
                "Volume Bars", "Waveform", "Frame Waveform", "On", "Color On", "Intensity Wave",
                "Level Bar", "Level Random Bar", "Level Color", "Level Pulse", "Level Jump",
                "Level Jump 100", "Level Pulse Color", "Timing Event Jump", "Note On",
                "Note Level Bar", "Note Level Random Bar", "Note Level Pulse",
                "Note Level Jump", "Note Level Jump 100", "Spectrogram Circle Line", "Level Shape"
            ] },
            "enable": [ "VUMeter_Gain" ]
        },
        {
            "when": { "property": "VUMeter_Type", "oneOf": [
                "Timing Event Spike", "Timing Event Sweep", "Timing Event Sweep 2",
                "Timing Event Timed Sweep", "Timing Event Timed Sweep 2",
                "Timing Event Alternate Timed Sweep", "Timing Event Alternate Timed Sweep 2",
                "Timing Event Timed Chase To Middle", "Timing Event Timed Chase From Middle",
                "Pulse", "Timing Event Color", "Timing Event Pulse", "Timing Event Bar",
                "Timing Event Bar Bounce", "Timing Event Random Bar", "Timing Event Bars",
                "Timing Event Jump 100", "Timing Event Pulse Color", "Timing Event Jump"
            ] },
            "enable": [ "VUMeter_TimingTrack", "Regex", "Filter" ]
        },
        {
            "when": { "property": "VUMeter_Type", "oneOf": [
                "Level Pulse", "Level Jump", "Level Jump 100", "Level Pulse Color", "Level Shape",
                "Level Bar", "Level Random Bar", "Level Color", "Note Level Bar",
                "Note Level Random Bar", "Spectrogram Peak", "Spectrogram Line",
                "Spectrogram Circle Line", "Note Level Jump", "Note Level Jump 100",
                "Note Level Pulse", "Timing Event Color", "Dominant Frequency Colour",
                "Dominant Frequency Colour Gradient"
            ] },
            "enable": [ "VUMeter_Sensitivity" ]
        },
        {
            "when": { "property": "VUMeter_Type", "oneOf": [
                "Level Shape", "Spectrogram", "Spectrogram Line", "Spectrogram Circle Line",
                "Spectrogram Peak"
            ] },
            "enable": [ "VUMeter_SlowDownFalls" ]
        },
        {
            "when": { "property": "VUMeter_Type", "oneOf": [
                "Spectrogram", "Spectrogram Line", "Spectrogram Circle Line", "Spectrogram Peak",
                "Note On", "Note Level Bar", "Note Level Random Bar", "Note Level Jump",
                "Note Level Jump 100", "Note Level Pulse", "Dominant Frequency Colour",
                "Dominant Frequency Colour Gradient"
            ] },
            "enable": [ "VUMeter_StartNote", "VUMeter_EndNote" ]
        },
        {
            "when": { "property": "VUMeter_Type", "oneOf": [
                "Spectrogram", "Spectrogram Line", "Spectrogram Circle Line", "Spectrogram Peak",
                "Level Shape"
            ] },
            "enable": [ "VUMeter_XOffset" ]
        },
        {
            "when": { "property": "VUMeter_Type", "oneOf": [
                "Level Shape", "Spectrogram Circle Line", "Frame Waveform", "Waveform"
            ] },
            "enable": [ "VUMeter_YOffset" ]
        },
        {
            "when": { "property": "VUMeter_Type", "equals": "Level Shape" },
            "enable": [ "VUMeter_Shape" ]
        },
        {
            "when": { "property": "VUMeter_Type", "notOneOf": [
                "On", "Color On", "Timing Event Color", "Level Color", "Note On"
            ] },
            "enable": [ "VUMeter_Bars" ]
        },
        {
            "when": { "allOf": [
                { "property": "VUMeter_Type", "equals": "Level Shape" },
                { "property": "VUMeter_Shape", "equals": "SVG" }
            ] },
            "enable": [ "SVGFile" ]
        }
    ]
}
