Grab-bag of Progress

The Pithesiser grows in capability…

Over the last couple of weekends I’ve been adding some more features:

  • Completed ADSR envelope support with controls and rendering: linked to note volume. Attack and decay levels and times are controllable, along with sustain and release. A simple graph of the envelope shape is rendered on screen, updated when any envelope controls are changed.
  • Single low-frequency oscillator that can modulate volume or pitch: this can be tuned from 0.1Hz to 20Hz, supports a wide range of waveforms (saw up/down, triangle, square, sine) and also sports an adjustable intensity (which maps to +/- a whole octave for pitch).
  • Simple image rendering: for a funky logo – still to be drawn properly!

I’m thinking of next extending the LFO stuff further – e.g. add another oscillator so pitch and volume can modulate independently, add envelopes for intensity & frequency.

After that, it’ll probably be back to core synthesis functionality – try and make the oscillators sound better (they’re very basic so not surprisingly exhibit subtle strange harmonics), maybe go for two oscillators per voice (probably leading to detailed performance investigation and optimisation), try adding filtering into the signal chain…

I’m starting to find the number of controls required is getting unwieldy, so it might be pragmatic to put some work into making that more configurable. The Korg nanoKontrol has a nice “scene” button that effectively offsets the controller numbers in a paging fashion, so that might be a way of organising lots of controls – a page for each oscillator, plus an LFO page and a “master” page for global controls?

Text rendering is going to become a necessity, to make the increasingly growing set of states visible. After a while, telling apart a wavetable band limited sawtooth with linear interpolation from its procedural cousin gets a bit tricky…

(c) 2013 Nicholas Tuckett