Elementary Python based IMPORT/EXPORT/COPY/SWAP patch utility for ZOOM G/MS/1 series multieffects, hacked/custom firmware capable
OVERVIEW
This is a set of Python scripts using a compilation of functions shared in https://github.com/PhilDaThrill/MultistompMidi (thanks for that to generous geek https://github.com/PhilDaThrill). These scripts copy/swap/export/import patches in a way that's blind to what patches contain. They simply move patch data around, no matter which effect belongs in which model, thus being suitable for pedals running custom/hacked firmware with added "foreign" FX. As of 2023-09-28 it should work on all these model devices, but it's only been tested on some:
MS-50G
MS-600B
MS-70CDR
G3 (not yet tested)
G3X (not yet tested)
B3
G1ON (not yet tested)
G1XON
B1ON (not yet tested)
B1XON
Will get my G3 back in a matter of days to test that one too. Anyone with a B1on/G1on/G3X willing to help testing (easy a/f), please contact me (thanx in advance!). Still, USE AT YOUR OWN RISK. My utility scripts won't brick your device, but they can sure mess with your patches if you screw up the params. Works OK on Windows 10 with Python 3 installed; requires Python extensions MIDO and PYTHON-RTMIDI (install with pip install mido / pip install python-rtmidi). I'm familiar with Ubuntu and don't have a reason to believe this won't work on Linux or any other platform with Python 3/mido/python-rtmidi installed. Will test it first chance I get (circumstantially, I don't have any Linux PC or VM set up at home these days). Drop me a line at info@andresdemarco.info in case you need any help. Also you're welcome to chime in about improvements to my crappy scripts or any other suggestions/contributions.
MODULE SCRIPT zoomido_utils.py (said compilation of functions for MIDI interaction)
UTILITY SAMPLE SCRIPTS ask_patch_no.py (outputs currently connected model and selected patch number, 1-50/1-100 depending on model, no params) copy_patch.py (copies a patch to a new location, PARAMS: <source patch number> <destination patch number>) export_patch.py (exports a patch to STDOUT, PARAMS: [<source patch number>]) goto_patch.py (switches to a certain patch, PARAMS: <patch number>) import_patch.py (imports a patch from a file with a previous export, PARAMS: <destination patch number> <input file name>) set_tuner.py (turns tuner ON/OFF, PARAMS: [<ON|OFF>]) swap_patches.py (swaps content of 2 patch positions, PARAMS: <patch 1> <patch 2>)
(patch number params should get 1-50/A0-E9 for MultiStomps, 1-100/A0-J9 for B3/G3/ON models)
SAMPLE PATCHES
These are some sample patch files for different models, plus the basic patches I use in my highly customized MS-50G (full of bass FX) and B1XON (full of guitar FX). They were all exported with: export_patch.py [<patch#>] > <output file name>
And can be imported into compatible models running: import_patch.php <destination patch#> <input file name>
(patch length and format compatibility between models is defined in zoomido_utils.py's array all_identities, depending on your installed FX you might encounter some missing)
TEST SCRIPT testseq.bat / testseq.sh (cmd/PowerShell & bash versions, sequence I usually employ to run all scripts in a sequence when testing a new model)
MIDI DOC
Some helpful docs I managed to gather from around the interwebs regarding Zoom MultiStomp MIDI messaging.