The Pithesiser just got that little bit shinier – I improved the audio quality in three areas with a small purchase and just two changes to the code…
A New Toy
That’s a Behringer BCR2000 programmable MIDI controller, which is taking over from the Korg nanoKONTROL. Using it means I can have a lot more controls readily accessible, and I can take advantage of high precision MIDI controllers. The Korg is limited to MIDI controllers that only go from 0 to 127 – the BCR2000 controls can be configured to go from 0 to up to 16,383.
How does that improve audio quality? By allowing much finer control where needed. For example, take the master volume for the synth. With only 128 distinct volume settings, you can hear the stepped nature of the changes – often as clicks depending on the sound playing. By using a controller with a range of 0 to 4095 instead, that makes it fine enough that you can’t hear the steps and don’t get any clicks.
Having to use a new controller made me face the necessity of introducing a level of configurability into the Pithesiser – now all the controller parameters are set up in a config file read in when the synth is started up. Much easier to use!
I must admit to being a little concerned about the fact this is Behringer kit – past experience with some of their hardware has taught me that you definitely get what you pay for… and their stuff is relatively cheap. However I’m impressed by what this device delivers for its price – the bulk of the case is metal, the buttons and majority of the pots feel really solid. Only the top row of pots feel a bit wobbly; they’re also push buttons which might explain why. It also turns out Daft Punk have used them live (http://digitaldj.wordpress.com/2008/07/07/inside-the-pyramid-daft-punks-live-gear/) so they must be able to take some of the rough and tumble of live setups.
In an attempt to rid the Pithesiser of clicks from the automatic volume adjustment (a form of “auto-ducking”) code, I introduced smooth interpolation of volume changes across each chunk of processed audio. As I was doing this, it occurred to me that I could also utilise this to see if it would eliminate the strange harmonics arising from sounds with fast attack and/or release volume envelopes.
This all led to a simpler implementation than the original code, where the envelope and auto-ducking code work together to calculate what the volume should be at the end of a given audio chunk then pass that on to the actual synthesis code which smoothly interpolates the volume at the end of the last chunk towards the new value.
And guess what? It resolved both of the original audio quality issues!
(c) 2013 Nicholas Tuckett