FM-1 firmware · v1.2
AMB-1
AMB-1 makes the FM-1 an ambient instrument that starts playing by itself. Four layers share your scale: a pad, bells, bass and percussion, with echo and reverb. Choose a piece, adjust its sounds and change which notes it can use. The keys edit that scale; they do not play individual notes directly.
- Turns it into
- Four ambient layers that grow and play themselves, with scale editing, echo and reverb
- Best for
- Letting an evolving piece run, then shaping its mood
- Install
- GitHub release or hub
Where everything is on AMB-1
TapSwipe across the panel, then tap any control to see what it does on AMB-1.
On every button on AMB-1: LONG HELP. Holding this button for 900 ms with no other button or key down and no encoder turn since its press opens help and consumes its release action.
Start here
The modes
Seven pages share the same animated display. Tap HOME for Garden, ENV for Pad, ARP for Bells, LFO for Bass, SEQ for Pulse, FX for Space or GLO for Setup. SELECT moves through that order and stops at either end. KNOB 1–4 follow the page on screen.
Growing, resting and frozen describe the music, independently of the page. PLAY switches growing and resting. REC toggles freeze. Help covers the centre of the display while an eligible button is held. Startup, calibration, safe mode, the update countdown, chip update mode, USB installation and crash notices use separate screens.
Start, stop and choose a piece
| Do this | What happens |
|---|---|
| Switch on | Loads the saved setup, or recipes if it cannot use the save, and starts the current piece on Garden. |
| Turn MASTER | Changes the final volume. |
| Turn PRESETS | Moves through Garden, Departures, Voices, Afternoon, Night Bus, Shoreline, Glass and Tides, wrapping at the ends. The piece you leave keeps its edits in RAM; the one you choose gets fresh generated loops. |
| Press PLAY | Acts immediately: rest if running, grow if resting. Restarting resets bell and percussion positions. Existing sounds can fade after stopping. |
| Tap EDIT | Requests a different chord at the next bar when running, or immediately at rest. |
| Tap REC | Freezes or thaws timed chord movement and lengthens the reverb decay. Bells and percussion keep sequencing if running. |
| Tap EDIT while frozen | While running, queues a change until thaw permits a bar change; at rest, changes the chord immediately. |
| Tap OCT- or OCT+ | Moves the bells down or up, within two octaves either way. |
Except for PLAY, a short button action happens when you release it. Holding long enough for help consumes that release. Changing page never stops the music. Freeze leaves scale, root, piece and recipe edits available.
Choose the notes
| Do this | What happens |
|---|---|
| Press any key, F3 through G5 | Adds or removes that pitch class from the scale. F in any octave changes the same scale note, and so on. |
| Try to remove the root | Keeps it; change the root on Setup instead. |
| Try to leave fewer than three scale notes | Refuses the removal. |
| Turn ALGORITHM | Cycles Ionian, Dorian, Phrygian, Lydian, Mixolydian, Aeolian, Pent maj and Pent min, replacing your edited scale. |
| Edit the scale with keys | The mode reads Custom when the chosen notes differ from the selected mode. |
| Hold HOME and turn SELECT | Changes internal tempo from any page without opening Garden when HOME is released. |
Other held buttons add no alternate key or encoder assignments. Turning a knob while holding a page button changes the page that was already showing; that button's page opens on its later release unless help consumed the release.
Switching from your firmware
Pick the firmware on your FM-1 now to see what installing AMB-1 does to its data.
1 · Back up first, on Stock V15
- Stock V15 has no way to back up your voices or patterns. The FM-1 only sends notes over MIDI, never voice data.
- One indirect way to back up, from Baud Girl's own docs (not tested by us): installing her FM-1+VA keeps your saved stock presets and patterns, and its browser Device Manager can then save all 128 presets and 16 patterns as files. FM-1+VA is closed source; install it at your own risk.
2 · What happens to your Stock V15 data
Possibly at risk
(the layout is reported or inferred, not read in code)
- stock settings (and possibly patterns)
(weakest evidence: reported)
Everything else on AMB-1
Shape the layers
Tap a page button, then use its four knobs. Large parameter ranges speed up during a sustained fast turn; the first few detents remain small steps. Short ranges, such as octave and switch choices, do not accelerate.
| Do this | What happens |
|---|---|
| HOME, KNOB 1 | Internal tempo, 30–120 BPM. |
| HOME, KNOB 2 | Evolve, 0–100: frequency of note changes, rhythm changes and rests. Zero does not guarantee identical loops. |
| HOME, KNOB 3 | Motion, 0–100: depth of the slow arc and movement in sound and space. |
| HOME, KNOB 4 | Drift: nominal chord spacing from 20 seconds to five minutes. New intervals vary around that setting. |
| ENV, KNOB 1 | Pad level, 0–100. |
| ENV, KNOB 2 | Swell, 0–100: length of each voice's breathing cycle. |
| ENV, KNOB 3 | Bright, 0–100: pad brightness and the sung sound's vowel. |
| ENV, KNOB 4 | Colour: Rhodes or Voices, kept with this piece. |
| ARP, KNOB 1 | Bell level, 0–100. |
| ARP, KNOB 2 | Density, 0–100: up to five notes per loop, adjusted when each loop finishes. |
| ARP, KNOB 3 | Tone, 0–100: round bells through metallic overtones. |
| ARP, KNOB 4 | Bell octave, −2 to +2; an available loop note previews the change while running. |
| LFO, KNOB 1 | Bass level, 0–100. |
| LFO, KNOB 2 | Bass octave, −1 to +1. |
| LFO, KNOB 3 | Glide, 0–100: about 20 ms to 1.22 seconds. |
| LFO, KNOB 4 | Fifth, 0–100: chance of moving to the fifth halfway through a chord. |
| SEQ, KNOB 1 | Percussion level, 0–100. |
| SEQ, KNOB 2 | Hits, 0–100: rebuilds the three pulse patterns at the new density; zero silences them. |
| SEQ, KNOB 3 | Swing: alternate sixteenths arrive later, displayed as 50%–75%. |
| SEQ, KNOB 4 | Hats, 0–100: brighter hats and a shorter open hat as you turn up. |
| FX, KNOB 1 | Echo send, 0–100. |
| FX, KNOB 2 | Echo time: dotted quarter, half, dotted half, one bar, two bars or four bars; the engine chooses a shorter time if needed to fit the tape buffer. |
| FX, KNOB 3 | Reverb send, 0–100. |
| FX, KNOB 4 | Size, 0–100: reverb decay and echo feedback together. |
| GLO, KNOB 1 | Root, C through B; your relative scale moves with it. |
| GLO, KNOB 2 | Global tuning, −50 to +50 cents. |
| GLO, KNOB 3 | Generated MIDI output on/off; disabling it sends All Notes Off only on channel 1, so external bells or bass on channels 2 and 3 may keep sounding. |
| GLO, KNOB 4 | Off, On or Keys for scale lights and inactive-button glow. Page and transport indicators still work with Off. |
Read the screen and lights
The header identifies the piece and scale, with tempo or EXT for external MIDI timing and a dot for unsaved edits. A slow indicator follows beats while growing; rest shows a play triangle. Setup adds CPU load. Brief messages temporarily replace the usual header text.
The centre shows the chord inside a twelve-note scale ring, surrounded by bell loops of 13, 17, 23 and 29 beats. Four meters show the layers; three smaller rings show the percussion patterns. A progress bar tracks the next timed chord, or reads held while frozen. The bottom identifies the page and its four knobs, highlighting the last one turned.
| Light | Meaning |
|---|---|
| HOME, ENV, ARP, LFO, SEQ, FX or GLO | That page is selected. |
| PLAY, green | Steady while growing; its other LED is unused. |
| REC | Freeze is active. |
| Key LEDs | With Lights On or Keys, every octave of a scale note is lit. |
| Inactive buttons | Dim with Lights On, dark with Keys or Off. |
SEL has no regular action or help card. Its light only follows the inactive-button glow setting.
Save, reset and get help
| Do this | What happens |
|---|---|
| Tap SAVE | Attempts to save every piece and the global settings immediately, even during playback; SAVED confirms success, while NOT SAVED / FLASH ERROR means it failed. |
| Rest after editing | Autosaves at rest once the pad has faded, no buttons or keys are held, and four quiet seconds have passed since button/key use or KNOB 1–4 turns. |
| Hold SAVE longer than 1.5 seconds | Discards this piece’s edits in RAM and loads its recipe, keeping Tune, MIDI out and Lights; resting autosave can commit it after you release the controls. |
| Hold one button alone for 900 ms, except PLAY or SEL | Opens its card when no other button or key is down and no encoder has turned since its press. A key tapped and released earlier does not block it. Release closes the card without the short action. |
| Press a key, turn an encoder or press another button while help is open | Closes the card; the new input still has its normal job. |
Buttons, keys and KNOB 1–4 restart that four-second wait; lowering ENV Level does not bypass the pad’s fade check. ALGORITHM, PRESETS and incoming MIDI-note edits do not, so they can save immediately if the resting conditions already pass. Switching off does not trigger a save. If you keep SAVE held after its help appears, the recipe reset still happens after 1.5 seconds. To discard the reset, switch off before the next successful save; this returns to the last saved version and loses any other unsaved edits too.
If the expected flash chip is not recognized, every save fails. Pending edits keep the unsaved dot, and resting autosave continues retrying when eligible.
Connect MIDI, recording or a reader
| Do this | What happens |
|---|---|
| Send channel 1 note-ons over USB or MIDI IN | Toggles scale notes with the same root and minimum-note restrictions as the keys. |
| Send MIDI clock and transport | Drives the sequence timing and start, continue or stop state. |
| Enable MIDI out on Setup | Sends the pad on channel 1, bells on 2, bass on 3 and percussion on 10, plus internal-clock transport and timing. |
| Connect USB audio in the default build | Sends the master output to the computer for recording. |
| Connect the compatible FM-1 Screen Reader over USB | Supplies text for pages, values, help, messages and chord changes while the reader listens. |
Recover or update
Press SAVE and wait for SAVED before updating or entering chip update mode. Neither route saves edits for you. A failed or refused USB install that returns to normal operation clears the unsaved flag, so those edits stop waiting for autosave until you make another change; switching off before a successful SAVE loses them.
Install with the author’s web installer, or use python3 tools/fm1_install.py <release-file.fwsc> from the downloaded release source with Python, mido and python-rtmidi installed. The command-line tool normally asks before starting.
| Do this | What happens |
|---|---|
| Hold OCT- and OCT+ while powering on | Opens calibration; release both, then press each requested button and turn each requested encoder clockwise. Completing it saves the panel map. An idle timeout of 30 seconds restores the previous RAM map without writing. |
| Hold OCT- and OCT+ during normal use | Shows a countdown after two seconds, then enters the chip updater after five; release either to cancel. |
| Start an installation over USB | Does not save edits; success restarts, while a failed or refused attempt started in normal operation resumes growing on Garden on return and clears the unsaved dot even though edits remain only in RAM. |
Send USB SysEx F0 22 24 35 7D F7 | Enters chip update mode from normal use or safe mode without saving edits. |
| Press PLAY in safe mode | Retries normal startup once safe mode has been running for half a second. |
Two failed starts lead to safe mode with USB available and no audio. If failed starts reach four, the chip updater takes over. A fault shows a red diagnostic screen for about four seconds before rebooting; the next start briefly shows the recorded PC address. The chip updater and the normal USB installer are different recovery paths. An unsuccessful USB install from safe mode returns to safe mode.
Before you switch firmware
- Back up first. SAVE keeps settings on the unit only; record valued settings externally before switching because this release has no supported piece export/import or supplied command to restore its rescue .bin dump.
Returning to stock: the author’s web installer has a stock-return section that accepts its linked, fingerprint-checked V15 file and works from AMB-1 or safe mode. The author warns that this can lose AMB-1 piece saves; the closed stock loader’s treatment of those saves is unverified here.
All eight pieces, their custom scales and settings, the selected piece and global settings occupy a single alternating project pair at 0xFC000 / 0xFD000. Calibration occupies 0xDC000 / 0xDD000 and writes only when you complete calibration. A normal boot reads those objects without saving them. Used update staging at 0xE0000–0xE4FFF is cleaned at startup. The packaged loader writes program sectors at 0x4000–0x92FFF and also erases sectors in 0x93000–0xFBFFF whose tails validate as update records.
The save contains settings, not the generated sequence positions, current evolving notes, frozen state or echo/reverb audio. SAVE is an on-unit save, not an external export. Record valued settings externally before switching: the release supplies no piece export/import or way to restore the rescue helper’s .bin dump. That helper captures a whole-flash file in chip update mode, but its only write path installs stock V15 program sectors. The documented shell wrapper always offers that stock install with --ask and downloads the helper from X0X’s main branch, so its future contents are not pinned here.
v1.2 accepts its ENO1 format 4 and carries format-3 settings into RAM, adding new parameters from recipes. Other formats use defaults. Neither conversion nor defaults force a startup save. Earlier binaries' ability to read a new format-4 save was not established from this tree. Keep an external record of valued settings before downgrading. See the switching advice in this section. Back up what you can and record AMB-1 settings externally: writes in either firmware, including startup and automatic writes, can overwrite the other’s data; completing AMB-1 calibration can also overwrite other firmwares’ user presets at 0xDC000/0xDD000.
- Back up in the firmware you are leaving first, with its own tool (above). Anything below marked at risk can be written over; whether an older saved copy survives depends on how often you saved, so do not count on it.
- What installing AMB-1 does to the firmware you had before.
Show the detail
install (packaged update loader): Replaces changed program sectors after checking the package and verifies each write. The flash head below 0x4000 is preserved (each install using this release's loader). install: clear update records: Erases a scanned sector only when its tail passes the update-record checks. It does not exempt saved-data areas from that scan (only when a valid update record is found in a scanned sector). start-up, including first start: Cleans the five update-staging sectors if their checked areas show earlier use. It does not inspect every byte before deciding (when the expected flash chip is present and the checked staging areas are not blank). ordinary first start and subsequent starts: No project or calibration write: reads the panel and project, applies loaded/default values and starts playing; ui_init clears the dirty flag. Loading format 3 migrates in RAM only (no completed calibration or later save action). update staged while AMB-1 runs: Stages and verifies an incoming update loader, then commits its update record after the host confirms. A rejected or failed attempt also clears these staging sectors. Entering update does not save pending project edits (when an installer requests an upgrade on the expected flash chip; a failed or refused attempt also clears staging). recovery (pinned rescue helper returning to stock V15): The supplied helper first writes a whole-flash .bin snapshot to the host, checks the stock package fingerprint and device chip/flash identity, and refuses if the flash head differs. With --write or an affirmative --ask reply it replaces differing V15 program sectors only, high to low, verifies the complete resulting image against preserved data and restarts. It does not restore its .bin snapshots (Only the pinned tools/fm1_rescue.py implementation is covered; the shell wrapper downloads its helper from X0X main and passes --ask, so later downloaded code is unpinned).
- Stock V15: Possibly at risk (layout reported or inferred): stock settings (and possibly patterns).
- Baud Girl FM-1+VA: Possibly at risk (layout reported or inferred): Baud Girl presets (128); Baud Girl patterns (16, with locks).
- Felucca: At risk by itself: settings, button calibration, favourites, MIDI LEARN map. At risk when you act: user presets 1-16.
- SLOOP: At risk by itself: settings, calibration, song order, SYN1-4 kits, MIDI LEARN, theme and favourites. At risk when you act: user sounds U01-U16.
- X0X: At risk by itself: the whole X0X project (settings, sound, all 32 patterns, song, knob motion). At risk when you act: X0X button calibration.
- JIANT: At risk by itself: settings, calibration, favourites, MENU options. At risk when you act: user sounds U01-U16.
- Melodee: At risk by itself: settings, factory favourites, calibration, saved template. At risk when you act: shared user presets U001-U018.
- FoMni: At risk by itself: FoMni setup (pages, chord buttons, lights). Carried over: FoMni button calibration.
- ChoralRoot: At risk by itself: options, playing setup and panel calibration.
- GHOULBOX: At risk by itself: settings and panel calibration. At risk when you act: user sounds 1–16.
- M-VAVE FM-1 Open: At risk by itself: Open shared sample audio. At risk when you act: Open USER project 1; Open USER project 2; Open USER project 3; Open USER project 4; Open USER project 5; Open USER project 6; Open USER project 7; Open USER project 8; Open USER project 9; Open USER project 10; Open USER project 11; Open USER project 12; Open USER project 13; Open USER project 14; Open USER project 15; Open USER project 16; Open device preferences. Installing this firmware replaces Open’s sixteen USER projects, preferences and sample header before its first start, including the first 24 KiB of sample storage. This follows Open’s source-defined USER layout and the incoming program range; export projects and device samples before leaving Open.
- FM-106: At risk by itself: octave, last selected preset and MIDI preferences. A valid user bank stored by an earlier FM-106 build can still be present and readable in Beta4; the bank risks listed here, if any, apply if it exists. FM-106 Beta4’s new user-sound edits are only in memory: panel save, delete and librarian bank commit do not store them, even when they report success. Read the unit into the librarian and export both user banks before switching or powering off; those exports omit sequence notes, locks and extended controls.
- Hortator: At risk by itself: settings and panel calibration.
- OberVave: At risk by itself: saved programs and global settings; pattern 1 (its B-track sound can change if it uses a saved program; its pattern notes remain); pattern 2 (its B-track sound can change if it uses a saved program; its pattern notes remain); pattern 3 (its B-track sound can change if it uses a saved program; its pattern notes remain); pattern 4 (its B-track sound can change if it uses a saved program; its pattern notes remain); pattern 5 (its B-track sound can change if it uses a saved program; its pattern notes remain); pattern 6 (its B-track sound can change if it uses a saved program; its pattern notes remain); pattern 7 (its B-track sound can change if it uses a saved program; its pattern notes remain); pattern 8 (its B-track sound can change if it uses a saved program; its pattern notes remain).
- Polly: At risk by itself: Polly setup and channel sounds. Carried over: Polly button and encoder calibration.
- Skiff: At risk by itself: settings, calibration and favourites. At risk when you act: user sound bank 1.
- What the next firmware does to AMB-1's data.
- Stock V15: Possibly at risk (layout reported or inferred): AMB-1 panel calibration.
- Baud Girl FM-1+VA: Possibly at risk (layout reported or inferred): AMB-1 panel calibration.
- Felucca: At risk by itself: AMB-1 pieces and setup. At risk when you act: AMB-1 panel calibration.
- SLOOP: At risk by itself: AMB-1 pieces and setup. At risk when you act: AMB-1 panel calibration.
- X0X: At risk by itself: AMB-1 pieces and setup. At risk when you act: AMB-1 panel calibration.
- JIANT: At risk by itself: AMB-1 pieces and setup. At risk when you act: AMB-1 panel calibration.
- Melodee: At risk by itself: AMB-1 pieces and setup. At risk by itself, under a condition: AMB-1 panel calibration.
- FoMni: At risk by itself: AMB-1 pieces and setup. Carried over: AMB-1 panel calibration.
- ChoralRoot: At risk by itself: AMB-1 pieces and setup. At risk when you act: AMB-1 panel calibration.
- GHOULBOX: At risk by itself: AMB-1 pieces and setup. At risk when you act: AMB-1 panel calibration.
- M-VAVE FM-1 Open: At risk when you act: AMB-1 panel calibration; AMB-1 pieces and setup.
- FM-106: At risk by itself: AMB-1 pieces and setup.
- Hortator: At risk by itself: AMB-1 pieces and setup.
- OberVave: At risk by itself: AMB-1 pieces and setup.
- Polly: At risk by itself: AMB-1 pieces and setup. Carried over: AMB-1 panel calibration.
- Skiff: At risk by itself: AMB-1 pieces and setup. At risk when you act: AMB-1 panel calibration.
- Who reads whose data. Other firmwares reading AMB-1's data: FoMni reads and uses AMB-1's AMB-1 panel calibration; Polly reads and uses AMB-1's AMB-1 panel calibration. What AMB-1 reads of other firmwares' data: AMB-1 reads and uses FoMni's FoMni button calibration; AMB-1 reads and uses Polly's Polly button and encoder calibration. Everything else of another firmware's looks empty or foreign to the reader.
- Every way each write can happen, for all mapped firmwares: the flash atlas's table. Read in each firmware's source (closed ones: their docs or third-party reports); nothing was tested on a unit.
Where the docs and the firmware disagree
- Help: the guide excludes PLAY but misses SEL; neither has a card. The code uses 900 ms.
- Evolve at zero: the guide promises exact repetition, but bell density still follows the Motion arc and random rounding, and the arc can cause bell rests independently of Evolve.
- Freeze: the guide describes continuing bells and percussion as dry. Bell and hat echo sends remain active, and echo returns can still feed reverb.
- Autosave delay: the four-second wait restarts with buttons, keys and KNOB 1–4, not every kind of edit. ALGORITHM, PRESETS and MIDI edits may save immediately when already resting and eligible.
- MIDI output off: the guide describes all notes being cleared, but only channel 1 receives All Notes Off; external notes on channels 2 and 3 can remain sounding.
- Emulator tips: several hover labels are stale: SEL, EDIT, ENV, ARP, SEQ, HOME and SELECT. Use the assignments above; SELECT changes pages, with HOME held for tempo.
Mapped from charlesvestal/fm1-amb at v1.2 (72d3bda), 2026-10-16. Control entries were read against that release's source; their pinned file and line references are in [amb.json](amb.json). An independent checker found zero errors in round 4 (2026-10-16), after the earlier rounds' findings were corrected. Nothing was tested on a unit. AMB-1 is GPL-3.0-only, by Charles Vestal. This is an independent guide in Les's own words, with no affiliation to the firmware author or M-VAVE. Firmware downloads stay with the author and community hub.
Watch
Ask about your own setup
Say what you're after and what else is on your desk. Les takes you there one step at a time, on your gear, and shows you why each step works.
Get an invite to the open beta.
How to use the arpeggiator0:37 · 4 STEPS
How to make a deep bass0:38 · 4 STEPS
How to make an evolving pad0:44 · 4 STEPS
How the Mod Matrix works0:39 · 3 STEPS
How to morph between two versions of a pad0:40 · 4 STEPS
How the two wave knobs on a PolyBrute oscillator work0:42 · 4 STEPS
How to add swing0:34 · 2 STEPS
How to change the bells on the FM-1 AMB-10:36 · 3 STEPS · AMB-1
How to turn the FM-1 AMB-1 into a drone0:37 · 3 STEPS · AMB-1
How to steer the melody on the FM-1 AMB-10:36 · 3 STEPS · AMB-1
How to use the arpeggiator0:41 · 4 STEPS · STOCK
How to play a dominant 7th on the FM-1 with ChoralRoot0:33 · 3 STEPS · CHORALROOT
How to play minor 9th chords with one finger on the FM-1 with ChoralRoot0:37 · 3 STEPS · CHORALROOT
How to play a I-vi-IV-V on the FM-1 with ChoralRoot0:39 · 4 STEPS · CHORALROOT
How to get the Casio CZ sound on the FM-1 with Melodee0:34 · 3 STEPS · MELODEE
How to get a Prophet-5 sound on the FM-1 with Melodee0:40 · 4 STEPS · MELODEE
How to record without quantize on the FM-1 with Melodee0:28 · 2 STEPS · MELODEE
Every firmware, every controlPick the firmware on yours, then tap any control to see what it does.
How to add glide to one step0:38 · 3 STEPS
How to play a random sequence0:28 · 2 STEPS
Les is independent and not affiliated with M-VAVE or the firmware authors. M-VAVE and FM-1 are trademarks of their owners.