Beginnings of a more friendly user interface

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

Warmed up!

I got a little hooked on my coding “warmup” from last week, and have now optimised all parts of the mixdown stage of the Pithesiser. The ARM chip in the Pi has some nice parallel operation instructions like MMX which GCC doesn’t seem to use (even with the right CPU settings) – by judiciously deploying those along with a little light loop unrolling, I’ve achieved roughly a 38% speedup over the optimised C versions.

Having got through this, I really should look at working on features… coming back to this project, I’ve found there’s some usability bumps I’d been glossing over – filter envelopes need hooking up to MIDI controllers, UI displays are needed for indicating settings, saving and loading of patches would be very useful…

(c) 2013 Nicholas Tuckett

Getting back in the saddle

It’s been too long…

I’ve been rather distracted for a few months with finding and starting a new day job, and the arrival of a camera module for my Raspberry Pi (see for what I’ve been doing with it) but now I’m getting back on the Pithesiser’s case!

So I’ve started with a little light ARM assembler optimisation work to warm up, and plan to get on to some new features or improvements in the coming weeks. Watch this space…

(c) 2013 Nicholas Tuckett.