diff --git a/CHANGELOG.md b/CHANGELOG.md index 5cfe2a5..bee867b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,11 @@ All notable changes to this project will be documented in this file. +## [0.0.7] - Unreleased + +### Added +- 3-operator FM synthesis words: `fm2` (operator 2 depth), `fm2h` (operator 2 harmonic ratio), `fmalgo` (algorithm: 0=cascade, 1=parallel, 2=branch), `fmfb` (feedback amount). Extends the existing 2-OP FM engine to a full 3-OP architecture with configurable routing and operator feedback. + ## [0.0.6] - 2026-05-02 ### Added diff --git a/crates/forth/src/words/sound.rs b/crates/forth/src/words/sound.rs index b5e7661..ba897bf 100644 --- a/crates/forth/src/words/sound.rs +++ b/crates/forth/src/words/sound.rs @@ -457,6 +457,46 @@ pub(super) const WORDS: &[Word] = &[ compile: Param, varargs: false, }, + Word { + name: "fm2", + aliases: &[], + category: "FM", + stack: "(f --)", + desc: "Set FM operator 2 depth", + example: "1.5 fm2", + compile: Param, + varargs: false, + }, + Word { + name: "fm2h", + aliases: &[], + category: "FM", + stack: "(f --)", + desc: "Set FM operator 2 harmonic ratio", + example: "3 fm2h", + compile: Param, + varargs: false, + }, + Word { + name: "fmalgo", + aliases: &[], + category: "FM", + stack: "(n --)", + desc: "Set FM algorithm (0=cascade 1=parallel 2=branch)", + example: "0 fmalgo", + compile: Param, + varargs: false, + }, + Word { + name: "fmfb", + aliases: &[], + category: "FM", + stack: "(f --)", + desc: "Set FM feedback amount", + example: "0.5 fmfb", + compile: Param, + varargs: false, + }, // Modulation Word { name: "vib",