Feat: demo songs
This commit is contained in:
@@ -1083,6 +1083,28 @@ impl Forth {
|
||||
let val = pop_float(stack)?;
|
||||
stack.push(Value::Float(min + val * (max - min), None));
|
||||
}
|
||||
Op::LinMap => {
|
||||
let out_hi = pop_float(stack)?;
|
||||
let out_lo = pop_float(stack)?;
|
||||
let in_hi = pop_float(stack)?;
|
||||
let in_lo = pop_float(stack)?;
|
||||
let val = pop_float(stack)?;
|
||||
let t = if (in_hi - in_lo).abs() < f64::EPSILON {
|
||||
0.0
|
||||
} else {
|
||||
(val - in_lo) / (in_hi - in_lo)
|
||||
};
|
||||
stack.push(Value::Float(out_lo + t * (out_hi - out_lo), None));
|
||||
}
|
||||
Op::ExpMap => {
|
||||
let hi = pop_float(stack)?;
|
||||
let lo = pop_float(stack)?;
|
||||
let val = pop_float(stack)?;
|
||||
if lo <= 0.0 || hi <= 0.0 {
|
||||
return Err("expmap requires positive bounds".into());
|
||||
}
|
||||
stack.push(Value::Float(lo * (hi / lo).powf(val), None));
|
||||
}
|
||||
Op::Perlin => {
|
||||
let freq = pop_float(stack)?;
|
||||
let val = perlin_noise_1d(freq * ctx.beat);
|
||||
|
||||
Reference in New Issue
Block a user