Skip to content

repeat98/ZoomMultistompZDL

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

76 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Zoom MultiStomp ZDL

Custom .ZDL effects for Zoom MultiStomp pedals, plus the reverse-engineered toolchain used to build them.

Download Effects

The ready-to-load effects are in dist/. Point Zoom Effect Manager at that folder, or download individual .ZDL files from it. You do not need the build toolchain unless you want to modify or rebuild effects.

Install With Zoom Effect Manager

Use Zoom Effect Manager 2.3.3 or newer.

  1. Open Zoom Effect Manager, connect your pedal, then open Settings.
  2. Choose Read Effects from folder and select this repo's dist/ folder.

Zoom Effect Manager setting for reading effects from a folder

  1. In the effect browser, enable Effects from devices and From Folder.
  2. Add the desired effects to the device and write them with Zoom Effect Manager.

Zoom Effect Manager source toggles for Effects from devices and From Folder

Back up your current effect list before writing. This project is still reverse engineering firmware behavior, and experimental builds can crash or freeze a pedal until power-cycled.

More detailed install notes live in docs/INSTALLING-ZDLS.md.

Compatibility

Hardware testing is still narrow. Treat every model outside the confirmed row as unverified until someone reports a clean load and audio test.

Device family Status
Zoom MS-70CDR firmware 2.10 Primary hardware target; current release effects have been developed against this pedal.
Other ZDL-based Zoom MultiStomp pedals Unconfirmed. They may load compatible ZDLs, but need hardware reports.
Newer Zoom ZD2-based pedals Not supported by these ZDL builds.

Build Your Own Effects

Start from src/airwindows/gain/ if you want the smallest working custom effect. Copy that directory, give the effect a new name and unused fxid in manifest.json, then update the C audio function and build.py to use the new names. Add the new build script to build_all.py once it builds on its own.

Keep the first hardware test boring: audio_nop: true or tiny pass-through DSP, no large static state, no heap, and no new runtime helper calls. The safe path is documented in docs/SAFE-DSP-RULES.md and the effect directory conventions are summarized in src/airwindows/README.md.

Known Issues

  • Only the Zoom MS-70CDR firmware 2.10 has been tested seriously so far.
  • Experimental builds can freeze or crash the pedal until it is power-cycled.
  • ToTape9.ZDL currently crashes on load on the test MS-70CDR. The next debugging split is the load shape itself: audio-NOP, parameter/edit-handler count, and helper-symbol usage.
  • Parameter scaling is part of the porting work. A port should not be called source-equivalent until its raw knob ranges have been confirmed on hardware.
  • These are .ZDL builds, not .ZD2 builds.

Documentation

Start here if you want more than the download folder:

Doc What it covers
docs/INSTALLING-ZDLS.md Step-by-step Zoom Effect Manager folder install.
docs/ZDL-REVERSE-ENGINEERING-STATUS.md Current map of the ZDL wrapper, runtime ABI, and known state fields.
docs/STATE-ABI-PROGRESS.md Hardware probe log and findings we do not want to lose.
docs/AIRWINDOWS-1TO1-PORT-ROADMAP.md Roadmap for making honest source-equivalent Airwindows ports.
docs/AIRWINDOWS-EXACT-PORTS.md Rules for what can and cannot be called a 1:1 Airwindows port.
docs/SAFE-DSP-RULES.md Pedal-safe DSP/linking constraints learned from hardware failures.
docs/3-PARAM-LINKER-BUG.md Investigation of the old edit-mode parameter-count bug.
docs/TI-PDF-NOTES.md Notes distilled from the TI C6000 manuals in this folder.
docs/CONTRIBUTING.md Hardware-test asks and contribution notes.
docs/sprab89b.pdf TI C6000 application note reference.
docs/sprui03f.pdf TI C6000 compiler/toolchain reference.
docs/sprui04g.pdf TI C6000 assembly/linker tools reference.
build/ABI.md Low-level linker/runtime ABI reference for developers.

Build From Source

Building requires Python 3.10+ and TI C6000 Code Generation Tools. Installing prebuilt effects from dist/ does not.

The build scripts currently expect the TI compiler here:

/Applications/ti/ccs2050/ccs/tools/compiler/ti-cgt-c6000_8.5.0.LTS

On Linux, Windows, or another Code Composer Studio install, update TI_ROOT in the relevant src/airwindows/*/build.py.

Build release effects:

python3 -B build_all.py

Build one effect:

python3 -B build_all.py stereochorus
python3 -B build_all.py totape9

Build diagnostic/probe effects too:

python3 -B build_all.py --all

The default build intentionally keeps dist/ clean and release-focused. Diagnostic ZDLs are useful for development, but should not be mixed into the download folder.

Technical Notes

This repo builds loadable Zoom .ZDL effects without Zoom's unreleased SDK. The core pieces are:

Path Purpose
build/linker.py Static linker: TI C6000 .obj -> complete Zoom .ZDL.
src/airwindows/ Effect sources, manifests, images, and per-effect build scripts.
src/hardware_probes/ Diagnostic ZDLs used to map the pedal runtime ABI.
dist/ Release .ZDL files for users.
stock_zdls/ Tracked 830-file stock ZDL corpus used for comparison.

The important recent finding is that custom effects can use the host-managed large state descriptor at ctx[3]. That is what made the stateful StereoChorus port possible. ToTape9 is now testing the next boundary: whether a much larger 9-parameter tape kernel can use the same state strategy without tripping load-time handler, relocation, or helper-symbol issues.

Known runtime map for custom ZDLs:

Field Meaning
ctx[1] parameter float table
ctx[4] dry/guitar input buffer
ctx[5] current effect buffer, 8 left samples then 8 right samples
ctx[6] output accumulator for effects that add instead of processing in place
ctx[11] / ctx[12] magic shuttle; preserve every audio call
ctx[2] + 0x10 / ctx[2] + 0x18 small persistent per-instance state blocks
ctx[3][0..2] large per-instance descriptor: base, end, byte span

Parameter scaling is not universal across every handler path. StereoChorus showed that the current release handler path behaves like normalized 0..1 knob floats, while older helper assumptions saturated around UI value 14. Effects that claim source-compatible control laws should document how their raw parameter scaling was confirmed.

Repository Layout

ZoomMultistompZDL/
β”œβ”€β”€ README.md
β”œβ”€β”€ build/                 linker, ELF/ZDL helpers, stock-derived handler blobs
β”œβ”€β”€ docs/                  install notes, ABI status, hardware probe logs
β”œβ”€β”€ dist/                  release ZDLs to load in Zoom Effect Manager
β”œβ”€β”€ src/hardware_probes/       diagnostic ZDLs for runtime ABI experiments
β”œβ”€β”€ src/airwindows/        effect sources, manifests, and build scripts
β”œβ”€β”€ stock_zdls/            tracked 830-file stock ZDL corpus used for comparison
└── build_all.py           release/probe build entrypoint

Several research references are useful locally but are intentionally ignored by git, so they are not part of this repo checkout:

airwindows-ref/          optional full Airwindows source tree
zoom-fx-modding-ref/     optional community ZDL notes and disassembly walkthroughs
ZoomPedalFun-main/       optional independent Zoom firmware RE work

If you clone those beside the repo, keep treating them as read-only references.

Contributing

Hardware reports are gold. When testing a ZDL, please include:

Item Example
Pedal model and firmware MS-70CDR firmware 2.10
ZDL filename and commit StChorus.ZDL @ cee0d8a
Load result boots, freezes on startup, freezes on unbypass
Audio result bypass, dry passthrough, chorus works, high-pitched tone
Parameter behavior Speed works 0..100, Depth saturates, page 2 knob missing

Open an issue or PR with findings. Keep experimental claims precise: "boots on my MS-70CDR" is more useful than "works everywhere."

License

Repository code is MIT unless a file says otherwise. Airwindows plugin DSP is MIT by Chris Johnson/Airwindows. Zoom firmware, stock effects, and third-party reference material are owned by their respective authors and are used only for interoperability and reverse-engineering research.

About

No description, website, or topics provided.

Resources

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors