Press a key. Any key!
A plink, a boom, a one-two-three!

A first instrument for small hands, on the M-VAVE FM-1.

Version 0.11 · free, GPL-3.0

the Monkey laughing, playing its drum the Cat laughing, playing its xylophone the Dog laughing, shaking its maracas the Llama laughing, its bells swinging

What does it do?

No menus to find, no settings to mind,
and no wrong notes of any kind.

the Cat at its xylophone under a moon, bubbles rising for the notes held
SYNTH

Tap up high, tap down low:
every note's a note to know.

Every key plays a note that fits with all the others. The pet plays along, and sings what was tapped back a bar later.

the Monkey with its drum, the beat running
DRUMS

Boom goes this one, tick goes that.
Hold two down: a beat, like that!

Every key is a drum. A held key keeps its own rhythm going, and BEAT starts a backing pattern to play over.

TALK: a big letter M on the screen above the Cat
TALK

A says A and B says B,
all the way to yay past Z.

Each key says its letter in a talking-toy voice and shows it big. TUNE does the same with nursery tunes: every tap is the next note of the song.

the Dog, its name DOG across the top of the screen
FRIENDS

Turn the knob and who comes round?
Each new friend, a brand-new sound.

Monkey, Cat, Dog and Llama. Each says its name and brings its own sound, drum kit, beat and tunes, in a night, a sea, a meadow or the snow.

Get it

Try it here or take it home.

Play it right now

The same firmware, running in your browser. No FM-1 needed. Chrome, Edge and Firefox.

Put it on an FM-1

From Chrome or Edge, over the USB cable.

Download purplemonkey-0.11.fwsc

For the command-line installer:
python3 tools/fm1_install.py purplemonkey-0.11.fwsc

Source

On GitHub, GPL-3.0. By Quixotic7, on ChoralRoot FM-1 and Felucca by Hügelton Instruments.

The grown-up page

The small one needn't read it.

A first public beta. It replaces the firmware on the FM-1: read How to get back before you install, and install at your own risk.

The installer talks to the FM-1 over Web MIDI. The firmware it runs now (stock, Felucca, ChoralRoot or PurpleMonkey) stages the update loader, the loader writes the whole image, then the FM-1 restarts and reports FM-1_927. Do not unplug it while it writes. An interrupted install resumes when you press Install again: the FM-1 stays in update mode.

If the FM-1 runs Felucca or ChoralRoot, the installer first saves what is stored on it to a file. PurpleMonkey stores nothing and cannot take that backup: keep the file for when you go back.

On the command line, from the source: pip3 install mido python-rtmidi, then python3 tools/fm1_install.py purplemonkey-0.11.fwsc. --info prints the connected FM-1's identity.

The grown-up page It powers on as the Cat in SYNTH with the beat stopped. The 27 keys are the only things that play; the buttons and knobs change what they play.

Buttons

A lit button is on. A button that does nothing stays dark.

PrintedPurpleMonkeyDoesMore
SELSYNTHthe keys play notesthe white keys climb a five-note scale over three octaves; a black key plays the note of the white key on its left. No key is a wrong note
FXDRUMSthe keys play drumsnine sounds, three times over. A held key repeats in its sound's own rhythm, so a few held keys make a groove
PLAYBEATthe backing beat on and offa two-bar pattern, the pet's own; in SYNTH a bass and a round of four chords join it
ENVKEYSin SYNTH: the scalethe pet sings a tapped note back a bar later; two keys held grow a phrase; three quick keys start a run
LFOTUNEin SYNTH: a nursery tuneany key plays the tune's next note, so mashing one key plays the whole melody; a held key plays it on by itself. Pressed again: the next tune
EDITTALKin SYNTH: the alphabetthe keys say A to Z from the lowest up and show the letter big; the last key says "yay"
HOMEHOMEthe knobs back to normalafter a small hand has turned everything: the pet, the mode, the beat and the world stay

GLO, SAVE, ARP, SEQ, REC and the two OCT buttons do nothing.

Knobs

PrintedPurpleMonkeyIn SYNTHIn DRUMS
SELECTPETMonkey, Cat, Dog, Llama, round and roundthe same; the pet says its name
PRESETSSOUNDsixteen sounds, four a petthe same
ALGORITHMWORLDnight, sea, balloons, space, meadow, snowthe same
KNOB 1TONE · SPEEDsoft to bright (TUNE: its speed)72 to 136 beats a minute
KNOB 2WOBBLE · BUSYvibrato, none to a lothow much the beat plays, seven levels
KNOB 3SPACE · BOUNCEdry to reverb and echostraight to a shuffle
KNOB 4LENGTH · SQUISHshort notes to long oneswoody and short to round and rubbery
MASTERVOLUMEvolumevolume

Every knob is bounded: at either end the sound is still the sound and the beat is still a beat.

Friends

Each pet has its own sound, drum kit, beat, chords and tunes. A new pet says its name.

No.PetSoundsDrum kit
1Monkeya kalimba; a marimba, a toy piano, a steel panLatin
2Cata xylophone; a glockenspiel, a toy organ, a harpa vintage rhythm box
3Doga music box; wind chimes, vibes, a rubbery bass808
4Llamapipes; a soft pad, a flute, a small choirjazz

Worlds

WORLD changes where the pet is: a night of fireflies, the sea floor, green hills with balloons, the moon, a meadow, snow. A note is a bubble, a balloon, a star, a flower or a puff of snow; a kick is a ripple under the pet's feet.

Tunes

Twinkle Twinkle, Mary Had a Little Lamb, Row Your Boat, Frère Jacques, Old MacDonald, London Bridge, Hot Cross Buns, Itsy Bitsy Spider, Three Blind Mice, Ode to Joy, Jingle Bells and Skip to My Lou. Each pet has three in each world.

The voice

The letters, "yay" and the pets' names are spoken the way the talking toys of 1978 spoke: each word analysed into a few numbers every 12.5 ms and played back through a small filter, about 7 KB for all 33 words. No recording is in the firmware.

MIDI and audio

A MIDI keyboard on USB or the TRS jack plays the pet's synth sound on every note, not only the scale. Channel 10 plays the pet's drum kit (the General MIDI map). CC 120 and CC 123 let every note go.

On a computer the FM-1 is a recording device: channels 1 and 2 are everything, 3 and 4 the synth alone. It still carries ChoralRoot's name there ("ChoralRoot In").

How to get back

To go back to the stock firmware, or on to another one, the FM-1 has to be in update mode.

OCT− + OCT+ + HOME held for 5 seconds.

Three buttons, so that a small hand does not find it. A countdown shows after two seconds; letting go cancels. The installer also starts update mode by itself while PurpleMonkey runs.

For the stock firmware, download the official FM-1 V15 (FM-1.fwsc) yourself from M-VAVE's downloads page and select it under "Return to official V15" in the installer. The browser checks the file; it is not sent anywhere.

If an install fails and the FM-1 no longer starts, recovery needs the unbricker or an FM-1-transporter.

Thank you

PurpleMonkey was made by Quixotic7 with Claude. It is free software under the GPL-3.0: change it, and share what you change.

  • ChoralRoot FM-1 by Quixotic7: the tree this was forked from. github.com/Quixotic7/ChoralRootFM1
  • Felucca by Leo Kuroshita (@kurogedelic), Hügelton Instruments: the platform, the engines, the installer, the update loader. github.com/hugelton/Felucca
  • SLOOP by isod89: the synthesised drum models and their kits. github.com/isod89/sloop-fm1
  • FM6: msfa from Dexed (Google, Pascal Gauthier), Apache-2.0.
  • Inter Tight by The Inter Project Authors (SIL OFL 1.1, OFL.txt): the UI font, and this page's.
  • JieLi AC79 SDK: three files in the package (uboot.boot, cfg_tool.bin, eq_cfg_hw.bin), Apache-2.0.
  • The pets: Quixotic7's artwork, generated with ChatGPT.

Every licence: LICENSING.md, GPL-3.0, all texts.