short-header

The first signs of life from the lab today, with a peek into the development of the Malleable Filter Bank (MFB), which I’m building for the Electro-Smith Daisy ecosystem (starting with the field, but with the idea of porting it to other hardware options later). It is worth pointing out that the UI is virtually non-existent at this point, what you see below is a barely working prototype branch of the code, but I was so pleased to get it up and running I made a video…

MFB has 16 bandpass filters, arranged in two interleaved banks, with each bank splitting either the left (even) or right (odd) inputs across the bandpass filters in that bank.

{
    "Band 0": {"Freq": "50hz", "bank": "even"},
    "Band 1": {"Freq": "75hz", "bank": "odd"},
    "Band 2": {"Freq": "110z", "bank": "even"},
    "Band 3": {"Freq": "150hz", "bank": "odd"},
    "Band 4": {"Freq": "220hz", "bank": "even"},
    "Band 5": {"Freq": "350hz", "bank": "odd"},
    "Band 6": {"Freq": "500hz", "bank": "even"},
    "Band 7": {"Freq": "750hz", "bank": "odd"},
    "Band 8": {"Freq": "1.1khz", "bank": "even"},
    "Band 9": {"Freq": "1.6khz", "bank": "odd"},
    "Band 10": {"Freq": "2.2khz", "bank": "even"},
    "Band 11": {"Freq": "3.6khz", "bank": "odd"},
    "Band 12": {"Freq": "5.2khz", "bank": "even"},
    "Band 13": {"Freq": "7.5khz", "bank": "odd"},
    "Band 14": {"Freq": "11khz", "bank": "even"},
    "Band 15": {"Freq": "15khz", "bank": "odd"},
}


Each filter has an ADSR envelope to control the amplitude of its output, and the envelopes are triggered by the specific MIDI note associated with the filter. In the video the envelopes are static, but modulating these parameters is the aim of the next stage of development. Right now all that can be controlled on the envelope is the sustain level, which is set by MIDI velocity. Even still, in this static mode, there is a fair amount of movement that can be added to the drone that I’m using as input to the MFB.

Next up will be focusing on the UI, allowing for some editing of / control over envelope parameters using buttons or knobs, and potentially CV and MIDI CC. I would also like to have multiple envelopes that can be assigned to individual filters, allowing for even deeper and more varied modulation possibilities. I am also looking at approaches to allow greater flexibility over the frequencies that each filter is set to, which might mean that there are mutliple preset tuning options, or potentially morphing the filter frequencies according to the midi notes received, so that you can play the filter output completely as if it was a synthesiser, using a keyboard… There are really a lot of ideas still to be dug into here!

I’m very happy to get something up and running, not least because this is my second stab at building a feature for the filterbank, but also because it is still really early days for me using C++. My first MFB attempt was based on the grander design I initially had, which focussed more heavily on spectral transfer (inspired by the Buchla 296e module, and all vocoders worldwide). I built something that had a UI for selecting the odd and even bands and using envelope followers to transfer amplitudes between even and odd filters.

As a simple example of how you might use it was that you could send a breakbeat into the even input, and a pad or drone into the odd input and from there the envelope followers would allow the amplitude envelope extracted from the breakbeat to ryhtmically control the amplitude of the pad. In practice, the code to transfer envelopes pair-wise between bands got too complex too quickly, and although my envelope followers looked like they were working, somehow I couldn’t get it to sound quite right. I think that with maybe a bit more DSP knowledge or C++ optimization experience then I might have made it over the line. But that remains a challenge for the future!

Envelope Follower

What I’ve ended up with is still inspired by the Buchla module (and for sure I am going to have a other crack at spectral transfer), but it has actually ended up closer to the Moog MoogerFooger MIDI MuRF, with its midi controlled resonant filter bands. I can already see uses for it in the studio or in a live situation, and that is really exciting!

TIL. I’m gonna make a point in these posts to also include links to useful things I’ve learned, whether that’s synth design related or just more generally. This time round there are two things I’ve learned: