A legend reborn

Open source firmware for the MMT-8

Two ROMs, written from scratch in C and published under MIT. OpenMMT-8 is the sequencer, with new edit tools. JAM-8 turns the same unit into a loop machine that writes patterns while it plays. Build the image, burn a 27C256, and swap the chip. Both run on real units.

Not affiliated with Alesis. The repository contains no original ROM code. Keep your original EPROM.

The images

Three 32 KB images. Pick one per chip.

OpenMMT-8

The sequencer you know, rebuilt so you can change it.

OpenMMT-8 is a new implementation of the sequencer, compiled from C. There is no byte-level patching of another ROM. The panel workflow stays the one in your unit’s manual. The edit pages you always wanted are added on top.

  • Turn a MIDI knob to edit. Pick a CC from 1 to 119, and it moves the current field in part edit.
  • Hear the note you are on. Audition plays it after each change, fast-forward, rewind, or track change.
  • Move by the quantize grid. FF and REW step through the grid, and the display marks empty steps.
  • Read bar.beat.tick. 001.1.00 instead of a raw clock count.
  • Enter notes from a keyboard. Play a note, hold RECORD, and it lands at the step, one quantize long.
  • Undo one edit. Hold ERASE, find UNDO LAST EDIT, press RECORD.
  • Back up over MIDI. Hold TAPE and press RECORD for a sysex dump that OpenMMT-8 loads back and restarts from.
OpenMMT-8 manual
OpenMMT-8 panel. The display reads PLAYING PART 00, BEAT 005, and the track lamps are lit.
The stock profile, playing a part. Shown in the plugin. The same image goes on the chip.

JAM-8

Same box. A different instrument.

Swap one chip and the MMT-8 stops being a recorder. The eight track keys become eight live lanes of drums, bass, chords, and lead. The keys you used for editing now mute, mutate, and launch scenes. Nothing waits for you to program it: JAM-8 writes the next pattern while the current one plays, and you steer.

  • Four roles, 27 styles. Drum, bass, chord, and lead, from house and techno to acid bass, arps, Turing leads, and Euclid.
  • Mutate, then step back. MERGE makes a new seed and a new pattern. The last 8 seeds are kept.
  • Steer it from a keyboard. Notes on the control channel set the key, or the exact chord you hold, and the chord lanes voice-lead to it.
  • Perform on the track keys. Mute, latch or hold solo, drop a lane out, and stutter or roll on LOOP with REW or FF.
  • Capture, then edit steps. Play into a lane, then set probability, conditions, ratchets, delay, accent, and tie per step.
  • Scenes and a chain. 16 scenes and 32 chain entries. Polymeter lanes from 1 to 64 steps.

It boots with house, techno, and Euclid polymeter scenes, so the first PLAY makes sound.

JAM-8 manual
JAM-8 panel. The display reads HOUSE, A minor, track 3, and scene S05.
A scene, mid-loop. Style, chord, focused track, and one character per lane.

CLAP plugin

An MMT-8 in every session.

The plugin runs the same 32 KB images on an emulated 8031. The panel, display, and lamps come from the ROM, not from a copy of it. What you learn in the plugin works the same on the chip.

  • Try JAM-8 before you burn it. Switch between OpenMMT-8 and JAM-8 from the ROM menu, or load the stock image from a file.
  • Locked to the host tempo. DAW sync sends start, stop, continue, song position, and clock to the ROM.
  • The ROM's own click. The click output carries the metronome the firmware makes, with a level control.
  • Saved with the project. Songs, parts, settings, the ROM choice, and DAW sync come back when you open the session.
  • Play it from the keyboard. Number keys, PAGE, and F1 to F8 for tracks. Right-click a key to hold it.

Builds for Windows, Linux, and macOS. Any CLAP host loads it.

Build the plugin Plugin guide
The CLAP plugin panel running OpenMMT-8. The display reads PLAYING PART 00, BEAT 005. DAW sync, the click level, and the ROM menu are across the top.
The plugin, playing a part. DAW sync, click level, and the ROM menu sit above the panel.

Before you swap chips

Save your memory first.

Original data stays with the original chip.

OpenMMT-8 does not load a dump made by an original unit, and the original does not load an OpenMMT-8 dump. Keep your original EPROM and its backups.

JAM-8 resets memory it does not recognise.

When battery RAM holds data from another ROM, including OpenMMT-8, JAM-8 loads its factory scenes. Send an OpenMMT-8 dump first if you want those songs back.

Open source

Read it. Build it. Change it.

The OpenMMT-8 and JAM-8 code is MIT. It builds with SDCC 4.2 or later. The build fails when an image will not fit in 32 KB. The JAM-8 build also fails when the stack will not fit in the 8031’s 128 bytes of internal RAM.

Every change is checked in an 8051 emulator before it reaches a chip. The OpenMMT-8 probes drive the ROM through record and playback, then compare MIDI out byte for byte. JAM-8 has 26 probe scenarios and host unit tests for its generators and voice leading.

Found something on your unit? Open an issue or send a pull request.

Why this exists

uAdvanced

This project is dedicated to Orbital. I performed in the late 90s with an MMT-8, and I would love for them to hear about it. My music is under uAdvanced.