Firmware

driftseq

Rising78/100

DriftSeq — 16-track polymetric master MIDI sequencer for the M-VAVE FM-1 (paper-first)

driftseq is custom firmware for the M-VAVE FM-1, by @johnskiller. 1 star on GitHub.

forM-VAVE FM-1·by@johnskiller

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

Downloads
0
Star
1
Forks
0
Commits
119
Last commit
Get the source

No release files yet. Build from source.

Custom license· johnskiller/driftseq·downloads come from the creator’s GitHub releases

118
Commits
0
Releases
118 commits and 0 releases in the last year
Activity · last 12 months

DriftSeq

16-track polymetric master MIDI sequencer for the M-VAVE FM-1.

SQ-64's step workflow + QY100's 16 polyphonic tracks + built-in GM monitoring, on one 240×240 device — a pattern instrument, not a workstation. Per-track loop lengths run simultaneously; phase drift is seen on the screen, not guessed by ear. Euclid / per-step probability / conditional triggers generate; USB-MIDI out drives the rig (MPC et al.); a looped-back Sonivox EAS GM engine plays drafts in headphones when nothing is connected.

Paper-first (the Polly pipeline: spec → host sim → web emu → firmware)

Specs in docs/specs/ (2026-10-14 series):

speccontent
00-masterpositioning, six design pillars, not-goals
01-core-modeltrack/step/voice model, RAM+flash budget (pattern = 14.3 KB), conditions, chain
02-inputreal panel (14 buttons 2×6+OCT, 7 encoders, keys F3–G5), GRID toggle + STEP-ENTRY, real-time rec
03-screens240×240 frame (K1–4 bottom boxes), HOME hero drift view, page routing
04-gm-monitorSonivox EAS recipe (Polly-proven), loopback wiring, free MIDI-in module mode
05-vocabularylocked product language + banned-terms table

Status: web/emu is live — spec phase closed, remaining input-detail decisions are play-gated (test them in the emu or on device).

Run it

Browser emu (web/): python3 -m http.server 8931 in web/, open http://127.0.0.1:8931/ — 240×240 HOME hero drift screen + SEQ grid, WebMIDI out (chrome/edge), WebAudio beeps otherwise. Sliders morph the selected track's loop window live (PLAY: K3=START K4=LEN semantics). SPACE play/stop, 1–8 select, G toggles HOME/SEQ, click grid cells to toggle steps.

Host tests (host/ + Makefile): make test — determinism, window semantics, probability, Euclid, drift re-alignment at LCM, silent-keep toggles, 4-voice cap. make golden — the MIDI byte stream of the 20 s demo locks to hash 5828982717F322ED (demo pattern @ seed 42, 64-frame ticks).

wasm parity (web/wasmtest.mjs): make wasmtest proves the browser engine emits a byte-identical stream to host C. The engine is the same C the firmware will use; the emu is its first consumer.

driftseq.h/.c      pure-C deterministic engine (ds_tick -> MIDI bytes, seeded RNG)
demo_pattern.c     default demo (kick/snare/hats Euclid + bass + lead, drifts immediately)
drift_web.c        emscripten bridge (state offsets exported, JS reads volatiles)
emu.js             240×240 canvas (HOME hero + SEQ grid), WebMIDI/WebAudio

Next: FM-1 firmware port (keyscan/LED/USB layers from the ecosystem), then EAS GM monitor on-device.

License

GPL-3.0-or-later (FM-1 ecosystem convention). GM engine: Sonivox EAS, Apache-2.0 (see 04).