Home | ER-101 | ER-102 | ER-301 | Wiki | Contact

Starthief's custom units: Feedback Keeper, Complex Osc, Wavefolder etc


Thought I would start a topic to share the custom units I’ve built. None of them are extremely fancy or clever or groundbreaking, but I like them and find them pretty useful. :slight_smile:

These were all built on firmware 0.4.11.

Feedback Keeper: Put this inside a feedback loop along with a reverb or delay, to automatically maintain “safe” infinite sustain. There’s a fixed HPF in case anything within the loop adds a DC offset, an envelope follower inversely controlling a biased VCA, and a further limiter and manually/externally controlled VCA. Because every feedback loop is unique I can make no guarantees – sometimes you’ll need more limiters or attenuation in other places throughout the loop – but I’ve used the technique many times in hardware and successfully used this custom unit in a few patches.

FB Keeper.unit (7.1 KB)

Complex Osc: this is a simple ER-301 take on the style of complex oscillator I prefer to work with, with options for both linear and exponential FM, AM, automatic tracking between the two oscillators with the offset exposed at the top level, and a feedback control for other timbral variation. (I considered a sine-triangle crossfade, but in practice I work mostly with sines anyway and I wanted to keep this a simple “complex” oscillator :laughing: You can easily dig in and substitute the aliasing triangle or something else in place of a sine oscillator, of course.) Exponential FM does not generally combine well with linear or dynamically changing the depth, and you have to match depth and frequency if you want it to be harmonically nice – but it can give somewhat different results and I think is worth playing with.

Complex Osc.unit (21.2 KB)

LPG: it’s got some quirks, and is possibly not the most natural of gates :slight_smile: but I kind of like its characteristics. The envelope is a Skewed Sine that feeds back into its own level for an interesting shape, but honestly I assign an external envelope or a gated ADSR as often as not. The business end is just a simple low-Q ladder LPF and VCA in series.

LPG.unit (12.5 KB)

Crossfade: simply enough, a 2-Band unit (not a Custom Unit preset) with a mix control that opens one VCA while closing another. I used it in the Wavefolder unit.

xfade.unit (4.7 KB)

Wavefolder: based on a sample scanner with a single-cycle sine, plus the plumbing to control the folding mix level as well as intensity and “symmetry” (sample scanner width). It will expect the file \samples\Adventure Kid\AKWF_bw_perfectwaves\AKWF_sin.wav to be on the card, but you can redirect it to any single-cycle sine you happen to have, or replace the sample for different folding character. I like it as it is though, and it sounds pretty nice after the LPG with no need to modulate it (as non-traditional as that may be). But one could also dig into the modulation osc from the complex oscillator and assign that to fold amount – or to go much crazier, the “symmetry” control.

Wavefolder.unit (13.9 KB)

Wavefolder 2: this is an improved version. Instead of a sine, it uses a hand-drawn approximation of the transfer function of the middle stage of a Serge wavefolder. It’s probably a little bit disturbed by the crossfade setting I used, but that helps stop really harsh clipping (in a “real” circuit that function would not wrap around as it does here) There are two stages, because that sounded good to my ears, but you can copy and paste the Sample Scanner if you want to try more. I also merged the mix and fold controls into a single one for convenience so that no settings on it are silent.

Wavefolder2.unit (15.1 KB)

The required /ER-301/samples/serge_stage.wav



You have been busy :star_struck:



Guess it’s time to update the firmware… :smiley:

1 Like


Amazing units! Love the complex osc :metal:

1 Like


Thanks for posting, I’m particularly interested in your feedback unit, will have a go today👍



I might update the wavefolder later on. I tried A/B testing it with an Antimatter Audio Crossfold to decide whether I could let that one go, and my version doesn’t compare very favorably :thinking: Adding a second stage of the sample scanner in series helps a bit but I’m going to spend some time tweaking it further, I think. Even just choosing a different sample for the scanner could be the key :slight_smile:

1 Like


…updated with the new wavefolder, which was easier than I expected thanks to other peoples’ research. :grinning:



Thanks for the units and Serge wave folder journal. That was very informative. I have a few questions about your implementation.

I was taking a peek at your Serge transfer function waveform which looks solidly like the one referenced in the journal. However, do you get discontinuities at the end of the single cycle waveform as it snaps back to zero? From the journal, it looks like it continues linearly past 1.5v.

Could we get better results if we expand the sample to an arbitrarily larger range than a single cycle?

I see, in the sample scanners, there is a 0.25 fade, I’m assuming to round off the quick jump to zero?



Yeah, there’s a discontinuity. The sample scanner seems to wrap around as the gain exceeds its expected maximum. The fade value I added was sort of a fudge factor against that – it’s not ideal but it sounded good to me in terms of sound, and I found that more important than mathematical correctness :grin:

After I posted Wavefolder2, I experimented with using the sample scanner for tanh() and encountered the same problem. I found that a limiter in front of the sample scanner can prevent it. Again it’s probably going to mess with the curve a little bit, but the overall effect is what I wanted.

There might be a Wavefolder3 (or more) in the future if I keep messing with this…

1 Like