Custom firmware · physical modelling · open source

A Wurlitzer 200A,
rebuilt in fixed point.

Reed is a from-scratch firmware project for the M-VAVE FM-1. The voice is a fixed-point port of OpenWurli's modal reed, electrostatic pickup and hammer models. No samples, no impulse responses: seven reeds modes, a field-solved pickup law and the 200A's amplifier character, running on a 32-bit JieLi AC79.

“Four bars” — engine demo
Rendered offline by the same C engine. No samples; the default 8-voice profile through the model chain.

What is inside

01 / REED

Seven-mode reed

Euler–Bernoulli mode ratios with tip mass, per-note inharmonicity, damping and the velocity-dependent hammer dwell. Quadrature oscillators, no per-sample sines.

02 / PICKUP

Electrostatic pickup

A 2D field-solved capacitance-vs-overlap law, one moving reed against a fixed plate node. The nonlinearity is in the source, exactly as in the 200A.

03 / HAMMER

Hammer and damper

Gaussian contact dwell, register-dependent onset, attack noise and the progressive felt damper. High modes die first.

04 / AMP

200A character

Input coupling, preamp asymmetry, Twin-T/LDR tremolo, volume pot, feedback shelf, crossover distortion and the 4×8″ speaker. Calibrated against OpenWurli.

05 / FIXED POINT

No FPU required

Q30 reed, Q24 gain staging, Q28 biquads, 32×32→64 MACs. The same C99 source builds for the AC79 and for WebAssembly, bit-identically.

06 / HARDWARE

FM-1, not a computer

The target is a 360 MHz pi32v2 with 8 voices by default (32-slot capacity), the FM-1 keybed, encoders and LCD. The firmware layer builds on Felucca's BSP; the emulator is the reference.

Signal path

7-mode reed→ pickup overlap law→ hammer / damper→ preamp→ LDR tremolo→ volume pot→ power amp→ speaker→ Q20 out

The voice path is a direct fixed-point port of OpenWurli's physics. The amplifier and speaker are a calibrated behavioural model in v0.1; the exact circuit solver is the next milestone. See the porting notes for what is exact and what is approximated.

Install on hardware

StageStatusWhat it means
Desktop engineworkingOffline WAV renderer and host test suite.
Browser emulatorworkingWASM in an AudioWorklet; play it above.
FM-1 firmwarealphaBSP integration and UI written; not yet validated on a unit.
Web installerplannedShips with the first hardware-validated image. No firmware is published yet.

No download is offered before the firmware is tested on real hardware. The build guide has the current bring-up instructions and the recovery path. Installing custom firmware is always at your own risk.

Built on

OpenWurli

The physics, calibration and the Wurlitzer 200A research. GPL-3.0.

Felucca

The FM-1 firmware architecture, UI and the proof that a custom firmware fits. GPL-3.0.

felucca-bsp

The JieLi AC79 board layer: audio DMA, key scan, LCD, USB, update loader. MPL-2.0.