[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-79898":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":8,"htmlUrl":8,"language":9,"languages":8,"totalLinesOfCode":8,"stars":10,"forks":11,"watchers":12,"openIssues":13,"contributorsCount":14,"subscribersCount":14,"size":14,"stars1d":15,"stars7d":16,"stars30d":13,"stars90d":14,"forks30d":14,"starsTrendScore":17,"compositeScore":18,"rankGlobal":8,"rankLanguage":8,"license":8,"archived":19,"fork":19,"defaultBranch":20,"hasWiki":19,"hasPages":19,"topics":21,"createdAt":8,"pushedAt":8,"updatedAt":22,"readmeContent":23,"aiSummary":24,"trendingCount":14,"starSnapshotCount":14,"syncStatus":16,"lastSyncTime":25,"discoverSource":26},79898,"ZoomMultistompZDL","repeat98\u002FZoomMultistompZDL","repeat98",null,"Python",98,4,8,5,0,1,2,3,2.1,false,"main",[],"2026-06-12 02:03:55","# Zoom MultiStomp ZDL\n\nCustom `.ZDL` effects for Zoom MultiStomp pedals, plus the reverse-engineered\ntoolchain used to build them.\n\n## Download Effects\n\nThe ready-to-load effects are in [dist\u002F](dist\u002F). Point Zoom Effect Manager at\nthat folder, or download individual `.ZDL` files from it. You do not need the\nbuild toolchain unless you want to modify or rebuild effects.\n\n## Install With Zoom Effect Manager\n\nUse [Zoom Effect Manager](https:\u002F\u002Fzoomeffectmanager.com\u002Fen\u002Fdownload\u002F) 2.3.3 or\nnewer.\n\n1. Open Zoom Effect Manager, connect your pedal, then open `Settings`.\n2. Choose `Read Effects from folder` and select this repo's [dist\u002F](dist\u002F)\n   folder.\n\n![Zoom Effect Manager setting for reading effects from a folder](docs\u002Fimages\u002Fread-effects.png)\n\n3. In the effect browser, enable `Effects from devices` and `From Folder`.\n4. Add the desired effects to the device and write them with Zoom Effect\n   Manager.\n\n![Zoom Effect Manager source toggles for Effects from devices and From Folder](docs\u002Fimages\u002Ffrom-folder.png)\n\nBack up your current effect list before writing. This project is still reverse\nengineering firmware behavior, and experimental builds can crash or freeze a\npedal until power-cycled.\n\nMore detailed install notes live in [docs\u002FINSTALLING-ZDLS.md](docs\u002FINSTALLING-ZDLS.md).\n\n## Compatibility\n\nHardware testing is still narrow. Treat every model outside the confirmed row\nas unverified until someone reports a clean load and audio test.\n\n| Device family | Status |\n|---|---|\n| Zoom MS-70CDR firmware 2.10 | Primary hardware target; current release effects have been developed against this pedal. |\n| Other ZDL-based Zoom MultiStomp pedals | Unconfirmed. They may load compatible ZDLs, but need hardware reports. |\n| Newer Zoom ZD2-based pedals | Not supported by these ZDL builds. |\n\n## Build Your Own Effects\n\nStart from [src\u002Fairwindows\u002Fgain\u002F](src\u002Fairwindows\u002Fgain\u002F) if you want the\nsmallest working custom effect. Copy that directory, give the effect a new\nname and unused `fxid` in `manifest.json`, then update the C audio function and\n`build.py` to use the new names. Add the new build script to\n[build_all.py](build_all.py) once it builds on its own.\n\nKeep the first hardware test boring: `audio_nop: true` or tiny pass-through\nDSP, no large static state, no heap, and no new runtime helper calls. The safe\npath is documented in [docs\u002FSAFE-DSP-RULES.md](docs\u002FSAFE-DSP-RULES.md) and the\neffect directory conventions are summarized in\n[src\u002Fairwindows\u002FREADME.md](src\u002Fairwindows\u002FREADME.md).\n\n## Known Issues\n\n- Only the Zoom MS-70CDR firmware 2.10 has been tested seriously so far.\n- Experimental builds can freeze or crash the pedal until it is power-cycled.\n- `ToTape9.ZDL` now loads and runs on the test MS-70CDR after removing runtime\n  `__c6xabi_divf` from the full DSP path. It is still under validation for\n  parameter initialization, preset behavior, and source-equivalent exactness.\n  The latest build treats zeroed parameter slots as unmaterialized defaults to\n  address the reload mute report; this still needs hardware confirmation.\n- `VerbTiny.ZDL` is a new Airwindows reverb port candidate. It builds cleanly\n  with `ctx[3]` state and no object relocations, but it has not been\n  hardware-tested yet.\n- `Galactic.ZDL` is a larger Airwindows reverb candidate. It builds cleanly\n  with about 528 KB of `ctx[3]` state and no object relocations, but it has not\n  been hardware-tested yet.\n- `TEcho4.ZDL` is a custom Airwindows-inspired tape echo, not a 1:1\n  Airwindows port. It builds as a Delay-category effect with `ctx[3]` delay\n  memory, TapeHack-style saturation, feedback bandwidth limiting, wow\u002Fflutter,\n  and a BPM+division tempo workflow. Hardware result is pending; true host tap\n  tempo for custom ZDLs is still unproven.\n- ZDL filenames should have unique basenames of 8 characters or less. Zoom\n  tooling\u002Fdevice code can truncate longer basenames, so collisions like\n  `TapeEcho4.ZDL` -> `TapeEcho.ZDL` can create duplicate effect identities and\n  freeze the pedal when loading. This repo now ships that effect as\n  `TEcho4.ZDL`.\n- `OTT.ZDL` is a custom Dynamics-category OTT-style multiband compressor, not\n  an Ableton port. It exposes `DryWet`, `Time`, `Output`, and `SplitFrq`, and\n  builds cleanly with small `ctx[3]` state, no `.fardata`, no `.text`, and no\n  object relocations. Hardware result is pending.\n- On MS-70CDR, Drive-category custom effects may not appear in the on-device FX\n  browser unless at least one stock Drive effect is also installed. `ToTape9`\n  is intentionally categorized as Drive, so install a stock Drive effect too if\n  it flashes but does not show up when scrolling the pedal.\n- Parameter scaling is part of the porting work. A port should not be called\n  source-equivalent until its raw knob ranges have been confirmed on hardware.\n- These are `.ZDL` builds, not `.ZD2` builds.\n\n## Documentation\n\nStart here if you want more than the download folder:\n\n| Doc | What it covers |\n|---|---|\n| [docs\u002FINSTALLING-ZDLS.md](docs\u002FINSTALLING-ZDLS.md) | Step-by-step Zoom Effect Manager folder install. |\n| [docs\u002FZDL-REVERSE-ENGINEERING-STATUS.md](docs\u002FZDL-REVERSE-ENGINEERING-STATUS.md) | Current map of the ZDL wrapper, runtime ABI, and known state fields. |\n| [docs\u002FSTATE-ABI-PROGRESS.md](docs\u002FSTATE-ABI-PROGRESS.md) | Compact current map of hardware-proven state\u002Fedit-handler findings. |\n| [docs\u002FAIRWINDOWS-1TO1-PORT-ROADMAP.md](docs\u002FAIRWINDOWS-1TO1-PORT-ROADMAP.md) | Roadmap for making honest source-equivalent Airwindows ports. |\n| [docs\u002FAIRWINDOWS-EXACT-PORTS.md](docs\u002FAIRWINDOWS-EXACT-PORTS.md) | Rules for what can and cannot be called a 1:1 Airwindows port. |\n| [docs\u002FSAFE-DSP-RULES.md](docs\u002FSAFE-DSP-RULES.md) | Pedal-safe DSP\u002Flinking constraints learned from hardware failures. |\n| [docs\u002F3-PARAM-LINKER-BUG.md](docs\u002F3-PARAM-LINKER-BUG.md) | Investigation of the old edit-mode parameter-count bug. |\n| [docs\u002FTI-PDF-NOTES.md](docs\u002FTI-PDF-NOTES.md) | Notes distilled from the TI C6000 manuals in this folder. |\n| [docs\u002FCONTRIBUTING.md](docs\u002FCONTRIBUTING.md) | Hardware-test asks and contribution notes. |\n| [docs\u002Fsprab89b.pdf](docs\u002Fsprab89b.pdf) | TI C6000 application note reference. |\n| [docs\u002Fsprui03f.pdf](docs\u002Fsprui03f.pdf) | TI C6000 compiler\u002Ftoolchain reference. |\n| [docs\u002Fsprui04g.pdf](docs\u002Fsprui04g.pdf) | TI C6000 assembly\u002Flinker tools reference. |\n| [build\u002FABI.md](build\u002FABI.md) | Low-level linker\u002Fruntime ABI reference for developers. |\n\n## Build From Source\n\nBuilding requires Python 3.10+ and TI C6000 Code Generation Tools. Installing\nprebuilt effects from [dist\u002F](dist\u002F) does not.\n\nThe build scripts currently expect the TI compiler here:\n\n```text\n\u002FApplications\u002Fti\u002Fccs2050\u002Fccs\u002Ftools\u002Fcompiler\u002Fti-cgt-c6000_8.5.0.LTS\n```\n\nOn Linux, Windows, or another Code Composer Studio install, update `TI_ROOT` in\nthe relevant `src\u002Fairwindows\u002F*\u002Fbuild.py` or `src\u002Fcustom\u002F*\u002Fbuild.py`.\n\nBuild release effects:\n\n```bash\npython3 -B build_all.py\n```\n\nBuild one effect:\n\n```bash\npython3 -B build_all.py stereochorus\npython3 -B build_all.py tapeecho4\npython3 -B build_all.py ott\npython3 -B build_all.py totape9\npython3 -B build_all.py verbtiny\n```\n\nBuild diagnostic\u002Fprobe effects too:\n\n```bash\npython3 -B build_all.py --all\n```\n\nThe default build intentionally keeps [dist\u002F](dist\u002F) clean and release-focused.\nDiagnostic ZDLs are useful for development, but are moved to `build\u002Fprobes\u002F`\nand should not be mixed into the download folder.\n\n## Technical Notes\n\nThis repo builds loadable Zoom `.ZDL` effects without Zoom's unreleased SDK.\nThe core pieces are:\n\n| Path | Purpose |\n|---|---|\n| [build\u002Flinker.py](build\u002Flinker.py) | Static linker: TI C6000 `.obj` -> complete Zoom `.ZDL`. |\n| [src\u002Fairwindows\u002F](src\u002Fairwindows\u002F) | Effect sources, manifests, images, and per-effect build scripts. |\n| [src\u002Fcustom\u002F](src\u002Fcustom\u002F) | Original non-Airwindows effects built with the same linker\u002Fsafety rules. |\n| [src\u002Fhardware_probes\u002F](src\u002Fhardware_probes\u002F) | Diagnostic ZDLs used to map the pedal runtime ABI. |\n| [dist\u002F](dist\u002F) | Release `.ZDL` files for users; never probes. |\n| [stock_zdls\u002F](stock_zdls\u002F) | Tracked 830-file stock ZDL corpus used for comparison. |\n\nThe important recent finding is that custom effects can use the host-managed\nlarge state descriptor at `ctx[3]`. That made the stateful `StereoChorus` port\npossible, and the no-divide `ToTape9` full-kernel build now also loads and runs\non the test MS-70CDR. `VerbTiny` and `Galactic` are reverb candidates using the\nsame large-state strategy. `TEcho4` \u002F `TapeEcho4` uses that same safe state pattern for a\ncustom tape-delay design, and `OTT` uses a small `ctx[3]` state block for\nmultiband envelope\u002Fgain history. The next ToTape9 work is parameter\u002Fdefault\nlifecycle validation and source-equivalence testing.\n\nKnown runtime map for custom ZDLs:\n\n| Field | Meaning |\n|---:|---|\n| `ctx[1]` | parameter float table |\n| `ctx[4]` | dry\u002Fguitar input buffer |\n| `ctx[5]` | current effect buffer, 8 left samples then 8 right samples |\n| `ctx[6]` | output accumulator for effects that add instead of processing in place |\n| `ctx[11]` \u002F `ctx[12]` | magic shuttle; preserve every audio call |\n| `ctx[2] + 0x10` \u002F `ctx[2] + 0x18` | small persistent per-instance state blocks |\n| `ctx[3][0..2]` | large per-instance descriptor: base, end, byte span |\n\nParameter scaling is not universal across every handler path. `StereoChorus`\nshowed that the current release handler path behaves like normalized `0..1`\nknob floats, while older helper assumptions saturated around UI value 14.\nEffects that claim source-compatible control laws should document how their raw\nparameter scaling was confirmed.\n\n## Repository Layout\n\n```text\nZoomMultistompZDL\u002F\n├── README.md\n├── build\u002F                 linker, ELF\u002FZDL helpers, stock-derived handler blobs\n├── docs\u002F                  install notes, ABI status, and porting guidance\n├── dist\u002F                  release ZDLs to load in Zoom Effect Manager\n├── src\u002Fhardware_probes\u002F       diagnostic ZDLs for runtime ABI experiments\n├── src\u002Fairwindows\u002F        effect sources, manifests, and build scripts\n├── src\u002Fcustom\u002F            original non-Airwindows effects\n├── stock_zdls\u002F            tracked 830-file stock ZDL corpus used for comparison\n└── build_all.py           release\u002Fprobe build entrypoint\n```\n\nSeveral research references are useful locally but are intentionally ignored by\ngit, so they are not part of this repo checkout:\n\n```text\nairwindows-ref\u002F          optional full Airwindows source tree\nzoom-fx-modding-ref\u002F     optional community ZDL notes and disassembly walkthroughs\nZoomPedalFun-main\u002F       optional independent Zoom firmware RE work\n```\n\nIf you clone those beside the repo, keep treating them as read-only references.\n\n## Contributing\n\nHardware reports are gold. When testing a ZDL, please include:\n\n| Item | Example |\n|---|---|\n| Pedal model and firmware | `MS-70CDR firmware 2.10` |\n| ZDL filename and commit | `StChorus.ZDL @ cee0d8a` |\n| Load result | boots, freezes on startup, freezes on unbypass |\n| Audio result | bypass, dry passthrough, chorus works, high-pitched tone |\n| Parameter behavior | Speed works 0..100, Depth saturates, page 2 knob missing |\n\nOpen an issue or PR with findings. Keep experimental claims precise: \"boots on\nmy MS-70CDR\" is more useful than \"works everywhere.\"\n\n## License\n\nRepository code is MIT unless a file says otherwise. Airwindows plugin DSP is\nMIT by Chris Johnson\u002FAirwindows. Zoom firmware, stock effects, and third-party\nreference material are owned by their respective authors and are used only for\ninteroperability and reverse-engineering research.\n","ZoomMultistompZDL项目为Zoom MultiStomp效果器提供自定义的.ZDL效果文件及构建这些文件所需的反向工程工具链。其核心功能包括通过Zoom Effect Manager加载和管理自定义音频效果，支持用户基于现有模板创建新效果。技术上采用Python编写构建脚本，并遵循特定的安全DSP规则以确保稳定性和兼容性。该项目特别适用于拥有Zoom MS-70CDR（固件版本2.10）效果器的音乐制作人或爱好者探索和扩展音效库，但需注意实验性质的效果可能造成设备不稳定。对于其他型号的Zoom多踏板效果器，目前尚处于未验证状态。","2026-06-11 03:58:26","CREATED_QUERY"]