Penumbra, image 1 from its README
Firmware

Penumbra

Loud93/100

Drone Synth Firmware for M-Vave FM-1

Penumbra is custom firmware for the M-VAVE FM-1, by @MadMooneyham. Open source under GPL-3.0, latest release v1.2.1 (November 2026), 1 star on GitHub.

forM-VAVE FM-1·by@MadMooneyham

Unclaimed. Is this yours? Sign in with GitHub as @MadMooneyham to claim it.

Downloads
0
Star
1
Forks
0
Commits
243
Last commit
Download v1.2.1

penumbra-1.2.1.fwsc· 595 KB

GPL-3.0· MadMooneyham/Penumbra·downloads come from the creator’s GitHub releases

240
Commits
4
Releases
240 commits and 4 releases in the last year
Activity · last 12 months

Penumbra

Penumbra: the Lunar Eclipse Forge mark in an eclipse's corona

A space-drone instrument for the M-VAVE FM-1, by Lunar Eclipse Forge.

Switch it on and a deep drone swells in, five slowly beating voices held on a pedal. You play over it:

  • VOX is a soft synth voice that sits far back in a long shimmer reverb.
  • BLOOM is a slow swell in the key.
  • The looper follows the scene's key.
  • The holds let you play the sound itself, with throws, bends and freeze.
  • MORPH walks from one place to the next by hand.

The sound it reaches for is the cinematic drone of the ELTA Solar 42: thick, slow, and full of space. The silence between the notes is part of it.

Version 1.2 · identity FM-1_73010200 · GPL-3.0

Play it in the browser (the same code the FM-1 runs) · Cheat sheet (one printable page)

Install

  • The easy way: install it in one click from The Firmware Hub.
  • In the browser: the web installer writes it over USB (Chrome or Edge).
  • By hand: download penumbra-1.2.fwsc from this repository's Releases, and write it with an FM-1 firmware installer.

Penumbra carries the update loader, so you can always go back to another firmware or to M-VAVE's own. If an install ever won't start, hold OCT- and OCT+ for five seconds to put the FM-1 in update mode.

Two minutes in

  1. Switch it on. The clock starts and the drone swells in.
  2. Play the white keys. VOX plays in the scene's key, so every note fits. Leave space between them.
  3. Press black key 7 for a BLOOM, and black keys 8-11 to change VOX's sound.
  4. Press REC, play a phrase, then press REC again. It loops. Press REC once more to layer over it.
  5. Turn PRESET to move to the next scene: everything glides there, and the loop follows the key.
  6. Hold FX and turn K1 to throw the shimmer. Let go and it drifts back.
  7. Hold a white key and turn ALGO to bend the note's pitch.
  8. Hold ENV and press OCT- to keep the sound as A; change it, hold ENV and press OCT+ for B; then hold ENV and turn SELECT to walk between them.

Everything else, from the drone voices to the looper, holds, scenes and sound pages, is in the manual. Its last section is a one-page cheat sheet.

What's in it

  • DRONE: five voices on black keys 1-5, each held or coming and going, with a SWARM that thickens them.
  • VOX: a four-voice synth on the white keys. It has four sounds (GLASS, REED, HALO, LOW), a wave from saw to a narrow pulse, a filter from low-pass to band-pass, and glide.
  • PULSE: a deep kick tuned to the key, and BLOOM.
  • TEXTURE: a bed of space wind, always under the rest.
  • Movement: TIDES, one slow swell under it all (8 seconds to 4 minutes a tide) through the drone, the space and VOX; the drone's own drift and sweep; PAN, each part's place in the field, swaying as far as you like, on the tide or at a rate of its own, together or one after another.
  • Effects: a shimmer reverb (an octave, a fifth or a twelfth up), a worn ping-pong tape delay you can WARP, a filter that dips both ways, and a master stage. Each scene has its own room, gliding with it.
  • The sound, kept: A/B (two versions of the sound, a blend between them) and a library of eight sounds you can bring into any journey.
  • Journeys: six preset banks of scenes, and eight user slots. The journey playing, with its loop and its A/B, survives a power cut.
  • With a DAW: USB audio and MIDI. A tight clock in (and song position) or out, VOX's notes and the black keys both ways, 44 controls on CCs both ways (automate them, or record your moves), program changes for the scenes and journeys.
  • Extras: a SLEEP timer, and screen-reader support.

Tell me how you play it

Penumbra grows from how people use it. I'd love to hear:

  • what you play with it, and what it makes you want to do next;
  • what felt unclear, or got in your way;
  • anything that sounds or behaves wrong.

Open an issue and pick "Something is wrong" or "An idea". For a problem, the steps you took matter most: the journey, the page, what you held and turned. Most problems can be replayed in Penumbra's simulator from those steps alone.

To share a journey or a sound, ask how something works, or talk about how you play it, use Discussions.

For developers

Penumbra is written in C for the FM-1's JieLi AC791N. Its audio engine runs on both cores, and the whole app also runs on a desktop simulator for testing.

  • Building: BUILDING.md covers the toolchain, ./build.sh --release X.Y, and the web installer.
    • Release builds are FM-1_73XXYYZZ; development builds are FM-1_730.
  • Tests: tests/run_tests.sh runs the unit tests, the simulator's scenarios (tests/scenarios/*.pen) and the click checks.
  • Where things are:
    • firmware/src/dsp/: the voices;
    • firmware/src/seq/: the journeys and the looper;
    • firmware/src/app/: the engine, the UI and the settings;
    • host/: the simulator.
  • Licence: GPL-3.0-only. Penumbra is built on Felucca (Leo Kuroshita, Hügelton Instruments) and X0X (Charles Vestal). The full credits are in LICENSING.md.

M-VAVE and FM-1 are trademarks of their owners.