A modular synth for the M-VAVE FM-1

Patchwerk is a modular synthesizer for the M-VAVE FM-1 with over 80 modules. Build and play patches directly on the FM-1, or use the browser emulator, which runs the same firmware and includes a visual patch bay. Connect your FM-1 over USB to control it from the browser, with changes synced both ways.

Install on an FM-1 Not linked
Computer keys A–' play the keys, Z X octave, Space play/stop. Knobs: drag, arrow keys, or click one then scroll; hold Shift for GLO. Caps Lock on: the keyboard is the panel: 1–6 FX to GLO, Q–Y HOME to REC (held while pressed), ←→ SELECT, ↑↓ ALGORITHM, 7–0 / U–P knobs 1–4 up / down, -= PRESETS. MIDI: not connected

How it works

Patchwerk is a modular: you build a sound by placing modules (oscillators, filters, effects, sequencers, modulators) and joining them with cables. Everything is a voltage, so any output can feed any input: a sequencer can play a filter, an envelope can steer a delay. HOME is always the patch screen, and you can build and edit patches right on the FM-1. Press a page's button again to turn to its next page.

  1. The FM-1 screen adding a VCF between a VCO and a VCA
    Add. Press FX to open the library, turn SELECT to browse and press SEL to add. With a cable selected the module is wired in between, like this VCF between VCO and VCA; ENV adds it unpatched.
  2. The FM-1 screen showing a patch with a cable being started
    Patch. HOME is the patch screen. Turn SELECT to a jack, press SEL to grab its cable, move to another jack and press SEL again. REC unplugs; GLO + OCT− undoes anything. Hold HOME for a moment to see CPU and battery.
  3. The FM-1 screen showing the VCF's filter curve
    Shape. Knobs 1–4 set the module's parameters; ALGORITHM, or a tap of HOME, changes page, and GLO gives fine moves. EDIT shows the module's own screen, here the VCF's filter curve; EDIT again shows its connections.
  4. The FM-1 sequencer page with sixteen steps
    Sequence. SEQ gives 16 steps on the lower keys; press it again for the next sequencer. REC records steps or live playing.
  5. The FM-1 screen showing the perform page
    Perform. PERFORM gathers eight favorite knobs from anywhere in the patch (hold ENV and turn a knob to add it). Press ENV again for MUTES, to bring parts in and out, then MUTATE, to discover new variations.
  6. The FM-1 song page with snapshot clips and an automation lane
    Song. Sixteen snapshots remember every knob, step and bypass: the keys recall them in PERFORM, SEL + key recalls on the patch screen, and GLO + key saves into one. SONG (LFO) arranges snapshots as clips and automates knobs over time.
  7. The FM-1 matrix page listing modules and cables
    Matrix. ARP lists every module and cable with its amount, to change or unplug from one place. GLO + FX turns a chain into a group, one box you can fold and open; ready-made groups are in the patch list, after the factory patches.
  8. The FM-1 patch list
    Save and load. Turn PRESETS for the patch list and SEL to load. SAVE opens the save page: pick a slot (U1–U8), name it, SEL stores. Set KIND to GROUP and the list inserts it into the open patch as one box. SAVE again pages through Settings and Help, which lists every shortcut.

GLO plus another control does copy, bypass, groups and tempo. The on-unit help (PRESETS, then ALGORITHM) and the cheatsheet list them all.

Web patch bay

The same modules and firmware as the FM-1, drawn as boxes and cables on a bigger canvas. Drag between jacks to connect, drag a module to move it, click a cable to remove it.

85 modules

Explore Patchwerk's modules, including synths, samplers, effects, sequencers, and modulation tools.

Before you start

Sample banks

Four banks of eight sounds, A through D, shared by SAMPLER, GRANULAR and DRUM RACK.

Click a slot to load a sound, or drag and drop up to eight audio files onto a bank. Trim removes silence, and Compress reduces file size. Presets load the included banks: A is an 808 kit, B a 909 kit, C FM drums and D various sounds. Drum banks run kick, snare, clap, closed hat, open hat, tom, cowbell, crash, so pads 1–8 of a DRUM RACK line up.

When connected to an FM-1, Send saves samples to its flash memory. You can also record directly on the FM-1 using AUDIO IN and SAMPLER.

Emulator bank

A

B

C

D

Click a slot, or drop audio files on it or on a bank (anywhere else here they fill the empty slots).

CZ banks

The CZ synth includes 81 built-in presets and four banks for your own sounds.

Click a slot or drop Casio CZ SysEx files (.syx) to load up to 128 presets per bank. Supports CZ-101, CZ-1000, CZ-3000, CZ-5000 and CZ-1 files.

When connected to an FM-1, imported banks are automatically saved to its flash memory.

FM-DX banks

FM-DX includes 32 built-in presets and four banks for your own sounds.

Click a slot or drop Yamaha SysEx files (.syx) to load presets from the TX81Z, DX21, DX27 or DX100. Supports full banks and individual voices.

When connected to an FM-1, imported banks are automatically saved to its flash memory.

Screen colors

The FM-1 has twelve built-in palettes (Settings > PALETTE) and a USER slot for your own. Start from one, change any color and watch the screen above change, then send it to a linked FM-1.

Greys

Text and signals

Module groups

Saved palettes stay in this browser. Sent to the FM-1 they become USER (Settings > PALETTE).

Share as code
JSON, plus the “C row” to paste into pw_ui.c to build it in.
Fine-tune how this page shows the screen

Lower gamma and higher “up to” lift the darks more; Color below 1 turns the colors toward grey; Purple to blue turns the violets toward blue, as the unit's panel does. Compare with Settings > DIAGNOSTICS > ALGORITHM on the unit.

Backup

Save your eight user patches (U1–U8), current patch, and optionally your samples in a single backup file. Back up or restore from either the emulator or a connected FM-1.

Back up

Restore

Drop a backup file here, or click to choose one

    One patch

    The patch you're playing as a file of its own, with its snapshots and performance page. Drop a patch file on the patch bay to open it.

    Install on an FM-1

    Install Patchwerk from this page over USB. It takes about two minutes and your FM-1 keeps its own firmware recoverable.

    1. 1
      Back upSave your projects and samples first (see Backup above).
    2. 2
      ConnectDesktop Chrome or Edge, a USB data cable, the FM-1 charged. Choose Allow when asked for MIDI.
    3. 3
      InstallPress the button and keep the page open until it says Done.
    Download firmware v1.0.3
    Puts the 808, 909, FM drums and other sounds in banks A to D on the FM-1 once it restarts, replacing what is in them (here and on the FM-1). Keep this page open.

    Choose the patchwerk.fwsc you built (app/build/patchwerk.fwsc).

    Back to M-VAVE's firmware

    Download M-VAVE's firmware from their site (FM-1 V15: FM-1.fwsc).

    If something goes wrong
    • USB cable disconnected, or the screen stays black. The FM-1 is probably still in update mode. Leave it connected, reopen this page, select the firmware file and click Install to resume. Don't turn it off.
    • "FM-1 not found" with a black screen. Check whether the FM-1 appears as a USB drive named WL82 UBOOT1.00. If it does, you can restore the original firmware using MvaveFM1Unbricker (Windows/Linux) or FM-1 Switch (Mac/Windows).
    • FM-1 doesn't appear over USB. Recovery may still be possible using a small RP2040 board connected to the FM-1's USB lines. See the Transporter guide or FM1 Unbricking for Dummies. The recovery process backs up the flash before making changes and asks for confirmation.
    • Bootloader protection. Patchwerk's installer leaves the first 16 KB of flash untouched, preserving the FM-1's boot code. The recovery tools linked above are independent community projects. Read their instructions before using them.
    Details
    Build the firmware yourself (developers)

    Patchwerk is an app on fm1-base, the community platform for FM-1 firmware (on felucca-bsp, from Felucca). It builds on a Mac or Linux; on a Mac, Docker runs JieLi's compiler for the chip. You install it over USB, from a terminal or from Chrome.

    1. Set up once

      Install Docker Desktop and start it. Then, in the Patchwerk folder:

      pip3 install Pillow mido python-rtmidi
      sh base/tools/get_toolchain.sh
      git clone --depth 1 --branch AC79NN_SDK_V1.2.1_2023-12-13 \
          https://gitee.com/Jieli-Tech/fw-AC79_AIoT_SDK.git ~/fw-AC79_AIoT_SDK
    2. Build

      The build checks RAM, pool and flash sizes and refuses anything that would break an FM-1.

      ./build.sh                      # app/build/patchwerk.fwsc
    3. Install

      Back up your projects and samples. Connect the FM-1 with a USB data cable. The installer asks before it writes, then restarts the FM-1 into Patchwerk.

      python3 base/bsp/tools/fm1_install.py app/build/patchwerk.fwsc
    4. Or from Chrome

      Make a release build and fm1-base's installer page around it, serve it locally (Web MIDI needs a secure page), and open localhost:8000/install/. Its last section puts M-VAVE's firmware back.

      ./build.sh --release 0.1
      python3 base/tools/make_site.py app app/build/patchwerk-0.1.fwsc 0.1 /tmp/patchwerk-site
      cd /tmp/patchwerk-site && python3 -m http.server 8000