v0.5.0 Release
The forum was keen to remind me that it's been 9 months and asked me "Do you want to revive this thread?" Fair cop; yes I do.
I have been focusing primarily on the Physynth, so it has been a while, but the little bits of tinkering over the last 9 months have yielded quite a few new features and fixes, so without further ado:
New Features:
- Vertical justification for wrapped font drawing
- Various
Rectangleimprovements for placing/measuring shapes - Colors are now a C++ object. You may be able to get away with using an LCDColor in many places, but it's strongly recommended to use the
pdcpp::Colorclass now. Also there are fun things you can do with colors with this helper class - Management of the context stack in
InputContextHandlerhas improved: you can now remove internal contexts from the stack. - You can now use the Microphone
AudioSamplenow has the ability to load and save basic*.wavfiles. Like, real, real basic. Don't do anything with an extended format header or you're in for a world of pain.AudioSamples can now own data
New Components:
RingMenu-- Ported in from the Physynth, I just thought this was such a useful component that I would totally see getting use elsewhere.LevelMeter-- With live audio comes wanting to measure it.WaveformView-- With recording audio comes wanting to look at it.TextComponent-- I got sick of re-writing common code for managing colors/alignment on text that was just a label for something.
New Utils:
- Visitor pattern! We use C++ 20, so why not add some common support for it like
Overloadforstd::visit? Gets heavy usage inRingMenu. - General "Menu" functionality which can be used with like-minded Components like the
RingMenuandGridView - functions for converting dB to gain coefficients and vice versa
- integral/fractional separation function
General Updates:
- Removing the
graphicspointer from the draw functions since it's been rendered obsolete bypdcpp::Graphics GridViewnow takes ownership of components. Had to do it to the people because leaks and/or crashes abounded when trying to update dynamic content.
Bug fixes:
- memory leak in the
Imagemove constructor - compiler error for
SoundSources which didn't fully implementfinished - order of operations in
popContextof when using aContextManagerto allow you to safely modify the context stack from withincontextExitedif you're uber careful. - major bug in
SyntheSizerVoiceContainerwherenodeOnmethods would crash applications at runtime due to setting thefinishedcallback on a temporarythispointer. - cpppong works again
SynthesizerVoiceobjects now stop themselves before destruction just in case to prevent being called asynchronously in the audio callback.- Relatedly, fixing a shutdown crash in
SynthesizerVoiceif a custom generator is set.