I built TrebleMaker to properly learn C++ and JUCE. While the DSP is a standard high-shelf filter, the real challenge of the project was the architecture and the UI system. I wanted to see if I could build a resolution-independent interface entirely from code, no image assets allowed.
I learned a ton building it.
|
Inspired by Dieter Rams, the interface is purely algorithmic. Every knob, texture, and bezel is drawn in real-time using |
I used |
|
The audio thread is completely lock-free. No memory allocations or blocking operations during processing. |
It's a topology-preserving transform (TPT) state-variable filter. I added a small amount of parameter drift to the cutoff to give it a slightly more "analog" behavior than a perfect digital filter. |
- Real-time FFT frequency analyzer
- Optimize drawing performance (caching complex paths)
- General code cleanup and refactoring
Prerequisites:
-
CMake (3.22 or higher)
brew install cmake
-
C++ Compiler (Xcode on macOS, Visual Studio on Windows)
Build:
# 1. Configure
cmake -B Builds/CMake -S .
# 2. Build (Debug)
cmake --build Builds/CMake --config Debug
# Or
# 2. Build (Release)
cmake --build Builds/CMake --config ReleaseArtifacts:
After building, find the plugins in Builds/CMake/TrebleMaker_artefacts/:
- VST3:
VST3/TrebleMaker.vst3 - CLAP:
CLAP/TrebleMaker.clap - AU:
AU/TrebleMaker.component - Standalone:
Standalone/TrebleMaker.app
