ENGINE=chorus · src/engine/chorus/ · generated from chorus.dsp + chorus.json

A simple stereo chorus - and the worked example of the generated-Faust-engine path: it is authored as a Faust .dsp plus a small JSON manifest, with no hand-written C++. The generator (scripts/gen_faust_engine.py) builds the cyfaust kernel, emits the engine wrapper on the shared FaustEngine<Traits> template, and wires the build. See docs/dev/engine-gen.md for the generator design and docs/engine-types/faust.md for the Faust path.


Controls

Chorus control surface
Chorus control surface - open full size download PDF

_Generated from docs/diagrams/controls/chorus.json via make diagrams._

ControlParamIdFaust sliderEffect
MODFREQModSpeed (set_mod_speed)rateLFO rate (0.05–5 Hz)
MOD_AMTModAmpdepthmodulation depth (0–5 ms)
SIZESizedelaybase delay (5–20 ms)
SOSMixmixdry/wet

The platform's 0–1 knob is linear-mapped into each slider's native range, captured from the kernel at init(). The other knobs/pads/CV are unused (a stereo FX). The LED rings show an output-level meter.


Authoring (the generated-Faust path)

The whole engine is two files in src/engine/chorus/:

{ "engine": "chorus", "backend": "faust",
  "knobs": { "Cycle": "rate", "Glow": "depth", "Size": "delay", "Mix (SOS)": "mix" },
  "features": { "meter": true, "color": "0x33ccff" } }

Then:

make faust-engine MANIFEST=src/engine/chorus/chorus.json   # kernel + wrapper + build wiring + control spec
make -j8 ENGINE=chorus                                    # build (~80.5% SRAM_EXEC)
make engine-chorus                                        # clean + build + DFU flash
make -C host test-chorus                                  # host test

The generator also emits docs/diagrams/controls/chorus.json, so make diagrams renders the control surface above - one manifest drives the engine, the build, and the diagram. chorus_engine.h and the generated kernel are checked in (a normal build needs no cyfaust); regenerate the wrapper with --force-glue.