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
Rectangle
improvements 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::Color
class now. Also there are fun things you can do with colors with this helper class - Management of the context stack in
InputContextHandler
has improved: you can now remove internal contexts from the stack. - You can now use the Microphone
AudioSample
now has the ability to load and save basic*.wav
files. Like, real, real basic. Don't do anything with an extended format header or you're in for a world of pain.AudioSample
s 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
Overload
forstd::visit
? Gets heavy usage inRingMenu
. - General "Menu" functionality which can be used with like-minded Components like the
RingMenu
andGridView
- functions for converting dB to gain coefficients and vice versa
- integral/fractional separation function
General Updates:
- Removing the
graphics
pointer from the draw functions since it's been rendered obsolete bypdcpp::Graphics
GridView
now 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
Image
move constructor - compiler error for
SoundSource
s which didn't fully implementfinished
- order of operations in
popContext
of when using aContextManager
to allow you to safely modify the context stack from withincontextExited
if you're uber careful. - major bug in
SyntheSizerVoiceContainer
wherenodeOn
methods would crash applications at runtime due to setting thefinished
callback on a temporarythis
pointer. - cpppong works again
SynthesizerVoice
objects now stop themselves before destruction just in case to prevent being called asynchronously in the audio callback.- Relatedly, fixing a shutdown crash in
SynthesizerVoice
if a custom generator is set.