Feat: all engine params use varargs and can eat the stack, document it as such

This commit is contained in:
2026-02-10 19:41:59 +01:00
parent 38fad92f2e
commit d2e28b0415
3 changed files with 304 additions and 304 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -6,61 +6,61 @@ pub(super) const WORDS: &[Word] = &[
name: "chan",
aliases: &[],
category: "MIDI",
stack: "(n --)",
stack: "(v.. --)",
desc: "Set MIDI channel 1-16",
example: "1 chan",
compile: Param,
varargs: false,
varargs: true,
},
Word {
name: "ccnum",
aliases: &[],
category: "MIDI",
stack: "(n --)",
stack: "(v.. --)",
desc: "Set MIDI CC number 0-127",
example: "1 ccnum",
compile: Param,
varargs: false,
varargs: true,
},
Word {
name: "ccout",
aliases: &[],
category: "MIDI",
stack: "(n --)",
stack: "(v.. --)",
desc: "Set MIDI CC output value 0-127",
example: "64 ccout",
compile: Param,
varargs: false,
varargs: true,
},
Word {
name: "bend",
aliases: &[],
category: "MIDI",
stack: "(f --)",
stack: "(v.. --)",
desc: "Set pitch bend -1.0 to 1.0 (0 = center)",
example: "0.5 bend",
compile: Param,
varargs: false,
varargs: true,
},
Word {
name: "pressure",
aliases: &[],
category: "MIDI",
stack: "(n --)",
stack: "(v.. --)",
desc: "Set channel pressure (aftertouch) 0-127",
example: "64 pressure",
compile: Param,
varargs: false,
varargs: true,
},
Word {
name: "program",
aliases: &[],
category: "MIDI",
stack: "(n --)",
stack: "(v.. --)",
desc: "Set program change number 0-127",
example: "0 program",
compile: Param,
varargs: false,
varargs: true,
},
Word {
name: "m.",
@@ -126,10 +126,10 @@ pub(super) const WORDS: &[Word] = &[
name: "dev",
aliases: &[],
category: "MIDI",
stack: "(n --)",
stack: "(v.. --)",
desc: "Set MIDI device slot 0-3 for output/input",
example: "1 dev 60 note m.",
compile: Param,
varargs: false,
varargs: true,
},
];

View File

@@ -48,555 +48,555 @@ pub(super) const WORDS: &[Word] = &[
name: "bank",
aliases: &[],
category: "Sample",
stack: "(str --)",
stack: "(v.. --)",
desc: "Set sample bank suffix",
example: "\"a\" bank",
compile: Param,
varargs: false,
varargs: true,
},
Word {
name: "time",
aliases: &[],
category: "Sample",
stack: "(f --)",
stack: "(v.. --)",
desc: "Set time offset",
example: "0.1 time",
compile: Param,
varargs: false,
varargs: true,
},
Word {
name: "repeat",
aliases: &[],
category: "Sample",
stack: "(n --)",
stack: "(v.. --)",
desc: "Set repeat count",
example: "4 repeat",
compile: Param,
varargs: false,
varargs: true,
},
Word {
name: "dur",
aliases: &[],
category: "Sample",
stack: "(f --)",
stack: "(v.. --)",
desc: "Set duration",
example: "0.5 dur",
compile: Param,
varargs: false,
varargs: true,
},
Word {
name: "gate",
aliases: &[],
category: "Sample",
stack: "(f --)",
stack: "(v.. --)",
desc: "Set gate time",
example: "0.8 gate",
compile: Param,
varargs: false,
varargs: true,
},
Word {
name: "speed",
aliases: &[],
category: "Sample",
stack: "(f --)",
stack: "(v.. --)",
desc: "Set playback speed",
example: "1.5 speed",
compile: Param,
varargs: false,
varargs: true,
},
Word {
name: "begin",
aliases: &[],
category: "Sample",
stack: "(f --)",
stack: "(v.. --)",
desc: "Set sample start (0-1)",
example: "0.25 begin",
compile: Param,
varargs: false,
varargs: true,
},
Word {
name: "end",
aliases: &[],
category: "Sample",
stack: "(f --)",
stack: "(v.. --)",
desc: "Set sample end (0-1)",
example: "0.75 end",
compile: Param,
varargs: false,
varargs: true,
},
Word {
name: "voice",
aliases: &[],
category: "Sample",
stack: "(n --)",
stack: "(v.. --)",
desc: "Set voice number",
example: "1 voice",
compile: Param,
varargs: false,
varargs: true,
},
Word {
name: "orbit",
aliases: &[],
category: "Sample",
stack: "(n --)",
stack: "(v.. --)",
desc: "Set orbit/bus",
example: "0 orbit",
compile: Param,
varargs: false,
varargs: true,
},
Word {
name: "n",
aliases: &[],
category: "Sample",
stack: "(n --)",
stack: "(v.. --)",
desc: "Set sample number",
example: "0 n",
compile: Param,
varargs: false,
varargs: true,
},
Word {
name: "cut",
aliases: &[],
category: "Sample",
stack: "(n --)",
stack: "(v.. --)",
desc: "Set cut group",
example: "1 cut",
compile: Param,
varargs: false,
varargs: true,
},
Word {
name: "reset",
aliases: &[],
category: "Sample",
stack: "(n --)",
stack: "(v.. --)",
desc: "Reset parameter",
example: "1 reset",
compile: Param,
varargs: false,
varargs: true,
},
// Oscillator
Word {
name: "freq",
aliases: &[],
category: "Oscillator",
stack: "(f --)",
stack: "(v.. --)",
desc: "Set frequency (Hz)",
example: "440 freq",
compile: Param,
varargs: false,
varargs: true,
},
Word {
name: "detune",
aliases: &[],
category: "Oscillator",
stack: "(f --)",
stack: "(v.. --)",
desc: "Set detune amount",
example: "0.01 detune",
compile: Param,
varargs: false,
varargs: true,
},
Word {
name: "glide",
aliases: &[],
category: "Oscillator",
stack: "(f --)",
stack: "(v.. --)",
desc: "Set glide/portamento",
example: "0.1 glide",
compile: Param,
varargs: false,
varargs: true,
},
Word {
name: "pw",
aliases: &[],
category: "Oscillator",
stack: "(f --)",
stack: "(v.. --)",
desc: "Set pulse width",
example: "0.5 pw",
compile: Param,
varargs: false,
varargs: true,
},
Word {
name: "spread",
aliases: &[],
category: "Oscillator",
stack: "(f --)",
stack: "(v.. --)",
desc: "Set stereo spread",
example: "0.5 spread",
compile: Param,
varargs: false,
varargs: true,
},
Word {
name: "mult",
aliases: &[],
category: "Oscillator",
stack: "(f --)",
stack: "(v.. --)",
desc: "Set multiplier",
example: "2 mult",
compile: Param,
varargs: false,
varargs: true,
},
Word {
name: "warp",
aliases: &[],
category: "Oscillator",
stack: "(f --)",
stack: "(v.. --)",
desc: "Set warp amount",
example: "0.5 warp",
compile: Param,
varargs: false,
varargs: true,
},
Word {
name: "mirror",
aliases: &[],
category: "Oscillator",
stack: "(f --)",
stack: "(v.. --)",
desc: "Set mirror",
example: "1 mirror",
compile: Param,
varargs: false,
varargs: true,
},
Word {
name: "harmonics",
aliases: &[],
category: "Oscillator",
stack: "(f --)",
stack: "(v.. --)",
desc: "Set harmonics (mutable only)",
example: "4 harmonics",
compile: Param,
varargs: false,
varargs: true,
},
Word {
name: "timbre",
aliases: &[],
category: "Oscillator",
stack: "(f --)",
stack: "(v.. --)",
desc: "Set timbre (mutable only)",
example: "0.5 timbre",
compile: Param,
varargs: false,
varargs: true,
},
Word {
name: "morph",
aliases: &[],
category: "Oscillator",
stack: "(f --)",
stack: "(v.. --)",
desc: "Set morph (mutable only)",
example: "0.5 morph",
compile: Param,
varargs: false,
varargs: true,
},
Word {
name: "coarse",
aliases: &[],
category: "Oscillator",
stack: "(f --)",
stack: "(v.. --)",
desc: "Set coarse tune",
example: "12 coarse",
compile: Param,
varargs: false,
varargs: true,
},
Word {
name: "sub",
aliases: &[],
category: "Oscillator",
stack: "(f --)",
stack: "(v.. --)",
desc: "Set sub oscillator level",
example: "0.5 sub",
compile: Param,
varargs: false,
varargs: true,
},
Word {
name: "suboct",
aliases: &[],
category: "Oscillator",
stack: "(n --)",
stack: "(v.. --)",
desc: "Set sub oscillator octave",
example: "2 suboct",
compile: Param,
varargs: false,
varargs: true,
},
Word {
name: "subwave",
aliases: &[],
category: "Oscillator",
stack: "(n --)",
stack: "(v.. --)",
desc: "Set sub oscillator waveform",
example: "1 subwave",
compile: Param,
varargs: false,
varargs: true,
},
Word {
name: "note",
aliases: &[],
category: "Oscillator",
stack: "(n --)",
stack: "(v.. --)",
desc: "Set MIDI note",
example: "60 note",
compile: Param,
varargs: false,
varargs: true,
},
// Wavetable
Word {
name: "scan",
aliases: &[],
category: "Wavetable",
stack: "(f --)",
stack: "(v.. --)",
desc: "Set wavetable scan position (0-1)",
example: "0.5 scan",
compile: Param,
varargs: false,
varargs: true,
},
Word {
name: "wtlen",
aliases: &[],
category: "Wavetable",
stack: "(n --)",
stack: "(v.. --)",
desc: "Set wavetable cycle length in samples",
example: "2048 wtlen",
compile: Param,
varargs: false,
varargs: true,
},
Word {
name: "scanlfo",
aliases: &[],
category: "Wavetable",
stack: "(f --)",
stack: "(v.. --)",
desc: "Set scan LFO rate (Hz)",
example: "0.2 scanlfo",
compile: Param,
varargs: false,
varargs: true,
},
Word {
name: "scandepth",
aliases: &[],
category: "Wavetable",
stack: "(f --)",
stack: "(v.. --)",
desc: "Set scan LFO depth (0-1)",
example: "0.4 scandepth",
compile: Param,
varargs: false,
varargs: true,
},
Word {
name: "scanshape",
aliases: &[],
category: "Wavetable",
stack: "(s --)",
stack: "(v.. --)",
desc: "Set scan LFO shape (sine/tri/saw/square/sh)",
example: "\"tri\" scanshape",
compile: Param,
varargs: false,
varargs: true,
},
// FM
Word {
name: "fm",
aliases: &[],
category: "FM",
stack: "(f --)",
stack: "(v.. --)",
desc: "Set FM frequency",
example: "200 fm",
compile: Param,
varargs: false,
varargs: true,
},
Word {
name: "fmh",
aliases: &[],
category: "FM",
stack: "(f --)",
stack: "(v.. --)",
desc: "Set FM harmonic ratio",
example: "2 fmh",
compile: Param,
varargs: false,
varargs: true,
},
Word {
name: "fmshape",
aliases: &[],
category: "FM",
stack: "(f --)",
stack: "(v.. --)",
desc: "Set FM shape",
example: "0 fmshape",
compile: Param,
varargs: false,
varargs: true,
},
Word {
name: "fme",
aliases: &[],
category: "FM",
stack: "(f --)",
stack: "(v.. --)",
desc: "Set FM envelope",
example: "0.5 fme",
compile: Param,
varargs: false,
varargs: true,
},
Word {
name: "fma",
aliases: &[],
category: "FM",
stack: "(f --)",
stack: "(v.. --)",
desc: "Set FM attack",
example: "0.01 fma",
compile: Param,
varargs: false,
varargs: true,
},
Word {
name: "fmd",
aliases: &[],
category: "FM",
stack: "(f --)",
stack: "(v.. --)",
desc: "Set FM decay",
example: "0.1 fmd",
compile: Param,
varargs: false,
varargs: true,
},
Word {
name: "fms",
aliases: &[],
category: "FM",
stack: "(f --)",
stack: "(v.. --)",
desc: "Set FM sustain",
example: "0.5 fms",
compile: Param,
varargs: false,
varargs: true,
},
Word {
name: "fmr",
aliases: &[],
category: "FM",
stack: "(f --)",
stack: "(v.. --)",
desc: "Set FM release",
example: "0.1 fmr",
compile: Param,
varargs: false,
varargs: true,
},
Word {
name: "fm2",
aliases: &[],
category: "FM",
stack: "(f --)",
stack: "(v.. --)",
desc: "Set FM operator 2 depth",
example: "1.5 fm2",
compile: Param,
varargs: false,
varargs: true,
},
Word {
name: "fm2h",
aliases: &[],
category: "FM",
stack: "(f --)",
stack: "(v.. --)",
desc: "Set FM operator 2 harmonic ratio",
example: "3 fm2h",
compile: Param,
varargs: false,
varargs: true,
},
Word {
name: "fmalgo",
aliases: &[],
category: "FM",
stack: "(n --)",
stack: "(v.. --)",
desc: "Set FM algorithm (0=cascade 1=parallel 2=branch)",
example: "0 fmalgo",
compile: Param,
varargs: false,
varargs: true,
},
Word {
name: "fmfb",
aliases: &[],
category: "FM",
stack: "(f --)",
stack: "(v.. --)",
desc: "Set FM feedback amount",
example: "0.5 fmfb",
compile: Param,
varargs: false,
varargs: true,
},
// Modulation
Word {
name: "vib",
aliases: &[],
category: "Modulation",
stack: "(f --)",
stack: "(v.. --)",
desc: "Set vibrato rate",
example: "5 vib",
compile: Param,
varargs: false,
varargs: true,
},
Word {
name: "vibmod",
aliases: &[],
category: "Modulation",
stack: "(f --)",
stack: "(v.. --)",
desc: "Set vibrato depth",
example: "0.5 vibmod",
compile: Param,
varargs: false,
varargs: true,
},
Word {
name: "vibshape",
aliases: &[],
category: "Modulation",
stack: "(f --)",
stack: "(v.. --)",
desc: "Set vibrato shape",
example: "0 vibshape",
compile: Param,
varargs: false,
varargs: true,
},
Word {
name: "am",
aliases: &[],
category: "Modulation",
stack: "(f --)",
stack: "(v.. --)",
desc: "Set AM frequency",
example: "10 am",
compile: Param,
varargs: false,
varargs: true,
},
Word {
name: "amdepth",
aliases: &[],
category: "Modulation",
stack: "(f --)",
stack: "(v.. --)",
desc: "Set AM depth",
example: "0.5 amdepth",
compile: Param,
varargs: false,
varargs: true,
},
Word {
name: "amshape",
aliases: &[],
category: "Modulation",
stack: "(f --)",
stack: "(v.. --)",
desc: "Set AM shape",
example: "0 amshape",
compile: Param,
varargs: false,
varargs: true,
},
Word {
name: "rm",
aliases: &[],
category: "Modulation",
stack: "(f --)",
stack: "(v.. --)",
desc: "Set RM frequency",
example: "100 rm",
compile: Param,
varargs: false,
varargs: true,
},
Word {
name: "rmdepth",
aliases: &[],
category: "Modulation",
stack: "(f --)",
stack: "(v.. --)",
desc: "Set RM depth",
example: "0.5 rmdepth",
compile: Param,
varargs: false,
varargs: true,
},
Word {
name: "rmshape",
aliases: &[],
category: "Modulation",
stack: "(f --)",
stack: "(v.. --)",
desc: "Set RM shape",
example: "0 rmshape",
compile: Param,
varargs: false,
varargs: true,
},
// LFO
Word {