Coopiano is a C++17 physically modelled piano synthesizer that generates sound from simulated hammer, string, soundboard and sympathetic-resonance components, with an optional stereo room reverb. It produces 44.1 kHz, 16-bit stereo WAV files offline (each render peak-normalized) and supports live MIDI input on macOS by linking CoreMIDI, AudioToolbox, CoreAudio and CoreFoundation. No sampled piano sounds or third‑party libraries are required. The codebase is an early public extract: the piano engine and a prototyped AU/VST exist in development but plugins are not included in this release. Offline rendering is portable to other platforms with a C++17 compiler and threads, but live audio/MIDI is macOS-only and the project was built and tested primarily on macOS.
Building requires a C++17 compiler and Make; simple commands render single notes, a demo, MIDI files or enter live mode (examples: ./coopiano A4 0.5 8, ./coopiano demo, ./coopiano performance.mid 1.0 performance.wav, ./coopiano live). Presets are configured via default.ini (copy and edit, then load with preset), with environment overrides such as GP_NO_REVERB=1 and GP_SAVE_SETTINGS=1 to write resolved presets beside WAV outputs. Key source files include coopiano.cpp (CLI/MIDI/WAV/host), piano.hpp (header-only synth), instrument.hpp (voice/pedal scheduling), streaming_soundboard.hpp (convolution), preset.hpp/reverb.hpp, resampling/host helpers, and live diagnostics/bench code. The project is MIT licensed.
Summary generated by AI from the linked article. hn.today is not affiliated with Hacker News or Y Combinator.