Thursday 5 July 2018

My first visit to a Bank of Oscillators...

I have always been fascinated by sound generators. Over the years, I have done a lot of dabbling into FM, AM, Ring Modulation, Granular, FFTs and many other techniques, and what I have found is that the interesting stuff is often in the detail. So my previous forays into Reaktor produced large numbers of generators exploring lots of ideas, and I sometimes reach back into that abandoned era to provide inspiration for MaxForLive devices. This brings me to my latest sound generator, whose name tells you just about everything about it: BankOSCmr0v01.

A Bank of Oscillators...

Any sound generation method that uses large numbers of oscillators has a basic problem that can be boiled down into a simple question: How do you control all of those oscillators?' Additive synthesis is a good example: lots of harmonics means lots of things to control, and creating a powerful and appropriate 'high-level' user interface can be a difficult challenge. But my current research interest is in inharmonics, and so I wanted to explore ways of working with non-harmonically related frequencies.

After poking around in some of the quieter parts of the Max object world, I found ioscbank~, and decided that this might be suitably inspiring. The Max documentation showed filling the paired frequency and amplitude controls with random values, but I like my sound generators to produce dynamic evolving sounds, not boring static timbres. So I added scanning that swept across the bank of oscillators, gradually changing the frequency and amplitude of each oscillator, and slugged the interpolation of these parameters so that they changed slowly - and I got an interesting 'big bank of oscillator' sound that had a lot of promise.

One of the techniques that I learned when creating synth patches was to explore the extremes of the available parameters, and so I experimented with the rate that updates happened, with the interpolation time, and with the range of frequencies and amplitudes. Messing about with the amplitudes did not seem very interesting, and so I abandoned that and moved to the other parameters. (Anyone who is shaking their head at this point needs to move to the follow-up article to this one, where I realise that I nearly missed something big and went back to controlling the amplitude.) After adding some filtering and some additional tweaks, I had an interesting result that could make a quite broad range of not-so-ordinary sounds: BankOSCmr0V01.

BankOSCmr0v01's user interface is dominated by the large display in the centre, and this is not interactive at all. It is purely to show you what is going on for each of the 32 sine-wave oscillators that this version uses. The display shows the 32 oscillators from left to right, and each vertical shows the frequency as an orange square and associated bar underneath, and shows the amplitude (the volume...) as a purple square and associated bar underneath. Low frequencies and amplitudes are at the bottom, and high frequencies and amplitudes are at the top.

To control the oscillators, the controls on the left affect:
- the Rate at which the update sweeps across the oscillators from left to right
- the High and Low extremes of the frequencies of the oscillators
- the Time for the frequencies and amplitudes to change to the new values from the scanning
- a 'New' button to generate a new set of random values for frequency and amplitude (If you send a MIDI note to this device when the Rate is set to the slowest time (...all the way clock-wise: 'Run' changes to 'Stop'), then this triggers the 'New' button.)

On the right, there is a simple state-variable filter that provides low-pass, high-pass, band-pass and notch transfer functions, and has Frequency and Q controls, an finally an Output control that has a deliberately large range to partially compensate for having no controls over oscillator amplitude (and I should add a second hint about the next version here as well).

And that was that. A simple bank oscillator that generates a range of sounds using a small number of controls. Nothing particularly special so far, but then there's more coming up next time... and plans beyond that as well.


Several people have asked me why I never post videos of my MaxForLive devices on YouTube, and I never had a really good reason why not, so I'm posting a simple video to my YouTube channel, which is really going to surprise my 34 subscribers! I will also do my usual SoundCloud example as well.

Getting BankOSCmr0v01

You can download BankOSCmr0v01 for free from

The YouTube video.

The SoundCloud demo.

Here are the instructions for what to do with the .amxd file that you download from

Modular Equivalents

In terms of modular equivalents, then reproducing this functionality in my modulars either involved 32 VCOs and four 8-step sequencers, or advanced oscillators banks or sequencers that I can't count as 'basic' modules, so I would rate this version as being about 40 ME (or 10ME if bank oscillators are allowed, or 6ME with fancy sequencers!).

Buy me a coffeeBuy me a coffee

No comments:

Post a Comment