Blog Post

Audio Developer Dairy – Episode 6 – A Balancing Act

So everything is a compromise, time, effort, capabilities features, ease of use – it just goes on and on. Today I want to look at just one small compromise – audio output capability. By this I mean the noise you *can* make with an instrument. So down one end of this spectrum I can limit the kinds of sounds an instrument can make to be just a set of “acceptable” or “nice” sounds. The problem down this end is that this sort of restriction is that you tend to end up with a set of samey, already been heard before sort of things. Whilst at the other end its a jungle mostly populated with strange unlikeable noise, that users have to wade through to find any sort of (by then very well hidden) gem. So somewhere in the middle then.

Instead of coming out with some sort of wise-sage rule-of-thumb here it might be worth walking some way through the development process to see how I got to where I am at right now. I think this is a good idea because frankly I don’t have a wise-sage rule-of-thumb to offer up….so its this or nothing…

Quattro is, as I’ve already mentioned, a 4-voice virtual instrument (where voice means some sort of independent audio source) so lets look at one of those audio sources:

Each of the audio sources(voices from here on in) actually uses more than one type of audio generation. Each voice has a Sampler – which can be loaded with any multisampled round-robined, set of audio wave files to give you a close approximation of a real-world instrument, or a designed sound that I or some mad audio-design genius has created. On top of that there’s a “classic” subtractive synth. So to be entirely honest there’s 8 sound sources not 4, but who’s counting?

Lets start with the Sampler section:

Well to start with it was just that “a sampler” – which within and of itself is no small piece of coding, disk-streaming, playback, pitch shifting/tuning voice loading and mapping etc. etc. All the usual stuff we expect of a sampler engine. Not that I did any of that coding ..(hello Christoph), I just leveraged it.

It took no time at all before I decided to add in reverse and offset. Reverse does what it says and plays the sample in reverse, offset starts each sample a little way (user selected) into each wave file – and adds a surprising amount of timbral difference to the outcome. The sampler stayed like this for a while. However if you’ve seen any of the CR Kontakt instruments (or the Audio Reward ones) you will know I wrote a granular “engine” to apply to loaded samples like these here, so it was only a matter of time before it got ported to this environment and added here. You get a very different bang-for-your-buck with this engine, there’s a lot of different and usable sounds that can be massaged out of a pretty simple set of samples. The bad news? It’s not cheap on CPU, and I was adding 4 of these… it took a long time to trim down the original engine to be more CPU friendly and still retain 90% of the sound sculpting possibilities. Nice side effect was this reduced the number of UI widgets making it easier to use.

I’m sure there will be something else that occurs to me to add – but it hasn’t shown up in the last 3 months so maybe it never will (yes yes I can hear everyone saying wavetable… me – its noted.)

On to the subtractive synth:

So this is the standard HISE wave generating set up – two, not one, oscillators that you can cross mix. So where I said “4 sound sources”, it was really 8, well actually….. it’s 12.

There’s nothing in here right now that seems out of the ordinary – all the normal oscillator shapes, octave, detune, and pulse width for those square waves. Except…..

I’ve been playing around with noise generation, and using highly tuned filters to get to a given note, so instead of playing a note the oscillators just generate white-noise, and I use (essentially) a band-pass filter that moves to the played notes frequency only allowing the played note part of the noise spectrum through. It’s more complicated than that (a bit) and it forces the synth into playing mono but it does give you some interesting sound. So if there’s anything going in here next that is likely to be it.

So when I look back I haven’t really done that much to enhance the 1 Sampler + 1 Subtractive Synth = 1 Voice layout. Though even that’s pretty deep when you have 4 “Voices”. But even here I’m balancing CPU vs Capability and Capability vs Audio Originality and all of that vs Usability. It’s an ongoing struggle, and I’m tired and need to lay down.

Related Posts