STAMP COMPOSER FM-1

Firmware for the M-VAVE FM-1 · 0.2-dev

Little stamps. Big ideas.

A Mario Paint-inspired music composer. Pick a character stamp, press a key, and a note lands on the staff. Each of the 31 stamps is its own sound, so a song is a picture you can hear.

Development preview. This firmware runs in emulators and a host simulator, and has not been tested on a physical FM-1 yet.

The staff page on the FM-1 screen: a row of character stamps, a staff with Mario and star notes, four knob tiles
The staff page, from the firmware's own screen

01 / The idea

A little composer for a little synth

Stamp Composer turns the FM-1 into a music maker in the spirit of Mario Paint. The keys place notes, the knobs shape them, and eight layers let you stack parts. It is built on the open fm1-base platform, and the same C code that runs on the unit also runs in your browser.

  • 31sounds, one per stamp
  • 8layers to arrange with
  • 384notes per song
  • 8song slots, plus autosave
  • 16steps of undo and redo
  • MIDIchannel for every sound

Also on board: a staff with flats and sharps, triplet grids, swing and humanize, bar copy, move and transpose, MIDI clock in and out, and a Twinkle Twinkle demo to start from.

02 / The stamps

31 characters, 31 sounds

Turn PRESETS to choose a stamp. Its name and its instrument are shown under the ribbon, like MARIO / PIANO.

  • MarioPiano
  • MushroomKick
  • YoshiZip
  • StarBell
  • FlowerTrumpet
  • Game BoyPulse
  • DogDog
  • CatCat
  • PigPig
  • SwanHorn
  • FaceBaby
  • PlaneGuitar
  • BoatBlock
  • CarOrgan
  • HeartBass
  • PiranhaPiranha
  • CoinCoin
  • Shy GuyShy Guy
  • BooBoo
  • LuigiLuigi
  • PeachPeach
  • FeatherFeather
  • Bullet BillBullet
  • GoombaGoomba
  • Bob-ombBob-omb
  • SpinySpiny
  • FruitFruit
  • 1-Up1-Up
  • MoonMoon
  • EggEgg
  • GnomeGnome

03 / Hear the sounds

Pick a sound to preview

Each clip is a short C4 - E4 - G4 arpeggio on one sound. Press a button to hear it; press it again to stop.

Twinkle Twinkle
The built-in demo, STAR melody over a HEART bass: the first 20 seconds.

Rendered by the host simulator from the firmware's own engine and sound pack, not recorded from hardware. On a real unit the output stage and the speaker will colour it. The clips are normalised for the web.

04 / The pages

Every page, from the firmware's own screen

EDIT steps through the pages, GLO opens the song book, HOME comes back to the staff. K1 to K4 follow the four tiles at the bottom of the screen, left to right.

  • The Staff page on the FM-1 screen
    StaffWrite notes: keys place them, SELECT moves the cursor, K1 to K4 set tempo, velocity, length and song end.
  • The Mix page on the FM-1 screen
    MixBeats per bar, and the level of the selected sound and layer.
  • The Sound page on the FM-1 screen
    SoundTune, tone, decay and pan for each sound.
  • The MIDI page on the FM-1 screen
    MIDIAll 31 sounds with their channels; mode, clock and MIDI in.
  • The Groove page on the FM-1 screen
    GrooveSwing and human feel, saved with the song.
  • The Bars page on the FM-1 screen
    BarsCopy, move, delete, insert and transpose runs of bars.
  • The Song book page on the FM-1 screen
    Song bookEight slots and the Twinkle Twinkle demo.
  • The Help page on the FM-1 screen
    HelpHold HOME for this page's controls.
  • The Flats and sharps page on the FM-1 screen
    Flats and sharpsBlack keys spelled as you like, drawn on the right line.
  • The Playing page on the FM-1 screen
    PlayingYour stamp hops along the staff in time.

These are screenshots of the host simulator, which draws the same 240 x 240 screen the firmware does. See the manual for every control on every page.

05 / Your first song

Your first song in 2 minutes

  1. Turn PRESETS to pick a character. Press a few keys: each one plays and places a note at the cursor. Press a note again to remove it.
  2. Turn SELECT to move the cursor one step along, and place another note. Press several keys together for a chord.
  3. Press SEQ to change the step size, then add quicker notes.
  4. Press PLAY to hear it. Press it again to stop. Not happy? ENV undoes, LFO redoes.
  5. Turn ALGORITHM to pick another layer, pick another stamp with PRESETS, and add a second part.
  6. Turn KNOB1 for the tempo and press ARP to loop. Press SAVE to keep it in a slot. It is also saved on its own after a few quiet seconds.

Want a clean page? Press GLO, turn KNOB1 to a slot that says EMPTY and press REC twice. No FM-1 at hand? Try it in your browser, or open the quick preview, which also imports and exports songs as .scf files.

06 / Install

Ready for your FM-1

Install

  1. Keep M-VAVE's stock firmware file somewhere safe, so you can always go back.
  2. Use Chrome or Edge on a computer, a data USB cable, and leave the FM-1 powered from USB.
  3. Open the installer, allow MIDI access, and pick your FM-1.
  4. Leave "also write m-bootloader" unticked. That replaces the boot loader, and this project has not tested it.
  5. Press install and do not unplug until the page says it is done.

Open the installer

Back up, and go back

  • Backup saves all eight song slots to one file and restores them all together.
  • The installer's Back to the stock firmware writes M-VAVE's firmware over the same cable.
  • If a unit will not start, it falls into safe mode, and a rescue tool can write stock firmware back. The manual's recovery section and the install notes explain each step.

Not tested on a physical FM-1 yet. Read the install notes before you flash.

07 / Developed in the open

What has been tested, and what has not

Tested

  • The core engine and importer, with unit tests (tests/run_tests.sh).
  • The whole app on a host simulator driven by scripts: every page, saving, autosave, MIDI, undo, bars, groove.
  • The real firmware package, booted and played in the fm1-emu emulator in your browser.
  • The same C source compiled to WebAssembly for the quick preview.

Not tested

  • Anything on a physical FM-1: real boot, flash, audio output, input feel, MIDI with real gear.

The details are in the validation report.

Downloads

Development build from commit 16e058f, made by this site's workflow. It is not attested: it has no signed build provenance and no release checksums. Releases are attested.

FileDetails
stamp-0.2-dev.fwscFirmware package, 611,496 bytes.
SHA-256 09c2e77f13217f9f53279415252e0452bf94555ec9bb20b577c690019cf54dd4
SHA256SUMSChecksums of every release file.
Source ZIPThe code, the tools and the pinned platform.
ValidationWhat was checked and how.

08 / Questions

Good to know

Where do the sounds and the pictures come from?

The stamps and the sound pack come from Nintendo's Mario Paint, by way of the Super Mario Paint project. They are not covered by this project's MIT licence, and this is an unaffiliated fan project. They live in an asset pack you can swap: build with STAMP_BANK=placeholder for original tones, or point STAMP_WAV_DIR at your own WAV files.

Will it break my FM-1? How do I go back?

Installing replaces M-VAVE's firmware, so keep the stock file first. The installer can write it back over the same cable, M-VAVE's own updater works too, and if a start fails twice the unit offers a safe mode. The firmware has not been tested on a physical FM-1 yet, so please read the recovery notes before you begin.

Does it do MIDI?

Yes. Every sound can send on its own channel (or all of them can), with velocity, length and tune. There is MIDI clock out, and clock in that makes the FM-1 follow another machine. Notes coming in over USB or the MIDI jack act like keys. The MIDI page has all of it.

Can I bring songs from Super Mario Paint?

Yes, in two steps. The project's importer (tools/import_smp.py) turns a Super Mario Paint song into a .scf file, and the quick preview opens it with Import a .scf song, where you can listen, edit and export it.

Do the keys have to play the stamp I picked?

Yes: the stamp is the sound. Different stamps on different layers make a band. In FREE PLAY (OCT− and OCT+ together) the keys only play and never write, which is handy for jamming over a song.