Feat: add new words for new audio rate modulations

This commit is contained in:
2026-03-12 17:33:50 +01:00
parent 453ba62403
commit 9cc17d14de
3 changed files with 34 additions and 1 deletions

View File

@@ -1433,7 +1433,7 @@ impl Forth {
let dur = pop_float(stack)? * ctx.step_duration(); let dur = pop_float(stack)? * ctx.step_duration();
let end = pop_float(stack)?; let end = pop_float(stack)?;
let start = pop_float(stack)?; let start = pop_float(stack)?;
let suffix = match curve { 1 => "e", 2 => "s", _ => "" }; let suffix = match curve { 1 => "e", 2 => "s", 3 => "i", 4 => "o", 5 => "p", _ => "" };
let s = format!("{start}>{end}:{dur}{suffix}"); let s = format!("{start}>{end}:{dur}{suffix}");
stack.push(Value::Str(s.into(), None)); stack.push(Value::Str(s.into(), None));
} }

View File

@@ -136,6 +136,9 @@ pub(super) fn simple_op(name: &str) -> Option<Op> {
"slide" => Op::ModSlide(0), "slide" => Op::ModSlide(0),
"expslide" => Op::ModSlide(1), "expslide" => Op::ModSlide(1),
"sslide" => Op::ModSlide(2), "sslide" => Op::ModSlide(2),
"islide" => Op::ModSlide(3),
"oslide" => Op::ModSlide(4),
"pslide" => Op::ModSlide(5),
"jit" => Op::ModRnd(0), "jit" => Op::ModRnd(0),
"sjit" => Op::ModRnd(1), "sjit" => Op::ModRnd(1),
"drunk" => Op::ModRnd(2), "drunk" => Op::ModRnd(2),

View File

@@ -862,6 +862,36 @@ pub(super) const WORDS: &[Word] = &[
compile: Simple, compile: Simple,
varargs: false, varargs: false,
}, },
Word {
name: "islide",
aliases: &[],
category: "Audio Modulation",
stack: "(start end dur -- str)",
desc: "Swell transition (slow start, fast finish): start>end:duri",
example: "200 4000 1 islide lpf",
compile: Simple,
varargs: false,
},
Word {
name: "oslide",
aliases: &[],
category: "Audio Modulation",
stack: "(start end dur -- str)",
desc: "Pluck transition (fast attack, slow settle): start>end:duro",
example: "0 1 0.5 oslide gain",
compile: Simple,
varargs: false,
},
Word {
name: "pslide",
aliases: &[],
category: "Audio Modulation",
stack: "(start end dur -- str)",
desc: "Stair transition (8 discrete steps): start>end:durp",
example: "0 1 2 pslide gain",
compile: Simple,
varargs: false,
},
Word { Word {
name: "jit", name: "jit",
aliases: &[], aliases: &[],