//! Word metadata for audio effect parameters (filter, envelope, reverb, delay, lo-fi, stereo, mod FX).

use super::{Word, WordCompile::*};
pub(super) const WORDS: &[Word] = &[
    // Envelope
    Word {
        name: "gain",
        aliases: &[],
        category: "Envelope",
        stack: "(v.. --)",
        desc: "Set volume (0-1)",
        example: "0.8 gain",
        compile: Param,
        varargs: true,
    },
    Word {
        name: "postgain",
        aliases: &[],
        category: "Envelope",
        stack: "(v.. --)",
        desc: "Set post gain",
        example: "1.2 postgain",
        compile: Param,
        varargs: true,
    },
    Word {
        name: "velocity",
        aliases: &[],
        category: "Envelope",
        stack: "(v.. --)",
        desc: "Set velocity",
        example: "100 velocity",
        compile: Param,
        varargs: true,
    },
    Word {
        name: "attack",
        aliases: &["att"],
        category: "Envelope",
        stack: "(v.. --)",
        desc: "Set attack time",
        example: "0.01 attack",
        compile: Param,
        varargs: true,
    },
    Word {
        name: "decay",
        aliases: &["dec"],
        category: "Envelope",
        stack: "(v.. --)",
        desc: "Set decay time",
        example: "0.1 decay",
        compile: Param,
        varargs: true,
    },
    Word {
        name: "sustain",
        aliases: &["sus"],
        category: "Envelope",
        stack: "(v.. --)",
        desc: "Set sustain level",
        example: "0.5 sustain",
        compile: Param,
        varargs: true,
    },
    Word {
        name: "release",
        aliases: &["rel"],
        category: "Envelope",
        stack: "(v.. --)",
        desc: "Set release time",
        example: "0.3 release",
        compile: Param,
        varargs: true,
    },
    Word {
        name: "adsr",
        aliases: &[],
        category: "Envelope",
        stack: "(a d s r --)",
        desc: "Set attack, decay, sustain, release",
        example: "0.01 0.1 0.5 0.3 adsr",
        compile: Simple,
        varargs: false,
    },
    Word {
        name: "ad",
        aliases: &[],
        category: "Envelope",
        stack: "(a d --)",
        desc: "Set attack, decay (sustain=0)",
        example: "0.01 0.1 ad",
        compile: Simple,
        varargs: false,
    },
    Word {
        name: "penv",
        aliases: &[],
        category: "Envelope",
        stack: "(v.. --)",
        desc: "Set pitch envelope",
        example: "0.5 penv",
        compile: Param,
        varargs: true,
    },
    Word {
        name: "patt",
        aliases: &[],
        category: "Envelope",
        stack: "(v.. --)",
        desc: "Set pitch attack",
        example: "0.01 patt",
        compile: Param,
        varargs: true,
    },
    Word {
        name: "pdec",
        aliases: &[],
        category: "Envelope",
        stack: "(v.. --)",
        desc: "Set pitch decay",
        example: "0.1 pdec",
        compile: Param,
        varargs: true,
    },
    Word {
        name: "psus",
        aliases: &[],
        category: "Envelope",
        stack: "(v.. --)",
        desc: "Set pitch sustain",
        example: "0 psus",
        compile: Param,
        varargs: true,
    },
    Word {
        name: "prel",
        aliases: &[],
        category: "Envelope",
        stack: "(v.. --)",
        desc: "Set pitch release",
        example: "0.1 prel",
        compile: Param,
        varargs: true,
    },
    // Filter
    Word {
        name: "lpf",
        aliases: &[],
        category: "Filter",
        stack: "(v.. --)",
        desc: "Set lowpass frequency",
        example: "2000 lpf",
        compile: Param,
        varargs: true,
    },
    Word {
        name: "lpq",
        aliases: &[],
        category: "Filter",
        stack: "(v.. --)",
        desc: "Set lowpass resonance",
        example: "0.5 lpq",
        compile: Param,
        varargs: true,
    },
    Word {
        name: "lpe",
        aliases: &[],
        category: "Filter",
        stack: "(v.. --)",
        desc: "Set lowpass envelope",
        example: "0.5 lpe",
        compile: Param,
        varargs: true,
    },
    Word {
        name: "lpa",
        aliases: &[],
        category: "Filter",
        stack: "(v.. --)",
        desc: "Set lowpass attack",
        example: "0.01 lpa",
        compile: Param,
        varargs: true,
    },
    Word {
        name: "lpd",
        aliases: &[],
        category: "Filter",
        stack: "(v.. --)",
        desc: "Set lowpass decay",
        example: "0.1 lpd",
        compile: Param,
        varargs: true,
    },
    Word {
        name: "lps",
        aliases: &[],
        category: "Filter",
        stack: "(v.. --)",
        desc: "Set lowpass sustain",
        example: "0.5 lps",
        compile: Param,
        varargs: true,
    },
    Word {
        name: "lpr",
        aliases: &[],
        category: "Filter",
        stack: "(v.. --)",
        desc: "Set lowpass release",
        example: "0.3 lpr",
        compile: Param,
        varargs: true,
    },
    Word {
        name: "hpf",
        aliases: &[],
        category: "Filter",
        stack: "(v.. --)",
        desc: "Set highpass frequency",
        example: "100 hpf",
        compile: Param,
        varargs: true,
    },
    Word {
        name: "hpq",
        aliases: &[],
        category: "Filter",
        stack: "(v.. --)",
        desc: "Set highpass resonance",
        example: "0.5 hpq",
        compile: Param,
        varargs: true,
    },
    Word {
        name: "hpe",
        aliases: &[],
        category: "Filter",
        stack: "(v.. --)",
        desc: "Set highpass envelope",
        example: "0.5 hpe",
        compile: Param,
        varargs: true,
    },
    Word {
        name: "hpa",
        aliases: &[],
        category: "Filter",
        stack: "(v.. --)",
        desc: "Set highpass attack",
        example: "0.01 hpa",
        compile: Param,
        varargs: true,
    },
    Word {
        name: "hpd",
        aliases: &[],
        category: "Filter",
        stack: "(v.. --)",
        desc: "Set highpass decay",
        example: "0.1 hpd",
        compile: Param,
        varargs: true,
    },
    Word {
        name: "hps",
        aliases: &[],
        category: "Filter",
        stack: "(v.. --)",
        desc: "Set highpass sustain",
        example: "0.5 hps",
        compile: Param,
        varargs: true,
    },
    Word {
        name: "hpr",
        aliases: &[],
        category: "Filter",
        stack: "(v.. --)",
        desc: "Set highpass release",
        example: "0.3 hpr",
        compile: Param,
        varargs: true,
    },
    Word {
        name: "bpf",
        aliases: &[],
        category: "Filter",
        stack: "(v.. --)",
        desc: "Set bandpass frequency",
        example: "1000 bpf",
        compile: Param,
        varargs: true,
    },
    Word {
        name: "bpq",
        aliases: &[],
        category: "Filter",
        stack: "(v.. --)",
        desc: "Set bandpass resonance",
        example: "0.5 bpq",
        compile: Param,
        varargs: true,
    },
    Word {
        name: "bpe",
        aliases: &[],
        category: "Filter",
        stack: "(v.. --)",
        desc: "Set bandpass envelope",
        example: "0.5 bpe",
        compile: Param,
        varargs: true,
    },
    Word {
        name: "bpa",
        aliases: &[],
        category: "Filter",
        stack: "(v.. --)",
        desc: "Set bandpass attack",
        example: "0.01 bpa",
        compile: Param,
        varargs: true,
    },
    Word {
        name: "bpd",
        aliases: &[],
        category: "Filter",
        stack: "(v.. --)",
        desc: "Set bandpass decay",
        example: "0.1 bpd",
        compile: Param,
        varargs: true,
    },
    Word {
        name: "bps",
        aliases: &[],
        category: "Filter",
        stack: "(v.. --)",
        desc: "Set bandpass sustain",
        example: "0.5 bps",
        compile: Param,
        varargs: true,
    },
    Word {
        name: "bpr",
        aliases: &[],
        category: "Filter",
        stack: "(v.. --)",
        desc: "Set bandpass release",
        example: "0.3 bpr",
        compile: Param,
        varargs: true,
    },
    Word {
        name: "llpf",
        aliases: &[],
        category: "Filter",
        stack: "(v.. --)",
        desc: "Set ladder lowpass frequency",
        example: "2000 llpf",
        compile: Param,
        varargs: true,
    },
    Word {
        name: "llpq",
        aliases: &[],
        category: "Filter",
        stack: "(v.. --)",
        desc: "Set ladder lowpass resonance",
        example: "0.5 llpq",
        compile: Param,
        varargs: true,
    },
    Word {
        name: "lhpf",
        aliases: &[],
        category: "Filter",
        stack: "(v.. --)",
        desc: "Set ladder highpass frequency",
        example: "100 lhpf",
        compile: Param,
        varargs: true,
    },
    Word {
        name: "lhpq",
        aliases: &[],
        category: "Filter",
        stack: "(v.. --)",
        desc: "Set ladder highpass resonance",
        example: "0.5 lhpq",
        compile: Param,
        varargs: true,
    },
    Word {
        name: "lbpf",
        aliases: &[],
        category: "Filter",
        stack: "(v.. --)",
        desc: "Set ladder bandpass frequency",
        example: "1000 lbpf",
        compile: Param,
        varargs: true,
    },
    Word {
        name: "lbpq",
        aliases: &[],
        category: "Filter",
        stack: "(v.. --)",
        desc: "Set ladder bandpass resonance",
        example: "0.5 lbpq",
        compile: Param,
        varargs: true,
    },
    Word {
        name: "ftype",
        aliases: &[],
        category: "Filter",
        stack: "(v.. --)",
        desc: "Set filter type",
        example: "1 ftype",
        compile: Param,
        varargs: true,
    },
    Word {
        name: "eqlo",
        aliases: &[],
        category: "Filter",
        stack: "(v.. --)",
        desc: "Set low shelf gain (dB)",
        example: "3 eqlo",
        compile: Param,
        varargs: true,
    },
    Word {
        name: "eqmid",
        aliases: &[],
        category: "Filter",
        stack: "(v.. --)",
        desc: "Set mid peak gain (dB)",
        example: "-2 eqmid",
        compile: Param,
        varargs: true,
    },
    Word {
        name: "eqhi",
        aliases: &[],
        category: "Filter",
        stack: "(v.. --)",
        desc: "Set high shelf gain (dB)",
        example: "1 eqhi",
        compile: Param,
        varargs: true,
    },
    Word {
        name: "tilt",
        aliases: &[],
        category: "Filter",
        stack: "(v.. --)",
        desc: "Set tilt EQ (-1 dark, 1 bright)",
        example: "-0.5 tilt",
        compile: Param,
        varargs: true,
    },
    Word {
        name: "comb",
        aliases: &[],
        category: "Filter",
        stack: "(v.. --)",
        desc: "Set comb filter mix",
        example: "0.5 comb",
        compile: Param,
        varargs: true,
    },
    Word {
        name: "combfreq",
        aliases: &[],
        category: "Filter",
        stack: "(v.. --)",
        desc: "Set comb frequency",
        example: "200 combfreq",
        compile: Param,
        varargs: true,
    },
    Word {
        name: "combfeedback",
        aliases: &[],
        category: "Filter",
        stack: "(v.. --)",
        desc: "Set comb feedback",
        example: "0.5 combfeedback",
        compile: Param,
        varargs: true,
    },
    Word {
        name: "combdamp",
        aliases: &[],
        category: "Filter",
        stack: "(v.. --)",
        desc: "Set comb damping",
        example: "0.5 combdamp",
        compile: Param,
        varargs: true,
    },
    // Reverb
    Word {
        name: "verb",
        aliases: &[],
        category: "Reverb",
        stack: "(v.. --)",
        desc: "Set reverb mix",
        example: "0.3 verb",
        compile: Param,
        varargs: true,
    },
    Word {
        name: "verbdecay",
        aliases: &[],
        category: "Reverb",
        stack: "(v.. --)",
        desc: "Set reverb decay (0-1)",
        example: "0.75 verbdecay",
        compile: Param,
        varargs: true,
    },
    Word {
        name: "verbdamp",
        aliases: &[],
        category: "Reverb",
        stack: "(v.. --)",
        desc: "Set reverb damping",
        example: "0.5 verbdamp",
        compile: Param,
        varargs: true,
    },
    Word {
        name: "verbpredelay",
        aliases: &[],
        category: "Reverb",
        stack: "(v.. --)",
        desc: "Set reverb predelay (0-1)",
        example: "0.1 verbpredelay",
        compile: Param,
        varargs: true,
    },
    Word {
        name: "verbdiff",
        aliases: &[],
        category: "Reverb",
        stack: "(v.. --)",
        desc: "Set reverb diffusion",
        example: "0.7 verbdiff",
        compile: Param,
        varargs: true,
    },
    Word {
        name: "verbtype",
        aliases: &[],
        category: "Reverb",
        stack: "(v.. --)",
        desc: "Set reverb algorithm (vital or dattorro)",
        example: "vital verbtype",
        compile: Param,
        varargs: true,
    },
    Word {
        name: "verbchorus",
        aliases: &[],
        category: "Reverb",
        stack: "(v.. --)",
        desc: "Set reverb chorus amount (0-1)",
        example: "0.3 verbchorus",
        compile: Param,
        varargs: true,
    },
    Word {
        name: "verbchorusfreq",
        aliases: &[],
        category: "Reverb",
        stack: "(v.. --)",
        desc: "Set reverb chorus frequency (0-1)",
        example: "0.2 verbchorusfreq",
        compile: Param,
        varargs: true,
    },
    Word {
        name: "verbprelow",
        aliases: &[],
        category: "Reverb",
        stack: "(v.. --)",
        desc: "Set reverb pre-low filter (0-1)",
        example: "0.2 verbprelow",
        compile: Param,
        varargs: true,
    },
    Word {
        name: "verbprehigh",
        aliases: &[],
        category: "Reverb",
        stack: "(v.. --)",
        desc: "Set reverb pre-high filter (0-1)",
        example: "0.8 verbprehigh",
        compile: Param,
        varargs: true,
    },
    Word {
        name: "verblowcut",
        aliases: &[],
        category: "Reverb",
        stack: "(v.. --)",
        desc: "Set reverb low cut frequency (0-1)",
        example: "0.5 verblowcut",
        compile: Param,
        varargs: true,
    },
    Word {
        name: "verbhighcut",
        aliases: &[],
        category: "Reverb",
        stack: "(v.. --)",
        desc: "Set reverb high cut frequency (0-1)",
        example: "0.7 verbhighcut",
        compile: Param,
        varargs: true,
    },
    Word {
        name: "verblowgain",
        aliases: &[],
        category: "Reverb",
        stack: "(v.. --)",
        desc: "Set reverb low gain (0-1)",
        example: "0.4 verblowgain",
        compile: Param,
        varargs: true,
    },
    Word {
        name: "size",
        aliases: &[],
        category: "Reverb",
        stack: "(v.. --)",
        desc: "Set size",
        example: "1 size",
        compile: Param,
        varargs: true,
    },
    // Delay
    Word {
        name: "delay",
        aliases: &[],
        category: "Delay",
        stack: "(v.. --)",
        desc: "Set delay mix",
        example: "0.3 delay",
        compile: Param,
        varargs: true,
    },
    Word {
        name: "delaytime",
        aliases: &[],
        category: "Delay",
        stack: "(v.. --)",
        desc: "Set delay time",
        example: "0.25 delaytime",
        compile: Param,
        varargs: true,
    },
    Word {
        name: "delayfeedback",
        aliases: &[],
        category: "Delay",
        stack: "(v.. --)",
        desc: "Set delay feedback",
        example: "0.5 delayfeedback",
        compile: Param,
        varargs: true,
    },
    Word {
        name: "delaytype",
        aliases: &[],
        category: "Delay",
        stack: "(v.. --)",
        desc: "Set delay type",
        example: "1 delaytype",
        compile: Param,
        varargs: true,
    },
    // Lo-fi
    Word {
        name: "crush",
        aliases: &[],
        category: "Lo-fi",
        stack: "(v.. --)",
        desc: "Set bit crush",
        example: "8 crush",
        compile: Param,
        varargs: true,
    },
    Word {
        name: "fold",
        aliases: &[],
        category: "Lo-fi",
        stack: "(v.. --)",
        desc: "Set wave fold",
        example: "2 fold",
        compile: Param,
        varargs: true,
    },
    Word {
        name: "wrap",
        aliases: &[],
        category: "Lo-fi",
        stack: "(v.. --)",
        desc: "Set wave wrap",
        example: "0.5 wrap",
        compile: Param,
        varargs: true,
    },
    Word {
        name: "distort",
        aliases: &[],
        category: "Lo-fi",
        stack: "(v.. --)",
        desc: "Set distortion",
        example: "0.5 distort",
        compile: Param,
        varargs: true,
    },
    Word {
        name: "distortvol",
        aliases: &[],
        category: "Lo-fi",
        stack: "(v.. --)",
        desc: "Set distortion volume",
        example: "0.8 distortvol",
        compile: Param,
        varargs: true,
    },
    // Stereo
    Word {
        name: "pan",
        aliases: &[],
        category: "Stereo",
        stack: "(v.. --)",
        desc: "Set pan (-1 to 1)",
        example: "0.5 pan",
        compile: Param,
        varargs: true,
    },
    Word {
        name: "width",
        aliases: &[],
        category: "Stereo",
        stack: "(v.. --)",
        desc: "Set stereo width (0 mono, 1 normal, 2 wide)",
        example: "0 width",
        compile: Param,
        varargs: true,
    },
    Word {
        name: "haas",
        aliases: &[],
        category: "Stereo",
        stack: "(v.. --)",
        desc: "Set Haas delay in ms (spatial placement)",
        example: "8 haas",
        compile: Param,
        varargs: true,
    },
    // Mod FX
    Word {
        name: "phaser",
        aliases: &[],
        category: "Mod FX",
        stack: "(v.. --)",
        desc: "Set phaser rate",
        example: "1 phaser",
        compile: Param,
        varargs: true,
    },
    Word {
        name: "phaserdepth",
        aliases: &[],
        category: "Mod FX",
        stack: "(v.. --)",
        desc: "Set phaser depth",
        example: "0.5 phaserdepth",
        compile: Param,
        varargs: true,
    },
    Word {
        name: "phasersweep",
        aliases: &[],
        category: "Mod FX",
        stack: "(v.. --)",
        desc: "Set phaser sweep",
        example: "0.5 phasersweep",
        compile: Param,
        varargs: true,
    },
    Word {
        name: "phasercenter",
        aliases: &[],
        category: "Mod FX",
        stack: "(v.. --)",
        desc: "Set phaser center",
        example: "1000 phasercenter",
        compile: Param,
        varargs: true,
    },
    Word {
        name: "flanger",
        aliases: &[],
        category: "Mod FX",
        stack: "(v.. --)",
        desc: "Set flanger rate",
        example: "0.5 flanger",
        compile: Param,
        varargs: true,
    },
    Word {
        name: "flangerdepth",
        aliases: &[],
        category: "Mod FX",
        stack: "(v.. --)",
        desc: "Set flanger depth",
        example: "0.5 flangerdepth",
        compile: Param,
        varargs: true,
    },
    Word {
        name: "flangerfeedback",
        aliases: &[],
        category: "Mod FX",
        stack: "(v.. --)",
        desc: "Set flanger feedback",
        example: "0.5 flangerfeedback",
        compile: Param,
        varargs: true,
    },
    Word {
        name: "smear",
        aliases: &[],
        category: "Mod FX",
        stack: "(v.. --)",
        desc: "Set smear allpass chain wet/dry mix (0=bypass, 1=full wet)",
        example: "0.5 smear",
        compile: Param,
        varargs: true,
    },
    Word {
        name: "smearfreq",
        aliases: &[],
        category: "Mod FX",
        stack: "(v.. --)",
        desc: "Set smear allpass break frequency in Hz",
        example: "800 smearfreq",
        compile: Param,
        varargs: true,
    },
    Word {
        name: "smearfb",
        aliases: &[],
        category: "Mod FX",
        stack: "(v.. --)",
        desc: "Set smear feedback for resonance (0-0.95)",
        example: "0.8 smearfb",
        compile: Param,
        varargs: true,
    },
    Word {
        name: "chorus",
        aliases: &[],
        category: "Mod FX",
        stack: "(v.. --)",
        desc: "Set chorus rate",
        example: "1 chorus",
        compile: Param,
        varargs: true,
    },
    Word {
        name: "chorusdepth",
        aliases: &[],
        category: "Mod FX",
        stack: "(v.. --)",
        desc: "Set chorus depth",
        example: "0.5 chorusdepth",
        compile: Param,
        varargs: true,
    },
    Word {
        name: "chorusdelay",
        aliases: &[],
        category: "Mod FX",
        stack: "(v.. --)",
        desc: "Set chorus delay",
        example: "0.02 chorusdelay",
        compile: Param,
        varargs: true,
    },
    Word {
        name: "feedback",
        aliases: &["fb"],
        category: "Mod FX",
        stack: "(v.. --)",
        desc: "Set feedback delay level",
        example: "0.7 feedback",
        compile: Param,
        varargs: true,
    },
    Word {
        name: "fbtime",
        aliases: &["fbt"],
        category: "Mod FX",
        stack: "(v.. --)",
        desc: "Set feedback delay time in ms",
        example: "30 fbtime",
        compile: Param,
        varargs: true,
    },
    Word {
        name: "fbdamp",
        aliases: &["fbd"],
        category: "Mod FX",
        stack: "(v.. --)",
        desc: "Set feedback delay damping",
        example: "0.3 fbdamp",
        compile: Param,
        varargs: true,
    },
    Word {
        name: "fblfo",
        aliases: &[],
        category: "Mod FX",
        stack: "(v.. --)",
        desc: "Set feedback delay LFO rate in Hz",
        example: "2 fblfo",
        compile: Param,
        varargs: true,
    },
    Word {
        name: "fblfodepth",
        aliases: &[],
        category: "Mod FX",
        stack: "(v.. --)",
        desc: "Set feedback delay LFO depth",
        example: "0.5 fblfodepth",
        compile: Param,
        varargs: true,
    },
    Word {
        name: "fblfoshape",
        aliases: &[],
        category: "Mod FX",
        stack: "(v.. --)",
        desc: "Set feedback delay LFO shape",
        example: "tri fblfoshape",
        compile: Param,
        varargs: true,
    },
    // Compressor
    Word {
        name: "comp",
        aliases: &[],
        category: "Compressor",
        stack: "(v.. --)",
        desc: "Set sidechain duck amount (0-1)",
        example: "0.8 comp",
        compile: Param,
        varargs: true,
    },
    Word {
        name: "compattack",
        aliases: &["cattack"],
        category: "Compressor",
        stack: "(v.. --)",
        desc: "Set compressor attack time in seconds",
        example: "0.01 compattack",
        compile: Param,
        varargs: true,
    },
    Word {
        name: "comprelease",
        aliases: &["crelease"],
        category: "Compressor",
        stack: "(v.. --)",
        desc: "Set compressor release time in seconds",
        example: "0.15 comprelease",
        compile: Param,
        varargs: true,
    },
    Word {
        name: "comporbit",
        aliases: &["corbit"],
        category: "Compressor",
        stack: "(v.. --)",
        desc: "Set sidechain source orbit",
        example: "0 comporbit",
        compile: Param,
        varargs: true,
    },
];
