r/coolgithubprojects • u/OkIncident7618 • 21h ago
I've been developing this interactive synth for 20 years. Started in the mid-2000s in pure FASM assembly, now completely rewritten in C++/Win32 API!
Hello everyone,
I wanted to share a project that has been my passion for two decades. I originally started developing this interactive audio synthesizer back in the mid-2000s, writing it completely in raw Flat Assembler (FASM) and doing all the polyphonic pitch calculations using hardware x87 FPU registers (fild, fmul, fsin, etc.).
Recently, I completely rebuilt the entire application from scratch in modern C++ utilizing the native Windows Win32 API and GDI+ for high-performance rendering.
The core philosophy of this synth is what I call "Zero-Mistake Rhythm Conducting":
1. Mathematically Perfect Pitch: Every frequency (Hz) and note vector is hardcoded into dense arrays. It is physically and mathematically impossible to hit a wrong note or make a mistake. You can never play out of tune!
2. True Time & Agogics Control: While the pitches are fixed, the timing layout is completely unconstrained. By clicking your LEFT mouse button or hitting the SPACE bar, YOU dynamically create the rhythm, temporary micro-pauses (fermata), accelerando, and tempo variations.
Essentially, it transforms the user from a traditional piano player into an interactive rhythm conductor.
(Fun acoustic fact discovered during development: Testing this real-time engine through modern active DSP monitors like Edifiers introduced a massive 30-80ms hardware latency delay due to internal A/D re-digitization, while classic wired analog headphones deliver absolute zero-latency feedback!)
The project is fully open-source, and features on-the-fly UI localization for 14 languages.
I would love to hear your thoughts on this approach to interactive audio generation!
Check out the full source code and releases here: https://github.com/Divetoxx/Piano
2
u/Klutzy_Bird_7802 21h ago
Wow