Skip to content

hal0zer0/openwurli

Repository files navigation

OpenWurli

An obsessively physically-modeled Wurlitzer 200A electric piano plugin for CLAP and VST3 hosts. NOT IN ANY WAY OFFICIAL OR AFFILIATED WITH ANYONE.

OpenWurli Demo

What Is This?

OpenWurli models the complete analog signal chain of a Wurlitzer 200A electric piano from first principles — no samples, no impulse responses, no curve-fitted approximations. Every stage is derived from the actual circuit schematic and validated against SPICE simulations. Which, by the way, was REALLY REALLY HARD.

That's probably why there are so few decent Wurlitzer style plugins out there. We learned (the hard way, after several false starts) that you cannot come close to approximating the sound of a Wurli without modeling EVERYTHING that makes it sound the way it does. We drew from the real 200A schematic diagram to model every resistor, every diode, even the little 4x8 ceramic cone speakers.

As far as we can tell, this is both the most accurate and best sounding open source Wurli EP plugin in existence. Though there's still room for improvement.

The signal chain:

  1. Modal reed oscillator — 7-mode synthesis with per-note frequency ratios, decay rates, and inharmonicity from Euler-Bernoulli beam theory
  2. Electrostatic pickup — capacitive 1/(1-y) nonlinearity (the primary source of Wurlitzer "bark") with RC high-pass filter
  3. Hammer model — Gaussian dwell filter, register-dependent onset ramp, impact noise burst
  4. DK method preamp — coupled 8-node Modified Nodal Analysis with Newton-Raphson solving, modeling the 200A's two-stage direct-coupled NPN amplifier
  5. Tremolo — LDR feedback modulation inside the preamp loop (timbral, not just volume)
  6. Power amplifier — closed-loop negative feedback NR solver with Gaussian crossover distortion and tanh soft-clip rail saturation
  7. Speaker cabinet — HPF/LPF with Hammerstein polynomial nonlinearity, tanh excursion limiting, and thermal voice coil compression

Features

  • Physically accurate sound derived from component-level circuit analysis
  • Full 64-voice polyphony (matches real 200A's 64 keys) with voice stealing and crossfade
  • 2x oversampled preamp processing (bypassed at >= 88.2 kHz host rates)
  • Tremolo that modulates timbre (not just amplitude), matching the real 200A topology
  • Per-note MLP corrections trained on real Wurlitzer recordings (experimental)
  • Per-note variation in tuning and amplitude (no two notes sound identical)
  • Per-mode frequency jitter to break digital coherence
  • CLAP and VST3 plugin formats

Install

Download the latest release from the Releases page, then copy the plugin to your host's search path:

Format Linux macOS Windows
CLAP ~/.clap/ ~/Library/Audio/Plug-Ins/CLAP/ %LOCALAPPDATA%\Programs\Common\CLAP\
VST3 ~/.vst3/ ~/Library/Audio/Plug-Ins/VST3/ %COMMONPROGRAMFILES%\VST3\

Build from Source

Requires Rust (stable toolchain).

# Clone
git clone https://github.com/hal0zer0/openwurli.git
cd openwurli

# Build and bundle the plugin (release mode)
cargo xtask bundle openwurli --release

# Output: target/bundled/openwurli.clap and target/bundled/openwurli.vst3

Linux Dependencies

# Debian/Ubuntu
sudo apt install libasound2-dev

# Fedora
sudo dnf install alsa-lib-devel

Run Tests

cargo test --workspace

Parameters

Parameter Range Default Description
Volume 0-100% 63% Attenuator between preamp and power amp (audio taper)
Tremolo Rate 0.1-15.0 Hz 5.63 Hz LFO rate (stock 200A: 5.63 Hz)
Tremolo Depth 0-100% 50% Modulation depth (0 = off)
Speaker Character 0-100% 0% 0% = flat bypass, 100% = authentic cabinet response
MLP Corrections off/on on Per-note corrections trained on real Wurlitzer recordings

Documentation

License

This project is licensed under the GNU General Public License v3.0.

Acknowledgments

  • OldBassMan (Freesound) — Wurlitzer 200A recordings used for calibration
  • BustedGear — Wurlitzer service documentation archive
  • Robbert van der Helmnih-plug plugin framework
  • The Wurlitzer 200A repair and enthusiast community

About

An audio plugin attempting to recreate the Wurlitzer 200A sound with circuit & physics modeling

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors