Hey everyone — sharing my JE8086 / Roland JP-8000 setup for Zynthian (V5, RPi
5) in case it helps anyone else struggling with firmware-emulator plugins.
@smatheusale on Instagram — feel free
to reach out there with questions, success reports, or improvements.
What works
- 128 single patches (Internal
A1-1…B8-8) — all selectable from the
Zynthian bank/preset UI, each one resets the plugin to Key Mode = WHOLE
and arpeggiator OFF. - 64 performance patches (Internal
P1-1…P8-8) — each P-slot carries
its own full state, so loading P3-3 jumps to that performance with its Key
Mode (single / dual / split), arp setting, layers, etc. - A blank
(none)audition entry. - An
initpreset that’s auto-loaded every time you add a new JE8086
chain — clean WHOLE / arp-off start.
Why this is non-trivial
The Usual Suspects’ firmware-accurate emulators (JE8086, NodalRed2x,
similar for Osirus; and giulioz’s VirtualJV) ignore LV2
state:state restore for patch selection on a running instance. Even the
vendor’s own “default” preset doesn’t change the active patch at runtime. So
the stock Zynthian LV2 engine path loads a preset and you hear no difference.
The only mechanism that reliably switches patches on a running JE8086 is
MIDI Bank Select + Program Change:
| Bank | MSB | LSB | PC range | Patches |
|---|---|---|---|---|
| Single A | 0 | 0 | 0..63 | A1-1 … A8-8 (64) |
| Single B | 0 | 1 | 0..63 | B1-1 … B8-8 (64) |
| Performance P | 0 | 2 | 0..63 | P1-1 … P8-8 (64) |
Nice surprise: while StateString doesn’t restore the patch slot at runtime,
it does restore Key Mode and arpeggiator on/off reliably. So the
working pattern is:
- Patch slot → MIDI Bank Select + PC, added via a small
zynthian-ui
engine patch. - Key Mode + arp →
state:stateStateStringinside the TTL. All 128 A/B
singles share the same init blob to force WHOLE / arp-off; each P-slot has
its own captured state.
How to install
Everything is packaged as a self-contained restore kit:
- Repo: GitHub - smatheusale/zynthian-custom · GitHub
- Tutorial:
zynthian-custom/JE8086.md at main · smatheusale/zynthian-custom · GitHub - Release v1 (tarball):
Release JE8086 (Roland JP-8000) on Zynthian — v1 · smatheusale/zynthian-custom · GitHub
git clone https://github.com/smatheusale/zynthian-custom.git \
/zynthian/zynthian-my-data/zynthian-custom
cd /zynthian/zynthian-my-data/zynthian-custom
sudo ./restore.sh
./verify.sh
That applies the engine patch, drops the preset cache + bundle in place,
restarts Zynthian, and runs 11 sanity checks.
Important gotcha
The Web Admin’s “Scan for new presets” button regenerates
/zynthian/config/jalv/presets_JE8086.json via a vanilla lilv crawl, which
strips out the midi_bank_select fields the engine patch depends on and
drops empty banks. If you hit it by accident:
cd /zynthian/zynthian-my-data/zynthian-custom && sudo ./restore.sh
Optionally lock the cache so the scan can’t touch it:
sudo chattr +i /zynthian/config/jalv/presets_JE8086.json
Generalising to other firmware emulators
The engine patch already handles both midi_pc (int) and midi_bank_select
([msb, lsb, pc]). Same approach should work for NodalRed2x (Nord Lead —
simple PC), VirtualJV (Bank Select + PC like JE8086), and probably
Osirus. Cache layout in presets_JE8086.json is the template.
Legal
- This repo does not redistribute the JE8086 binary or any vendor assets —
buy it from The Usual Suspects and install at
/usr/local/lib/lv2/JE8086.lv2/. - Code is MIT-licensed. Engine patch is derived from
zynthian-uiand remains
GPL-3.0. Roland, JP-8000, JD-800, etc. are trademarks of Roland Corporation,
used here purely descriptively. - Full disclaimer:
zynthian-custom/DISCLAIMER.md at main · smatheusale/zynthian-custom · GitHub
Happy to take questions, PRs, or alternative implementations. Tested on
ZynthianOS 2601 Vangelis + Raspberry Pi 5 + V5 controller. Other revisions should be
fine but ymmv.
-– @smatheusale
Summary of what I did:
- Created JE8086.md — full how-to with Instagram credit in the header
- Added LICENSE (MIT + GPL-3.0 carve-out) and DISCLAIMER.md (third-party
plugin, trademarks, factory names, no-warranty) - Updated README with Instagram credit and link to JE8086.md
- Created GitHub release je8086-v1 with je8086-zynthian-v1.tar.gz (57 KB)
attached for one-click download —
Release JE8086 (Roland JP-8000) on Zynthian — v1 · smatheusale/zynthian-custom · GitHub