Skip to content

Releases: joakimeriksson/fm1-dock

fm1-dock 0.7

Choose a tag to compare

@github-actions github-actions released this 31 Oct 19:26
9254e63

fm1-dock 0.7: Bluetooth MIDI that connects, both CPU cores, five new modules, a master EQ, and a real catalog page.

This is the first fm1-dock built from source and signed on GitHub by the Firmware Hub's shared workflow (zvenson/fm1-build): every .fwsc here carries a build attestation (gh attestation verify fm1-dock-0.7.fwsc -R joakimeriksson/fm1-dock --signer-repo zvenson/fm1-build).

Install

Open the page in Chrome or Edge, press Connect over USB, then Install fm1-dock. Coming from 0.6 or earlier, your added modules, settings and presets stay. Then add modules from the catalog with one click.

Package For
fm1-dock-0.7.fwsc M-VAVE FM-1
fm1-dock-0.7-smk37.fwsc M-Vave SMK-37 Pro, Starrykey 37 Play
fm1-dock-0.7-smk37-elite.fwsc SMK-37 Elite
fm1-dock-0.7-smk37-mke.fwsc MKE-P37

Bluetooth MIDI that connects, with both cores

Bluetooth MIDI advertised, but on a real FM-1 a connection fell apart within a fraction of a second. Reading the radio's own counters from RAM showed why: on the data channels it heard nothing. The radio was started from values recorded from the stock firmware in an emulator, and the chip's own tuning was eleven steps away.

  • The radio calibrates itself at every start, with the AC79 SDK's calibration as Charles Vestal wrote it for fm1-base and Melodee (fm1_rf_cal.h, Apache-2.0). A Mac connects in half a second and MIDI flows both ways. Turning BLUETOOTH ON pauses the sound for about 0.2 s while it measures.
  • A dead link is let go and the FM-1 advertises again (it could hang on one for 40 s, or for good).
  • The radio's interrupts come before the audio's, so a busy module no longer makes it miss a connection.
  • Both CPU cores keep running with Bluetooth on, with M-VAVE's whole power-up at boot (after Melodee and Optimist). Tested: three minutes of eight-note chords over Bluetooth into CS-1, half its voices on the second core.

On a Mac: Audio MIDI Setup → Window → Show MIDI Studio → the Bluetooth button → Connect on FM1-DOCK xxxx.

Five new modules

Each is its author's own code, taken by a take.py and changed only where a module's 272 KiB of RAM needs it. Add them from the page.

by
FM-106 PatttF The Juno-106: six voices, three of them on the second core; the 128 factory presets, its chorus, arpeggiator and sequencer
MONK-1 Charles Vestal Twelve singers on MonkSynth's formant voice; velocity and pressure from the keys. Large: 240 KiB
FiMba-1 Adam Sowers A kalimba by modal synthesis: 16 tines, thumb-roll chords, the sound hole's wah under the keys' pressure
GATOR npi3pak A macro oscillator after Mutable Instruments' Plaits (Emilie Gillet's DSP): 24 models, 16 presets
DUB-1 sbegueria A generative dub techno machine that plays itself, eight pieces. Large: 265 KiB

The add-ons share 296 KiB of flash; the page's meter shows what fits before you add one.

The second core

Modules can play voices on the chip's second CPU: CS-1 plays half its voices there, FM-106 three of its six. The top line shows 2CPU or 1CPU. After a crash with both cores, fm1-dock runs on one until power-off instead of crashing again.

Sound and MIDI, for every module

  • Master EQ (OPTIONS → EQ): LOW, MID and HIGH, ±12 dB, in the chip's hardware EQ, heard while you set it; KNOB1–3 turn the bands.
  • CC7 VOLUME and MASTER CC7: CC 7 sets the level of whatever plays; MASTER can send CC 7.
  • MIDI CH: ALL, or one channel the module hears as channel 1.
  • LOCAL: OFF, the keys only send MIDI (no doubled notes from a computer).
  • MIDI THRU: the TRS jack's MIDI on to USB and Bluetooth.
  • KNOBS CC: KNOB1–4 send CC 74, 71, 73, 72.

Also

  • Scintilla up to date: the factory bank, velocity and aftertouch, CC 7, Take-off without the click.
  • USB audio records every module cleanly.
  • The page is a catalog and installer: your device (read only until you press a button), fm1-dock's install and update, every module with Add / Remove, and the flash meter.

Thanks

Kerem Kilic (Melodee): the power-up and the second core's safe hold. w0ts (Optimist): the Bluetooth stack. Charles Vestal (fm1-base): the radio calibration, MONK-1, AMB-1 and FoMni. Leo Kuroshita (Felucca). PatttF, Adam Sowers, npi3pak, sbegueria, twochannels and zvenson for their synths. Licences and credits: LICENSING.md.

Known limits

  • FM-1 SID, MONK-1 and DUB-1 are large: with one of them added, little else fits.
  • The new modules are tested in the emulator; FiMba-1 also on an FM-1.

fm1-dock 0.6

Choose a tag to compare

@joakimeriksson joakimeriksson released this 25 Oct 22:08
e177e83

One firmware for the M-VAVE FM-1, many synths. fm1-dock: CS-1 (twochannels), Scintilla (Joakim Eriksson: the Elka Synthex, the laser harp among its 80 patches), OberVave (zvenson: a 4-track analog poly with arpeggiator, sequencer and effects) and the built-in sine. Hold HOME to pick one.

Install (over USB; asks before it writes):

pip3 install mido python-rtmidi
python3 tools/fm1_install.py fm1-dock-0.6.fwsc

Back to any other firmware with the FM-1 Firmware Hub. Installing over 0.4 keeps your deployed modules, settings and presets. Installing firmware is at your own risk; OCT− held at power-on is the USB rescue.

New since 0.4:

  • BLE-MIDI (off by default): the picker's last line, BLUETOOTH, turns it on with SEL. A computer, phone or controller connects to FM1-DOCK xxxx without pairing, and notes go both ways. OCT+ at power-on is a safe start: the sine only, the radio not started.
  • A file from the computer into the module playing, never written to flash: tools/dock.py send FILE. FM-1 SID uses it to play any .sid sent over USB at once, from its page ("Play on my FM-1"). Modules opt in with HB_F_DATA and data(); existing modules load as before.
  • Safer: a release takes no boot firmware, the keys at power-on are read for 500 ms, and OCT− is read again while fm1-dock starts (the USB rescue).
  • Solo apps: tools/build.py --modules PATH --name ... builds a firmware of one module of your own on fm1-dock, keeping its USB, installer and rescue. FM-1 SID's own firmware is built this way.
  • The fm1-dock name everywhere: tools/dock.py, .dock module files (.hrbr still works), FM1-DOCK on the crash and rescue screens. The protocol and module format are unchanged: modules from 0.4 keep working.
  • USB keeps four command frames waiting instead of one. EXEC probes work again.

Files:

  • fm1-dock-0.6.fwsc: the package (610 110 B, identity FM-1_956)
  • fm1-dock-0.6.syms: its symbols, for the console to name the function of a crash PC

Try it in the browser first: https://joakimeriksson.github.io/fm1-dock/#emulator

Built from e177e83 with tools/build.py --release 0.6. GPL-3.0-only.

fm1-dock 0.4

Choose a tag to compare

@joakimeriksson joakimeriksson released this 25 Oct 08:05
9a05ef6

One firmware for the M-VAVE FM-1, many synths. The first release as fm1-dock (formerly harbor).

In the package: CS-1 (twochannels), Scintilla (Joakim Eriksson: the Elka Synthex, the laser harp among its 80 patches), OberVave (zvenson: a 4-track analog poly with arpeggiator, sequencer and effects), and the built-in sine. Hold HOME to pick one.

Install (over USB; asks before it writes):

pip3 install mido python-rtmidi
python3 tools/fm1_install.py fm1-dock-0.4.fwsc

Back to any other firmware with the FM-1 Firmware Hub. Installing over an earlier harbor keeps your deployed modules, settings and presets. Installing firmware is at your own risk; OCT− held at power-on is the USB rescue.

New since harbor 0.3:

  • OberVave as a module; its programs and patterns in flash banks
  • banks by index for modules (bank_load_n / bank_save_n / bank_free) and the glow LEDs (led(id, 2))
  • code may run from RAM and from deployed modules on a real FM-1 (the chip's PC limits), so probes and deployed modules work there
  • modules can build from outside the tree (includes =, HB_MOUNT)
  • probes measured on the chip: instruction, DSP and cache costs, alignment, the clock, the LCD, MIDI out

Files:

  • fm1-dock-0.4.fwsc: the package (610 110 B, identity FM-1_954). The tools and file names inside still say harbor until the code is renamed.
  • fm1-dock-0.4.syms: its symbols: load them in the console to name the function of a crash PC.

Try it first in the browser: https://joakimeriksson.github.io/fm1-dock/#emulator

Built from 9a05ef6 with tools/build.py --release 0.4 --modules cs1,scintilla,obervave. GPL-3.0-only.