ZoomMultistompZDL

Stereo Routing

Last updated: 2026-05-19

This file answers the recurring community question: how does a ZDL declare itself stereo so the pedal switches to stereo mode? The static answer, from the stock corpus and the ZDL header layout, is: it doesn’t. There is no stereo flag in any ZDL.

1. The header carries no stereo bit

The 76-byte ZdlInfo header was diffed across mono/stereo pairs:

pair only field that differs
CHORUS.ZDL vs STCHO.ZDL sort_index (browse order)
DELAY.ZDL vs STDELAY.ZDL sort_index (browse order)

real_type, knob_type, bass_flags, sort_fx_type, unknown1, unknown2, fx_version, and version_string are identical between mono and stereo versions of the same effect family. Whatever distinguishes stereo is not in the header.

2. The ELF carries no stereo flag either

Section layout for the same pairs is essentially identical: same sections, same VAs, same alignments. The only structural deltas are size — extra DSP code and extra const data — and the exported symbol names.

Examples:

3. Pedal hardware decides routing, not the ZDL

Same-named effect ZDLs are byte-for-byte identical across pedals with different channel counts:

MS-70CDR (stereo) MS-50G (mono) identical?
CHORUS.ZDL MS-50G_CHORUS.ZDL yes (12878 B)
DELAY.ZDL MS-50G_DELAY.ZDL yes (16557 B)
AIR.ZDL MS-50G_AIR.ZDL yes (13948 B)
AUTOPAN.ZDL MS-50G_AUTOPAN.ZDL yes (13834 B)

The same compiled effect is shipped to both pedals. The pedal hardware / firmware is what determines whether the right-channel buffer carries real audio or is silent. Nothing in the ZDL adapts.

4. What this means for custom ZDLs

5. Open questions deliberately not closed by this doc

6. Where this finding lives in the toolchain

Nothing to change. The build/linker.py path already has no stereo bit because stock builds don’t have one either. A “make this effect stereo” control would belong in the per-plugin manifest.json only as a hint to the author about which buffers to touch in their C code, not as a flag the host reads.