Stagewheel - an open-source/OSHW "clonewheel" stage organ/piano for FPGA. https://clonewheel.djehuti.com
  • C++ 72.8%
  • SystemVerilog 18.5%
  • Shell 3%
  • Starlark 2.8%
  • HTML 1.2%
  • Other 1.6%
Find a file
Ben Cox d104d88866 Website: the 2⅔ drawbar is black (gray), not white
A B3's drawbars run brown brown white white black white black black white;
the logo, favicon, touch icon and header had 2⅔ white.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-10 23:52:33 -05:00
docs Link sibling repos (mini-800, tymbal) by their public URLs instead of ../ paths 2026-11-10 22:01:19 -05:00
dsp Link sibling repos (mini-800, tymbal) by their public URLs instead of ../ paths 2026-11-10 22:01:19 -05:00
hps SOURCE partition: always carry this repo's source as built 2026-11-10 22:08:43 -05:00
icon Website: the 2⅔ drawbar is black (gray), not white 2026-11-10 23:52:33 -05:00
patches Patches: default zones lower/upper 36-96, pedal 24-35 on 2026-11-09 21:57:55 -05:00
platforms Bazel --config=hps: armv7 toolchain from the Buildroot host tree; hello_hps 2026-11-08 12:35:44 -05:00
rtl ZoneRouter: read-only state accessors; tb_zone_router uses them 2026-11-09 19:14:51 -05:00
sim Patches: default zones lower/upper 36-96, pedal 24-35 on 2026-11-09 21:57:55 -05:00
site Website: the 2⅔ drawbar is black (gray), not white 2026-11-10 23:52:33 -05:00
third_party SOURCE partition: always carry this repo's source as built 2026-11-10 22:08:43 -05:00
tools Multi-zone: final-review cleanups 2026-11-09 07:31:21 -05:00
ui Patches: default zones lower/upper 36-96, pedal 24-35 on 2026-11-09 21:57:55 -05:00
.bazelignore hps/image: Buildroot DE10-Nano image (mainline U-Boot + Linux, simplefb, USB audio/MIDI/HID) 2026-11-08 12:28:26 -05:00
.bazelrc boot.cmd: load the rbf before expanding filesize; toolchain TODOs 2026-11-08 12:38:02 -05:00
.bazelversion Add Bazel scaffold with smoke test 2026-11-07 17:11:53 -05:00
.gitignore hps/image: Buildroot DE10-Nano image (mainline U-Boot + Linux, simplefb, USB audio/MIDI/HID) 2026-11-08 12:28:26 -05:00
BUILD.bazel Add Bazel scaffold with smoke test 2026-11-07 17:11:53 -05:00
CLAUDE.md Link sibling repos (mini-800, tymbal) by their public URLs instead of ../ paths 2026-11-10 22:01:19 -05:00
clonewheel.env.example HPS image: no radios in the kernel; rebuild it when linux.fragment changes 2026-11-08 15:18:09 -05:00
LICENSE Prepare for public release: Stagewheel name, CC0, README, docs index, references 2026-11-10 21:31:42 -05:00
MODULE.bazel Bazel --config=hps: armv7 toolchain from the Buildroot host tree; hello_hps 2026-11-08 12:35:44 -05:00
MODULE.bazel.lock sim: cw_sim — SDL2 screen + virtual panel driving the golden model 2026-11-08 03:37:35 -05:00
README.md Device tree is CC0 like the rest; public clone URL; note on distributing built images 2026-11-10 21:39:27 -05:00

Stagewheel

Stagewheel is an open-source stage keyboard: a Hammond B3 tonewheel organ with a Leslie 122 rotary speaker, computed sample by sample in the FPGA fabric of a Terasic DE10-Nano. It is built to be played live, so it puts low, steady latency and glitch-free audio ahead of everything else. Electric piano and other keyboards are on the way.

The repository, its build targets and its programs still use the working name clonewheel (cw_sim, clonewheeld, clonewheel.rbf).

Get it

git clone https://forge.djehuti.com/bcox/clonewheel.git clonewheel
cd clonewheel

You need Bazelisk (it fetches the pinned Bazel and a hermetic clang); the simulator also needs ALSA on Linux.

Try it on a laptop

bazel run //sim:cw_sim

Two windows open: the instrument's 800x480 screen and a virtual front panel. Play notes on Q W E R T Y ..., or connect a MIDI keyboard to the ALSA port clonewheel. Key map and options: docs/sim.md.

Test it

bazel test //...

Put it on the board

Build the bitstream (Quartus Prime 17.0.2 Lite) and the SD card image (podman and Buildroot), then flash it:

rtl/de10nano/build.sh
hps/image/build.sh
sudo dd if=hps/image/out/images/sdcard.img of=/dev/sdX bs=4M conv=fsync

What to plug in and what to do when it does not work: docs/board.md.

More

Everything else (design, hardware, tuning notes, references) is listed in docs/index.md.

License

CC0 1.0: public domain, as far as the law allows. Third-party components keep their own licenses; see third_party/NOTICES.md.