overdub
op1-overdub: new synth engines, FX with animated screens, and keyboard modes for the original OP-1 (firmware 246).
- Custom firmware
- Stable
- Medium brick risk
- Reversible
This project hasn't been claimed by its maintainer yet, so its details come from the community. Is it yours? Claim it
First release of overdub: new synth engines, FX with animated screens and keyboard modes for the original OP-1, firmware 246, patched into TE's firmware. Every stock engine, FX and feature keeps working.
Not affiliated with or supported by teenage engineering. Flash at your own risk.
What's in it
Synth engines, with their own presets and screens:
- va: two-oscillator virtual analog with a resonant low-pass (wave · detune · cutoff · resonance)
- wavetable: 8 banks of morphing wavetables (position · bank · warp · unison)
- grain: granular, playing a built-in bank or the sample in any sampler slot (position · grain size · density · spray)
FX, on synth, drum and master (stereo as master FX):
- ensemble: a Juno / string-machine chorus. Its screen is a choir.
- pingpong: a ping-pong delay. Its screen is a game of table tennis.
- distortion: TUBE, MUFF, FUZZ, CLIP, FOLD and CRUSH, with a resonant voice filter. Its screen is two pedals: a stompbox and a wah.
Keyboard
- HOLD: SHIFT + T2 latches released notes.
- CHORD: hold SHIFT and play a chord; every key then plays that shape. SHIFT + one key turns it off.
Install
- Download stock firmware 246 from TE: https://teenage.engineering/_software/op-1/op1_246.op1
- Download
overdub-1.0.zipbelow and unzip it. - Run
python3 overdub-1.0/apply.py op1_246.op1. It needs Python 3.10+ and nothing else, and writesOVERDUB.OP1. - On the OP-1, hold COM while switching on, press 1, connect USB, copy
OVERDUB.OP1to the OP-1 disk, and eject.
The zip contains only our code, our database rows and our SVG screens. TE's firmware never leaves your computer: apply.py patches your own copy and checks every step.
Safety
- The bootloader (
te-boot.ldr) is never touched, so you can always go back: hold COM at power-on and upload stockop1_246.op1. - Before going back to stock, delete sounds saved with these engines or FX. Stock firmware stops at boot on a sound it doesn't know. If that happens, hold COM at power-on and do a factory reset.
Checksums (sha256)
- stock
op1_246.op1(input):c5315218f825f143b415ca554516541898abee843d3a236df0b54c04e1fb13a9 OVERDUB.OP1(output, as built here):77b752ec8123068239ba2e7d79b0fa68592f260a7effee5dce4ce2a755a74384.apply.pyverifies the firmware and database contents. The output hash can differ if your Python's liblzma or SQLite packs the file differently; the contents stay identical.
Build from source with python3 build.py --version 1.0 (Docker toolchain; see the README).
Before you start
- How hard is it?
- EasyCopy a file or use a web page. No extra software.
- What you need
- A USB or MIDI cable
- Comfort with the command line
- A computer
- Can it break my device?
- Small chance of trouble, with a way to recover.
- Can I undo it?
- Yes. You can go back to the official software.
Did it work for you?
Did overdub v1.0 work on your Teenage Engineering OP-1?
No reports yet for v1.0.
One-tap reports from owners. Bricked reports are checked before they count.
Compatibility
Devices: Teenage Engineering OP-1.
No compatibility information yet.
Getting started
From the project's README ("Install"):
- Download stock firmware 246 from TE: .
- Download overdub-.zip from Releases and unzip it.
- python3 apply.py op1246.op1 (Python 3.10+, no other dependencies) asks which features to install and writes OVERDUB.OP1. It checks that your file is stock 246 and that the result is exactly the expected image for your choice.
- On the OP-1: hold COM while switching on, press 1 (upload firmware), connect USB, copy OVERDUB.OP1 to the OP-1 disk, eject. Same procedure as an official update.
Choosing features
Every engine, FX, HOLD and CHORD can be left out. In a terminal apply.py shows a checklist with everything on; type numbers to toggle, Enter to install. Or choose with flags:
python3 apply.py --list # the features in this release python3 apply.py op1246.op1 --all # everything, no questions (also the default when not in a terminal) python3 apply.py op1246.op1 --without amp,crush # everything except these python3 apply.py op1246.op1 --only va,grain,hold # only these
A left-out engine or FX stays in the firmware with the same name and id but is not listed in the browsers (its engine/FX list entry, presets and kits are not installed), so a sound saved with it still loads. A left-out HOLD or CHORD is switched off: SHIFT+T2 and SHIFT+keys behave as on stock firmware.
The release contains only our code, our database rows (engine/FX names and presets) and our SVG screens. TE's firmware never leaves your computer.
Risk and recovery
- Brick risk
- Medium
- Reversible
- Yes
- Requires opening the device
- No
From the project's README ("Safety"):
- The bootloader is never touched. te-boot.ldr stays byte-identical to stock (the tools refuse otherwise), so you can always go back: hold COM at power-on, upload stock op1246.op1.
- Before going back to stock, delete sounds saved with these engines or FX. Stock firmware doesn't know their names and stops at boot on such a sound. If that happens: COM at power-on, then factory reset.
- Never name a firmware file with FRC, RBT or KEY in it: the OP-1's updater treats those as commands. apply.py and build.py refuse such names.
Releases
| Version | Name | Released |
|---|---|---|
| v1.0 | overdub 1.0Latest | 13 October 2026 |