MODULATED CHORUS — signal-flow flowchart

Image rep algo 2 · slots 2 · unit 0 (I-RAM load 84) · family modulation · confidence high.

modulated chorus: dual-rate ensemble

85 words, 25 class-A coefficient multiplies (5 named), 0 instructions still opaque, 23 of 85 not yet decoded. Landmarks detected: 2 LFO phase word(s), 4 C-format immediate load(s), 1 DRAM read/write word(s), 3 waveshaper LUT selector(s).

flowchart TD
    N0["Stereo input (L / R)"]
    N1["LFO phase accumulator<br/>phase += f/44100 (Q0.23), wrap at 0x7FFFFF<br/>+ waveform lookup (LUT)"]
    N0 --> N1
    N2["controls: DEPTH, SLOW LFO SPEED, FAST LFO SPEED, LFO WAVEFORM"]
    N1 -.-> N2
    N3["External delay line (DRAM)<br/>1 read/write word(s) (880.1.60 = READ, 880.1.20 = WRITE)"]
    N1 --> N3
    N4["C-format immediate loads (C40/C41)<br/>destination register UNKNOWN &mdash; the old 'envelope detector' reading is WITHDRAWN &times;4"]
    N3 --> N4
    N5["VOLUME<br/>output level"]
    N4 --> N5
    N6["REV SEND<br/>to reverb bus"]
    N5 --> N6
    N7["Output (RETURN to kernel epilogue)"]
    N6 --> N7

    classDef io fill:#e8eef7,stroke:#33475b,stroke-width:1px,color:#111;
    classDef proven fill:#d7f0d7,stroke:#2e7d32,stroke-width:2px,color:#111;
    classDef measured fill:#dbe9fb,stroke:#1565c0,stroke-width:1.5px,color:#111;
    classDef inferred fill:#fdf0d5,stroke:#b8860b,stroke-width:1.5px,color:#111;
    classDef open fill:#eeeeee,stroke:#888,stroke-width:1px,color:#333,stroke-dasharray:5 5;
    classDef ctrl fill:#f3e8fb,stroke:#6a1b9a,stroke-width:1px,color:#111;
    class N0,N7 io;
    class N1 measured;
    class N2,N5,N6 ctrl;
    class N3 inferred;
    class N4 open;

Classic-topology match

Most likely textbook topology: LFO-modulated delay (chorus/flanger/ensemble) or swept all-pass chain (phaser).

An LFO phase accumulator (a D-RAM cell ramping by the LFO-SPEED each frame) modulates a short delay tap (chorus/flanger, + feedback/resonance) or sweeps an all-pass chain (phaser sweeps notches, ~0 delay-DRAM but many z⁻¹ pairs).

Instruction hint: the LFO cell’s per-frame increment IS the LFO-SPEED parameter (LIVE: CHORUS cell 0x10 ramps +114/frame, →+494 when the SPEED knob is driven); the LFO-conditional MACs are the class-A words that do NOT fire every frame (LIVE: FLANGER’s SRC 0x08 coef-square, f31=4).

UI parameters (MEASURED, notes/kn5000-dsp-paramlist.md): DEPTH, SLOW LFO SPEED, FAST LFO SPEED, FAST LFO BALANCE, LFO WAVEFORM, VOLUME, REV SEND.

Per-instruction detail: ../disasm/prog02_modulated_chorus.dsm. Confidence legend and method: README.md. Narrative: the MAME development blog, KN5000 effects-DSP series (Parts 78-84). Reference: the project docs site, /effects-dsp/.