Caravel
Multi-engine synthesizer firmware for the M-VAVE FM-1, version 0.7.1.
Web installer · Browser emulator · Web editor
Troubleshooting & FAQ — USB detection, switching firmware, stock-return error -5, UBOOT and recovery tools.
Caravel is a fork of Felucca 1.6.1 by Leo Kuroshita (@kurogedelic) and Hügelton Instruments, continued independently by bonszaimusic now that Felucca's active development has ended. 0.1.0 is the first version under this name. Caravel is not affiliated with, endorsed or supported by Hügelton Instruments or M-VAVE, and "Felucca" and "Hügelton Instruments" are those authors' names, used here only to say where the code comes from. See NOTICE, LICENSING.md and CREDITS.md.
Watch and listen
![]() SEM & HADES Sound showcase (recorded before the Caravel rename) |
![]() DRONE Lyra-inspired DRONE engine demo |
More videos: BonszaiMusic on YouTube.
Caravel 0.7.1 — keep your performance snapshots
Download 0.7.1 firmware, installer, emulator and source · Installation, snapshots and compatibility
- S1–S4 Random Morph parameter snapshots are saved with each performance project, including scope and pinned targets. Project load, RESTORE LAST and USB backups restore them; legacy projects start with empty slots.
- Save A–D to keep your slots. A4 short selects S1–S4, A4 held captures, A3 morphs to the selected slot and A2 freezes/resumes. Saving during playback stays RAM-only until STOP commits it.
- The installer verifies the exact package size, SHA-256, product, layout and app/loader CRC before install or resume. USB/recovery help is linked in the FAQ.
- New project files need 0.7.1 or later. Back up before upgrading or rolling back. Extremely dense, incompressible projects are rejected before writing with
PROJECT TOO LARGE / NOT SAVED.
STASIS captured audio, active morph motion and RETURN origins remain volatile. Automated tests and physical FM-1 acceptance are distinct; see the release guide for validation scope.
Caravel 0.7.0 — smoother audio and visible performance automation
Download 0.7.0 firmware, installer, emulator and source · Release details and installation
- Run hot DRONE, SEM, HADES, STASIS and HALL DSP from checked executable RAM. The owner reports no audible crackle and indicated load at most about 70% with the rc6 test setup; this is not a controlled speedup measurement.
- Group STASIS GRAIN/LAYER on one view and place CHORUS before REVERB; retain reverse/scan/capture continuity fixes.
- Keep independent Random Morph RETURN origins for each track/HOME row. Show HOME macro and Pair automation in SEQ > AUTOMATION and make its PLAY switch apply to both event stores. Pair recordings belong to member A.
- Four S1–S4 Random Morph snapshots remain volatile. Permanent snapshot storage is deferred to a later update; saving a project retains its current sound, not the four snapshot slots or captured STASIS audio.
The 0.6.0 STASIS tutorials and sound examples below remain useful for the shared controls.
Caravel 0.6.0 - Hold a sound. Build a texture.
STASIS tutorials · Listen to the examples · Four-page PDF guide · Changelog
Download the STASIS performance setup — the HOME project from the feature Short, with two paired SEM tracks, a driven Drone, MIDI notes and English/German play guides. Load the starting project, then follow the individual moves.
Play a chord, hold its texture, and keep performing over it. STASIS captures the internal REV send and turns it into a slowly moving stereo wash. The captured sound can stay while you change instruments or play something new.
- HOLD: freeze recently played sound. STR brings the texture forward; MOTN moves reflections, filters and reverb damping without sweeping playback speed.
- ADD: mix a new captured sound into the held texture. Choose its share with AMT, then press OCT+. Repeat to build a combined layer with bounded gain.
- BLEND: transition into a new captured texture over 1-30 seconds, then hold the destination. OCT+ cancels WAIT or returns MIX smoothly to the original.

0.6.0 profile: HALL and STASIS; ROOM, SPRING and the SLICE engine are omitted. The separate SLICER track effect remains. Old projects using omitted features offer CANCEL / TEST with explicit substitutions, protect their source slot, and can be saved as a separate copy. Ordinary tempo DELAY is suspended while STASIS is active. Captured audio is volatile RAM and is not stored in projects.
The original sound examples use the actual native firmware DSP and are labelled as renders, not FM-1 recordings. Automated target, audio, MIDI, UI/storage, web, ASan/UBSan and ThreadSanitizer checks gate publication. Actual FM-1 worst-case load and long-term stability remain separate hardware checks.
Performance controls retained from 0.5.0
Illustrated tutorials · PDF quickstart · Try the browser emulator
Deep HADES bass. Drifting DRONE atmospheres. Warm SEM pads. Shimmering FM bells. Now explore what happens between them.
Caravel brings hands-on live sound design to your M-VAVE FM-1. Pair two engines, shape their sounds together and turn a single gesture into a dramatic transformation.
- 🎚️ Pair Morph — explore the space between engines. Play two engines from the same notes and blend between their sounds in real time. Find a beautiful halfway point—or take the audience on the whole journey.
- 🎛️ Custom HOME — build your own performance surface. Bring your favourite controls together, with large active values and preset names that stay visible.
- ✨ Assignable macros — make one knob move your sound. Map up to four parameters to each of four macros per track. Open the filter and bring in the reverb together, with the combinations and amounts you choose.
Build the sound. Find the unexpected. Play the transformation.
Free and open source for the M-VAVE FM-1.
Illustrated tutorials · PDF quickstart · Try the browser emulator
A look at the screen
![]() HOME |
![]() LFO: two groups, one framed |
![]() ENV with its pictogram |
![]() STEP and piano roll |
![]() PRESETS |
![]() SEM: oscillators and filter |
The screens are drawn by the firmware's own drawing code (AMBER palette, 240 x 240 shown at 2x). MENU > COLOR has more palettes:

Engines at a glance
| Engine | Good for |
|---|---|
| ANALOG | classic subtractive leads, basses, pads, plucks |
| SEM | warm pads, brass, strings, notch sweeps |
| HADES | basses, sub layers, dark leads |
| DRONE (experimental) | evolving drones, beds, bells, slow textures |
| PHASE | bright, glassy and organ-like tones, bells |
| LOFI | chiptune, 8-bit arps, bytebeat |
| TRIO | fat basses, sync and ring-mod leads |
| WHEEL | tonewheel organ |
| FM6 | electric pianos, bells, FM basses and pads |
| PHYS | mallets, plucks, hand drums, metallic textures |
| VOICE | sung vowels, choirs, vocal leads |
| SAMPLE, GRAIN | instrument samples and your own, granular clouds |
| DRUM (with DRUM-X) | drum kits and percussion |
| NOISE | wind, rain, risers, effects |
What each engine is and how its controls work: Engines at a glance. Tips for good sounds with SEM, HADES and DRONE: Tips and tricks.
What Caravel adds to Felucca
The focus is usability and the sound experience:
- Two parameter groups on one screen (LFO, LFO2, ENV, ARP, VOICE, EDIT 1/2, LANES, the FX pages): the active group is framed and marked EDIT K1-4, a tag says whether a group is for ALL tracks or the track (T1..T4), SELECT steps through the groups, and the footer shows a numbered view ("LFO TOP 1/3"). SLICER, SCL and CHORD put a picture of their settings below their group, and every page frames the cards KNOB 1-4 edit. SELECT starts on PAGE; in the menu it walks the rows.
- FILTER (0.3.0): one bipolar knob per track on the INSERT 2 page, LP to the left, HP to the right, OFF in the middle; the last stage of the track's chain on every engine, so the sends take the filtered sound (docs/track-filter.md).
- LATCH (CHORD page): notes of the keys, the chord keys and MIDI IN keep sounding after release, per track (docs/latch.md). FX HOLD: a factory preset load keeps the track's sends and INSERT instead of replacing them.
- Clearer sequencing: EDIT opens the EDIT pages everywhere; the cursor step is cleared with SEQ held + F5 (CLEAR STEP, one undo). Euclid, DOUBLE/HALF, conditional steps and external-clock start and resync are inherited and extended.
- Deeper modulation: an independent LFO2 and the MOD matrix (SLEW, S&H sources, MORPH and PHS FB destinations).
- More sound sources: SEM, HADES, DRONE (experimental), DRUM-X, MORPH on ANALOG, PHASE and LOFI, BYTE/FLOAT waves in LOFI.
- Per-track voice reservations (MENU > VOICES) and a MORE page for SPREAD, MORPH and PHS FB.
The full list is in CHANGELOG.md; how the features work is in docs/.
Compatibility with Felucca
Caravel 0.1.0 changed names and text, not storage, and 0.2.0 keeps all formats too (LATCH and FX HOLD use unused slots): settings, projects, presets, the .fwsc package markers and the editor's
file formats are the ones of Felucca 1.6.1 and its Custom additions, so Felucca data opens in Caravel. Projects that use
Caravel-only parameters need Caravel or newer. 0.3.0 adds one track parameter (the FILTER): it opens everything saved before with the filter OFF, but 0.2.0
and 0.1.0 cannot open a project saved by 0.3.0 (user presets still load there, without the filter): see docs/track-filter.md. The web editor and installer accept devices named Felucca as well as Caravel.
Identifiers in the source (FELUCCA_*, felucca.c, the firmware/engines/ submodule) keep their names.
Installing
USB test IDs: the current firmware uses 1209:0001 (running) and 1209:0002 (loader).
They are not allocated to Caravel or universally unique. The pid.codes policy permits private / in-house testing only and
forbids their use on devices that will be redistributed, sold or manufactured, even if given away for free.
Do not use them outside test environments. General deployment needs suitable IDs or written authorization / clarification;
firmware-only downloads and end-user reflashing need policy clarification, not an assumption that free use is allowed.
See NOTICE and the policies for 0001 and 0002.
Installing custom firmware is at your own risk, without warranty to the extent permitted by law; a failed update can leave the
FM-1 unusable or need a Transporter for attempted recovery. M-VAVE's updater or the installer's Return to official V15 can
attempt an official firmware reinstall, not guarantee factory condition, data restoration, warranty coverage or recoverability.
Keep the official package and backups of your data. Non-excludable statutory rights and liability are unaffected.
Use the web installer for browser-based updates, or
tools/fm1_install.py to install a package from a terminal. How to install a specific release, check it, and go back: Installing Caravel. The web tools are in web/ and are built into the site by
web/make_site.py (BUILDING.md).
- Build: BUILDING.md; clone with the engines' submodule:
git clone --recurse-submodules https://github.com/bonszaimusic/caravel.git - Documentation of what Caravel adds: docs/; engines: docs/engines
- Sequencer documentation: live parts, recording and FX automation
- Felucca's manual describes the features Caravel inherits, but not Caravel's additions: Installation · Controls · Menu · Engines · Features
What it is
Sixteen engines with factory presets, four tracks (8 voices shared), a 64-step sequencer (chords, ties, chance, conditions, ratchets, nudge, locks, automation, live and step recording), SEQ TOOLS, songs, effects, a MOD matrix, MIDI (USB and TRS, per-track channels, MIDI LEARN) and USB audio.
Inherited from Felucca
New in 1.6.1
- MENU > LARGE keeps one size per knob (#251): a value no longer jumps between sizes as you turn the knob
- Updates check the package's size on the FM-1: a package made for another device is refused before anything is erased
- Second core (beta), off by default: MENU > SYSTEM > 2ND CORE > ON (BETA), then restart: the FM-1's second core renders some of the parts, same sound, more headroom (#247)
- Felucca-Engines: Felucca 1.6.1 moved ANALOG, LOFI, TRIO, WHEEL and NOISE to
their own MIT repository (a git submodule here).
Caravel uses its TRIO, WHEEL, NOISE and shared DSP, but local GPL-3.0-only, JIANT-derived ANALOG and LOFI variants in
firmware/src/; the unchanged submodule variants remain MIT. Felucca itself stays GPL-3.0-only.
New in 1.6
- Your own UI colours: COLOR has an eleventh value, CUSTOM, set in the web editor with a live preview on the FM-1
- The SEQ piano roll follows the play position when the pattern is longer than one screen
- Conditional steps (1:2 … 4:4, FILL), EUCLID, DOUBLE and HALF, a MIDI channel per track, PHASE FOLD, three more drum kits and humanize in the MOD matrix (1.5.5 and 1.5.6 were never released: 1.6 carries them)
- ⚠ A project with conditional steps does not open on 1.5 or 1.5.1; projects saved by 1.4 or later do not open on 1.1.5.x
All changes and what to know before going back: Release notes · Upgrading from 1.1.5.
Support and contributing
Please report what you find in this repository's Issues (reproducible bugs, one per issue), not to Hügelton Instruments or M-VAVE. Pull requests are welcome: see CONTRIBUTING.md. Caravel is GPLv3 and you are free to fork it.
AI disclaimer
Caravel-specific changes to Felucca were developed with AI coding agents (code, tests and documentation). Direction, design decisions and acceptance are the maintainer's. The original public Felucca history through 1.6.1 is unchanged and is the work of its authors. The initial Caravel changes are recorded as one baseline snapshot rather than as their individual development commits.
Credits and licence
Free software: GPL-3.0-only, the Hügelton Sample Pack and local JIANT-derived ANALOG / LOFI variants included.
The unchanged Felucca-Engines submodule (firmware/engines/) remains MIT;
Caravel uses its TRIO, WHEEL, NOISE and shared DSP. Bundled fonts and ported DSP keep their own licences
(LICENSES/, LICENSING.md). Thanks to everyone whose work and contributions are in it: CREDITS.md.
M-VAVE and FM-1 are trademarks of their respective owners. Caravel is not affiliated with or endorsed by them or by Hügelton Instruments.
Copyright (C) 2026 bonszaimusic (Caravel and its changes to Felucca)
Copyright (C) 2026 Leo Kuroshita (@kurogedelic), Hügelton Instruments (Felucca 1.6.1, the base of this work)








