Developed by Dan Trueman, Michael Mulshine, Matt Wang and Davis Polito, with Theo Trevisan, Katie Chou, Jeff Gordon, Camy Streuly, and Myra Norton.
bitKlavier takes inspiration from John Cage's prepared piano, but instead of screws and erasers we place a reconfigurable collection of digital machines between the virtual strings of the digital piano. Learn more at the bitKlavier website.
NOTE: bitKlavier2 is the GitHub Repository name for bitKlavier versions 4 and higher, and was completely rewritten in 2025-26, superceding the prior version (which ran through 3.5)
- CMake 3.25 or higher
- C++20-capable compiler
- Xcode (macOS) — required for AU/AUv3 targets and code signing
- Git with submodule support
Clone with submodules to pull in JUCE and other git-tracked dependencies:
git clone --recurse-submodules https://github.com/bitklavier/bitKlavier2.gitIf you've already cloned without submodules:
git submodule update --init --recursiveIn CLion, reload the CMake project after any change to the VERSION file (Tools → CMake → Reload CMake Project), then select the desired target from the target selector.
Otherwise, configure and build from the project root:
# Configure (Debug)
cmake -B cmake-build-debug -DCMAKE_BUILD_TYPE=Debug
# Build a specific target
cmake --build cmake-build-debug --target bitKlavier_Standalone
cmake --build cmake-build-debug --target bitKlavier_AU
cmake --build cmake-build-debug --target bitKlavier_VST3With COPY_PLUGIN_AFTER_BUILD enabled (the default), built plugins are automatically copied to:
- AU:
~/Library/Audio/Plug-Ins/Components/ - VST3:
~/Library/Audio/Plug-Ins/VST3/
Dependencies live in two places:
modules/ — JUCE-format modules, included via juce_add_module:
- melatonin_audio_sparklines — prints audio buffers to the console in debug builds via
melatonin::printSparkline(myAudioBlock)
third_party/ — libraries included via CMake add_subdirectory:
- chowdsp_utils — parameter management, DSP utilities, preset system, and GUI helpers; this is a core dependency throughout the codebase
- melatonin_inspector — interactive UI component inspector; note that some features are limited due to OpenGL rendering
- tracktion_engine — selected utility files from Tracktion Engine (not the full library)
- juce-toys — LLDB helpers (
juce_lldb_xcode.py) for more readable JUCE types in the debugger - sfzq — SoundFont player
- freeverb3 — freeverb3 reverb implementation
JUCE/ — JUCE 8 framework, included as a git submodule.