Model Tweaks
Firmware tweaks for Elektron Model:Cycles and Model:Samples
About
Highlights
- Latching track mute: hold TRACK and tap FUNC, then mute tracks with one hand
- Trig preview: with the sequencer stopped, hold a step and press PAGE to hear it with its locks
- Long names scroll in the sound, sample and folder browsers
- Checks that the input is the original firmware and rebuilds the checksums
What you need
Python 3 and your own OS 1.13 file. Run apply.sh (macOS and Linux) or apply.bat (Windows), pick the tweaks, then send the new file with Elektron Transfer.
Good to know
The README reports tests on real Model:Cycles and Model:Samples hardware. Modified firmware may void the warranty; recovery works through the STARTUP MENU. The same tweaks are also part of Modded-Cycles and Model-TG.
README
model-tweaks
Small firmware tweaks for the Elektron Model:Cycles and Model:Samples
(OS 1.13). No firmware is distributed here: you supply your own .syx, the
script applies the tweaks you pick and writes a new file next to it.
Python 3 is the only requirement — or none at all: use the web flasher in Chrome, Edge, Firefox or Safari.
These tweaks are also available as a part of these projects:
- Modded Cycles by 18nelli18 - Model:Cycles only atm.
- Model-TG by TinyAudioGreg - Model:Cycles only atm.
Using it
-
Download the original firmware from Elektron and drop the
.syxinto this folder. -
Run it:
- macOS / Linux:
./apply.sh - Windows: double-click
apply.bat
- macOS / Linux:
-
Toggle tweaks by number, press Enter.
-
<name>_mod.syxappears beside the original. Send that one with Elektron Transfer, SysEx Librarian, or any SysEx tool.
In the browser
The web flasher does the same in a page: drop your .syx, pick the
tweaks, download the built file (then send it with Elektron Transfer, the
fastest way), or send it straight from the page over USB MIDI in Chrome or Edge.
It runs this repository's own tweak.py and mtlib unchanged, in the browser
through Pyodide; the firmware never leaves your computer.
To run it locally: python3 -m http.server in this folder, then open
http://localhost:8000/flasher/. Published with GitHub Pages from the repository
root (.nojekyll keeps mtlib/__init__.py served). After adding or removing a
tweak, run python3 flasher/make_manifest.py.
Without the menu:
python3 tweak.py --list what is available
python3 tweak.py -i model-cycles_OS1.13.syx --all everything
python3 tweak.py -i FW.syx -t trig-preview,browser-scroll
python3 tweak.py --verify FW_mod.syx recheck a finished file
The tweaks
Latching track mute — latching-mute
- Hold TRACK and tap FUNC: the mute mode latches and the FUNC key lights up.
- A short tap on FUNC alone leaves the mode.
- Combinations with FUNC do not leave the mode, including menus such as FUNC + PAGE and holding FUNC to turn the encoders fast.
- TRACK, RETRIG and PATTERN bank select keep working while it is latched.
Holding FUNC to mute tracks behaves exactly as it does in stock firmware.
Trig preview — trig-preview
With the sequencer stopped, hold a step (trig button) and press PAGE: the step sounds with its own note, length, p-locks and sound-lock. The page does not turn. It sounds regardless of the trig condition and probability, and through a muted track.
Scroll long names — browser-scroll
A selected name in the sound/sample/folder browser scrolls left when it does not fit: about 0.17 s per character, with a ~0.5 s pause at each end. A name that already fits stays put.
16-channel USB audio — usb16
Adds a third choice to CONFIG > DEVICE > USB MODE, which now cycles
A+M → A16 → MID:
| USB MODE | Sent to the computer |
|---|---|
A+M |
stock: the stereo mix, plus MIDI |
A16 |
16 channels, plus MIDI |
MID |
MIDI only |
In A16 the channels are, at 48 kHz / 24 bit:
| Channels | Name on the host | Content |
|---|---|---|
| 1–12 | T1 L … T6 R |
the six tracks as stereo pairs, after VOL and PAN |
| 13–14 | Delay L, Delay R |
the delay return (wet output) |
| 15–16 | Reverb L, Reverb R |
the reverb return (wet output) |
Each channel is exactly what the mixer adds to the main bus, with the same gain curve and master gain, so the 16 channels sum to the stereo mix (short of master-bus clipping). A track muted on the device is silent on its channels; its delay and reverb tail stays on 13–16, as in the stereo mix.
- After flashing the device starts in
A+M, which behaves as stock. PickA16once; it is kept across power cycles. Switching reconnects the device, so the DAW may need the input device selected again. - Recording and playback should run on one clock: use the Model as both the input and the output device, or an aggregate device with drift correction (macOS Audio MIDI Setup). Two separate USB devices without drift correction drop host buffers every few minutes.
- Tested on Model:Cycles and Model:Samples hardware with macOS. Windows is untested.
Based on ms-multi-output by Scott Metoyer and the work on it in Modded-Cycles by 18nelli; see Credits.
All four tweaks are independent; any combination works.
What gets checked
Before building:
- the file is parsed in full and every SysEx packet checksum is verified;
- the SHA-256 of the decompressed MAIN OS is matched against the known original, so a different OS version or an already-patched file is refused rather than corrupted;
- every region about to be written has its original bytes confirmed first.
After building, everything is recomputed: packet checksums, container length and content checksum, per-section stream sums, and the HMAC-SHA256 trailer. If any of it disagrees, the file is not offered for flashing.
Only section 3 (MAIN OS) is touched. The bootloader and the updater are carried over byte for byte, so STARTUP MENU recovery stays available and you can always go back to stock firmware.
Risks
- Modifying the firmware voids your warranty and could brick your device.
- Tweaks are tested on real Model:Cycles and Model:Samples hardware, but you do this at your own risk.
- Before flashing, make sure you can reach STARTUP MENU: power off, hold
FUNC, power on, then
4 ... OS UPGRADE. That is the way back. - Back your projects up first (
#SYSEX DUMPin Transfer, or a project backup).
How it works
A .syx is just transport: 7-bit packing with a checksum per packet. Inside is
an ELE3 container of four sections; the third, MAIN OS, is compressed with an
aPLib variant.
tweak.py unpacks that section, writes the selected byte sets into it and puts
everything back together. It does not recompress from scratch: the original
stream is decoded into its op list and re-emitted as it was, and only the ops
that read or write a changed byte become literals. The result stays as tight as
the vendor's own packer and takes a couple of seconds.
apply.sh / apply.bat launcher
tweak.py pipeline and menu
mtlib/syx.py 7-bit SysEx transport
mtlib/aplib.py aPLib codec: decode to ops, re-emit
mtlib/container.py ELE3: parse, rebuild, checksums, HMAC
tweaks/<firmware>/ the tweaks themselves
flasher/ the web flasher: page, Pyodide glue (web.py), file list
A tweak is plain JSON you can read yourself — offset, expected original bytes, replacement bytes:
{"off": 1344610, "old": "2f02", "new": "4ef9"}Disclaimer
This project is not affiliated with, endorsed by or connected to Elektron Music Machines in any way. Elektron, Model:Cycles and Model:Samples are their trademarks. No Elektron firmware or code is distributed here — the tweaks are applied to a file you supply yourself.
Credits
Building scripts are based on elektron-firmware-tool (MIT) by mischa85.
The 16-channel USB audio tweak (usb16) builds on:
- scottmetoyer/ms-multi-output by Scott Metoyer — the original 6-channel USB mod for the Model:Samples and Model:Cycles: the USB driver hook points, the descriptor and queue-head changes, and the method. MIT License, Copyright (c) 2026 Scott Metoyer.
- 18nelli18/Modded-Cycles by 18nelli — the further work on it for the Model:Cycles: keeping USB OS updates working, freeing sprite masks as code space, and the analysis of the USB queue and of the dropouts.
On top of that, usb16 takes the channels after the mixer's VOL and PAN as stereo
pairs, adds the delay and reverb returns, moves to 24 bit with the transfer ring
in SRAM and a fill-level loop on the packet rate, names the channels, adds the
A16 USB mode next to the stock stereo, and covers the Model:Samples as well.
License
MIT, see LICENSE. The license covers this tooling only, not the firmware it is applied to.
Third-party work this repository builds on:
| Project | Used for | License |
|---|---|---|
| mischa85/elektron-firmware-tool | the basis of the building scripts | MIT |
| scottmetoyer/ms-multi-output | the basis of the usb16 tweak |
MIT, Copyright (c) 2026 Scott Metoyer — full text in LICENSE-ms-multi-output |
| 18nelli18/Modded-Cycles | further work the usb16 tweak builds on |
no license file published (checked 2026-10-04); credited here |
Pictures in the README load from GitHub.
Discussion
From the forum. Replies you write here are posted in the thread.(Yesterday, 08:40 PM)TR808 Wrote: No big deal but I did encounter my first crash using this. When I was messing about with the fx when I turned up the flanger it caused the cycles to hang. I had every fx running on it and the flanger was the last one I turned up. I suspect it was just a bit too much at once! Still no complaints from me, it's turned the cycles into a much more useable machine than it has ever been.
The guy did say you’ve got to keep your eye on the CPU use, it’s easy to overdo it as cycles is now running on the edge of the CPU’s capabilities
amples? if not, will something similar be released for model
amples?(2 hours ago)TR808 Wrote:(8 hours ago)DarkDigital Wrote: is it possible to flash this firmware to modelamples? if not, will something similar be released for model
amples?
The Model Samples can have the Model Cycles firmware installed on it using the various methods and you can then install the mods supplied.
Not the first poster but I'd love to keep M:S as the base unit. It's the unpopular stepchild but imo it has a lot to offer, even with TG's amazing sampler. That and the fact that I have a full live set of music backed up Id rather not redo. Might just buy a second unit for the mods.
There are subtle musical things in the M:S firmware that the TG firmware doesn't quite nail imo, automation of the loop and reverse functions, sample preview (biggest missing thing), weird tricks like assigning pressure to sample start, messing with end points without triggering a reverse, etc. the smooth lp/hp transition of the filter is missing too.
It's really small stuff and I'm amazed at the new modes, attack parameter, stereo, resampling, etc. Not dissing the TG firmware in any way it is truly amazing, but a sampler is really hard to nail as an instrument and M:S is that for me.
It seems that somehow loading up the Cycles machines on the M:S would be even more seamless as they are pretty self contained. or if someone could patch in the exact sampling engine from M:S to M:C we'd benefit from the tight UI/UX optimization that the team at Elektron worked hard on. And it could grow from there.
- Language
- Python
- License
- MIT License
- Stars
- 7
- Forks
- 0
- Created
- 09-19-2026
- Last commit
- 6 hours ago

