matriarch-firmware-fixes
Loud87/100Bug fixes for the Moog Matriarch firmware
matriarch-firmware-fixes is custom firmware for the Moog Music Matriarch, by @benjamindehli. Open source under GPL-3.0, latest release v1.4.0 (October 2026), 1 star on GitHub.
forMoog Music Matriarch·by@benjamindehli
Unclaimed. Is this yours? Sign in with GitHub as @benjamindehli to claim it.
No release files yet. Build from source.
GPL-3.0· benjamindehli/matriarch-firmware-fixes·benjamindehli.github.io/matriarch-firmware-fixes/·downloads come from the creator’s GitHub releases
v1.4.0v1.4.0: Simple mixer gate modeLatest0 files
The paraphonic mixer gate fix gets a second mode. Next to the chord-aware mode from v1.3.0, a simple mode gives every released note the same short hold, chords included, as v1.0.0 to v1.2.0 of this project did.
Unofficial. Use at your own risk. This project isn't affiliated with or endorsed by Moog Music. This release contains no Moog firmware. You patch your own copy of Moog's official v1.3.0 file.
Added
Simple mode for the paraphonic mixer gate fix
Mode Notes released while other keys are held Chord-aware (recommended) Stop after the delay you choose, unless they were pressed together with a key that's still held. Lifted chords ring out with the release Simple All stop after the delay you choose, chords included. With a short delay and a long release, a lifted chord keeps only its last note or two The simple mode suits players who want one fixed cut-off for every note, for example with short release times. With 50 ms it behaves like firmware v1.1.0.
- In the web patcher, choose "Chords: Simple" under the mixer gate fix.
- On the command line, add
--simple:python3 tools/patch.py <in.syx> <out.syx> --mixgate 5 --simple
The simple mode changes only Moog's 125 ms value, the same patch as v1.0.0 to v1.2.0. Its files are byte-identical to the builds from those releases. The 5 ms and 50 ms builds were tested on a Matriarch back then.
Changed
- Files that are already patched are refused as before, and the message now says which mixer gate mode it found.
- New FAQ entry: "Should I choose chord-aware or simple?"
- The chord-aware mode and the HOLD fix are unchanged. Files patched with v1.3.0 are the same with v1.4.0.
v1.3.0v1.3.0: Chord-aware mixer gate fix0 files
The paraphonic mixer gate fix now keeps lifted chords intact. With a short hold, earlier versions cut off notes when you lifted a chord with a long release time. Now notes you press together keep Moog's original timing, so chords ring out with the release, while staccato notes and fast runs still stop right away.
Unofficial. Use at your own risk. This project isn't affiliated with or endorsed by Moog Music. This release contains no Moog firmware. You patch your own copy of Moog's official v1.3.0 file.
Fixed
Lifting a chord with a long release cut off all but the last notes (#5)
Moog's 125 ms hold does two jobs. Besides delaying the cut-off in paraphonic mode, it also groups releases: a lifted chord rings out with the envelope release as long as each key comes up within the hold time of the previous one. Earlier versions of this fix shortened the hold itself, so with 5 ms only the last note or two of a lifted chord kept their release tail. Thanks to the Matriarch Facebook group member who reported it.
The fix now decides per note:
When you release a key while other keys are held Hold It was pressed together (within 40 ms) with a key that's still held, as in a chord Moog's 125 ms, so the chord rings out when you lift the rest Otherwise, such as a staccato note over a held chord or a note in a fast run The short hold you choose (5 ms recommended) When every key of a chord is up but other keys are still held, such as a staccato chord over a held bass note, the whole chord gets the short hold. When you release the last key, all notes ring out with the release, exactly as with Moog's firmware.
Tested on a Matriarch in 2- and 4-note paraphonic mode with long and short releases: lifted chords, staccato notes and chords over held keys, fast runs, Paraphonic Unison, Multi Trig and the Arp/Seq with and without HOLD.
Changed
- 5 ms is the recommended setting again, since chords are no longer affected. 50 ms (the v1.1.0 behaviour) and custom values from 0 to 125 ms are still available.
- The fix no longer changes Moog's 125 ms value. Instead it adds two short routines in unused flash: one records when each note was pressed, the other decides each released note's hold. See "How the fixes work" in the README.
- The HOLD fix is unchanged.
Upgrading
Patch Moog's original v1.3.0 file again, in the web patcher or with
tools/patch.py. Files patched with an earlier version can't be patched again, and the patcher says which fix it found.v1.2.0v1.2.0: HOLD sustain fix0 files
A second fix from Moog's v1.3.0 known-issues list: HOLD no longer sends sustain to connected gear while the Arp/Seq is playing. You can apply it together with the mixer gate fix or on its own, in the web patcher or on the command line.
Unofficial. Use at your own risk. This project isn't affiliated with or endorsed by Moog Music. This release contains no Moog firmware. You patch your own copy of Moog's official v1.3.0 file.
Fixed
ARP sends Sustain CC while Hold is active (from Moog's v1.3.0 known-issues list)
Since the v1.2 updates, the HOLD button latches the Arp/Seq when it's running and works as a sustain pedal when it isn't, sending MIDI CC 64. Firmware v1.3.0 sends the sustain in both cases, so latching an arpeggio also made connected synths sustain every note. With the fix, connected gear sustains exactly when HOLD is on and the Arp/Seq isn't running:
You do this v1.3.0 sends Patched sends HOLD on, Arp/Seq stopped Sustain on Sustain on HOLD on while the Arp/Seq plays Sustain on Nothing, and the pattern latches as before Start the Arp/Seq while HOLD is on Nothing, so notes keep sustaining Sustain off, unless the sustain pedal is down Stop the Arp/Seq while HOLD is on Nothing Sustain on HOLD off Sustain off Sustain off The Matriarch's own sound, the sustain pedal and incoming MIDI sustain work exactly as before. The fix has been tested on a Matriarch driving a Yamaha DX7 over MIDI, together with the 5 ms mixer gate fix.
Without the patch, there's a workaround: after latching with HOLD, press and release the sustain pedal. That sends sustain off to connected gear while the pattern stays latched.
New
- Choose your fixes in the web patcher. Each fix has its own checkbox, and both are selected by default. The page recognises files that already have either fix and asks for Moog's original file instead.
tools/patch.pyapplies one or more fixes in one command:python3 tools/patch.py Matriarch_Firmware_v1_3_0.syx Matriarch_Firmware_v1_3_0_patched.syx --mixgate 5 --hold- The fixes change separate parts of the firmware, so the result is the same whichever order they're applied in. The tests check this.
CITATION.cff, so GitHub shows a "Cite this repository" button with APA and BibTeX citations.
Changed
- The "Is it safe" answer on the website now covers both fixes. The mixer gate fix changes one number, and the HOLD fix adds a few instructions in unused flash. The rest of the firmware stays byte-identical to Moog's file.
- The README explains how the HOLD fix works, and documents that the Matriarch computes its own firmware checksum after an update.
v1.1.0v1.1.0: Browser-based patcher0 files
You can now patch your Matriarch firmware right in your browser, without Python or a terminal. The fix itself is unchanged: patched files are byte-identical to the ones v1.0.0 produces and that have been tested on hardware.
Unofficial. Use at your own risk. This project isn't affiliated with or endorsed by Moog Music. This release contains no Moog firmware. You patch your own copy of Moog's official v1.3.0 file.
New
Matriarch Firmware Patcher, a web page that patches your firmware file:
- Choose Moog's
Matriarch_Firmware_v1_3_0.syx, or drop it on the page. - Pick the paraphonic mixer gate length: 5 ms (recommended), 50 ms (how Matriarch firmware v1.1.0 behaved), or any whole number from 0 to 125.
- Download the patched file and flash it with Moog's normal procedure, which the page walks you through.
Everything runs locally. The page loads no external scripts, fonts or trackers, and your file is never uploaded.
The page checks the file before patching:
- It confirms the file is Matriarch firmware and reads its version. Other versions, already patched files and other SysEx files are refused with a clear message.
- It compares the file with the SHA-256 of Moog's official v1.3.0 download and tells you whether it matches.
- It shows the SHA-256 of the patched file, so you can compare it with someone else's.
The page works on phones and follows your system's light or dark mode. Its design uses the colours of the Matriarch's faceplate.
Changed
tools/patch_mixgate.pyhas apatch()function, so the fix can be applied from other Python code.tools/matriarch_syx.pyreads the firmware version from the file's header.
Behind the scenes
- Every push and pull request is linted and tested. The tests download Moog's official v1.3.0 file and check that both the Python and the browser patcher produce files byte-identical to the builds tested on hardware. Moog's file is only used for testing and is never published.
- The website deploys to GitHub Pages only when all checks pass on
main.
- Choose Moog's
v1.0.0v1.0.0: Paraphonic mixer gate fix0 files
The first release of matriarch-firmware-fixes, unofficial bug fixes for the Moog Matriarch firmware v1.3.0.
Unofficial. Use at your own risk. This project isn't affiliated with or endorsed by Moog Music. This release contains no Moog firmware. You patch your own copy of Moog's official v1.3.0 file.
Fixed
Paraphonic Mixer Gate Length (from Moog's v1.3.0 known-issues list)
In 2- and 4-note paraphonic mode, releasing a key while another key was still held kept that oscillator sounding for another 125 ms. Staccato notes over a held note, and fast playing where keys overlap, smeared together. The patch shortens this hold to a value you choose:
--ms 5: released notes stop almost immediately (recommended)--ms 50: the same behaviour as firmware v1.1.0
Releasing the last key works exactly as before, with the VCA envelope's release shaping the tail. The Multi Trig envelope retrigger timing (the stuck-envelope fixes in v1.2.x) is separate code and isn't changed.
Both settings have been tested on hardware.
Requirements
- Moog's official Matriarch firmware v1.3.0 (
Matriarch_Firmware_v1_3_0.syx). The patch script refuses any other version. - Python 3.9 or newer.
- A SysEx tool such as SysEx Librarian (macOS) or Bome SendSX (Windows).
Usage
python3 tools/patch_mixgate.py Matriarch_Firmware_v1_3_0.syx Matriarch_Firmware_v1_3_0_mixgate5ms.syx --ms 5Then flash the patched file with Moog's normal update procedure (INVALIDATE, re-select the MIDI port, ERASE, then the patched file). See the README for step-by-step instructions and how to go back to stock.
Also included
tools/matriarch_syx.py: reads, verifies and patches Matriarch firmware.syxfilestools/syx2bin.py: extracts a flat firmware image for analysis- Ghidra scripts and helpers used to analyse the firmware
- Documentation of the firmware format, hardware notes and the history of the gate hold time across firmware versions
