VIBRATO — signal-flow flowchart
VIBRATO — signal-flow flowchart
Image rep algo 50 · slots 50 · unit 0 (I-RAM load 84) · family modulation · confidence high.
vibrato: wet-only modulated delay
53 words, 12 class-A coefficient multiplies (2 named), 0 instructions still opaque, 16 of 53 not yet decoded. Landmarks detected: 2 LFO phase word(s), 2 C-format immediate load(s), 1 DRAM read/write word(s), 2 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, LFO SPEED, PHASE, 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 — the old 'envelope detector' reading is WITHDRAWN ×2"]
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, LFO SPEED, PHASE, LFO WAVEFORM, VOLUME, REV SEND.
Per-instruction detail: ../disasm/prog50_vibrato.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/.