- Python 100%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
|
|
||
| .forgejo | ||
| .github/workflows | ||
| .spelwork | ||
| docs | ||
| tests | ||
| tools | ||
| .gitattributes | ||
| .gitignore | ||
| ATTRIBUTION.md | ||
| CONTRIBUTING.md | ||
| LICENSE | ||
| nardwahl.py | ||
| NOTICE | ||
| README.md | ||
| SECURITY.md | ||
nardwahl
Nord Modular Classic patch tools for inspection, conservative editing, Faust export, and disting NT plug-in builds.
This is a SPELWork-provinced project. Its public release surface contains only original source, documentation, and permission-cleared fixtures. See the AI nutrition label, attribution notice, and release evidence.
What It Does
- Reads and round-trips Nord Modular Classic
.pchpatches. - Inspects module/cable context and suggests replacements by I/O shape.
- Writes edited patches with optional conservative cable rewiring.
- Exports supported patch graphs to Faust source.
- Builds Faust source into an ARM disting NT plug-in object using the official Disting NT API and an ARM GNU toolchain.
The DSP implementation is compatibility-oriented, not a cycle-accurate Nord Modular emulator. A compiled plug-in must be auditioned on hardware before it is treated as a faithful port.
Quick Start
python3 nardwahl.py info path/to/patch.pch
python3 nardwahl.py module-report path/to/patch.pch --module 1:3
python3 nardwahl.py similar 113
python3 nardwahl.py replace-module path/to/patch.pch --module 1:3 \
--new-type 112 --rewire --output edited.pch
To select a catalog-similar module by I/O shape, preview the replacement first:
python3 nardwahl.py replace-similar path/to/patch.pch --module 1:3 \
--rewire --dry-run
Remove --dry-run and pass --output edited.pch to write it. Similarity is a
structural suggestion only; inspect the reported cable map before accepting it.
To enable catalog-backed module naming and replacement suggestions, point
NARDWAHL_CATALOG at a legally obtained patch303.txt catalog:
export NARDWAHL_CATALOG=/path/to/patch303.txt
Disting NT Build
Nord .pch -> nardwahl Faust .dsp -> Faust C++ -> ARM plug-in .o -> disting NT
Prerequisites:
- Faust on
PATH, or pass--faust /path/to/faust. - A complete ARM GNU toolchain with
arm-none-eabi-c++, Newlib, and C++ headers. - A local distingNT_API
checkout. Set
NARDWAHL_DISTING_API=/path/to/distingNT_API, or pass--api.
python3 nardwahl.py build-disting path/to/patch.pch \
--output build/MyNordPatch.o \
--name 'My Nord Patch'
The command also writes build/MyNordPatch.dsp. Supply --guid ABCD to choose
a four-character plug-in GUID; otherwise one is derived from the patch path.
Use a distinct GUID for plug-ins that coexist on a device.
To install a compiled plug-in, mount the disting NT MicroSD card and pass its
root directory. The module scans /programs/plug-ins for .o files at startup
or after the card is remounted. This follows the official user
manual.
python3 nardwahl.py install-disting build/MyNordPatch.o \
--sd-root /Volumes/DISTINGNT
Existing files are protected; add --force only when intentionally replacing
the same plug-in filename.
For a GitHub release, package the object as a zip that expands at the SD-card root:
python3 nardwahl.py package-disting build/MyNordPatch.o \
--output build/MyNordPatch-disting-nt.zip
Or produce that release bundle directly from a patch:
python3 nardwahl.py release-disting path/to/patch.pch \
--output build/MyNordPatch-disting-nt.zip
Validate a patch or a bounded corpus sample without retaining generated files:
python3 nardwahl.py validate-disting path/to/patches --limit 10
The command reports parser failures separately from Faust/ARM build failures and
returns nonzero if any selected patch does not compile. Use --output-dir build/validation
to retain the generated .dsp and .o artifacts for inspection.
Public Release
This working repository may contain private validation material. Do not publish its history directly. Instead, create a clean public seed repository:
python3 tools/export_public.py /path/to/nardwahl-public
cd /path/to/nardwahl-public
git init
git add .
git commit -m 'Initial public release'
The export is allowlisted and rejects known private corpus paths. Review the result, select a public GitHub organization, and add its remote only after that review. See CONTRIBUTING.md for contribution requirements.
License
Nardwahl's original source is released under the MIT License. Third-party components, generated artifacts, the Nord patch corpus, and module catalogs have separate rights; see ATTRIBUTION.md.