To make at least my life easier, I’ve added some new UI features to the Pithesiser – namely text rendering and screenshot taking.
Now I can render the values of settings in a straightforward fashion; next I need a nice data-driven way to set up display of all the settings, as there are a fair few already and will be more soon.
All the UI rendering is via Open VG, including the anti-aliased text. It’s done on a separate thread which is sent “events” by the main thread to cause re-rendering of portions of the UI when changes occur.
To drive the oscilloscope display, each newly mixed buffer of sound triggers an event that causes the render thread to add line segments for the sample data onto the oscilloscope path. And when the path fills the display area, it triggers rendering of the path and a buffer swap to update the screen.
Other UI elements receive refresh events when their data changes; these events mark the elements as “dirty” which causes them to be redrawn on the next oscilloscope triggered buffer swap.
(c) 2013 Nicholas Tuckett