Get Bent — a mangling, circuit-bent audio buffer

Get Bent is a take on the buffer manipulation end of circuit bending: glitches, stutters, destroyed audio, weird artifacts, etc.. It arose out of a question Lumanish asked on the ZOIA Discord server about whether ZOIA could circuit bend — but of course!

The name is meant to be a bit cheeky, and I hope it is taken in that manner.

It works by switching between a clean signal path and a “bent” one that passes through a delay line buffer, aliaser, and low-pass filter, in that order. For each of these effects a range is set — clock multiplications for the delay line buffer, frequencies for the aliaser and filter — and then the outcome of the patch is randomly selected from these ranges (although the delay line can be set to a fixed clock multiplication, and the aliaser and filter can effectively be set to a specific frequency by setting the high and low frequency range controls to the same value). A random value is always selected each time the buffer is triggered, but it can also be set to probabiliistically respond at each high signal from the clock divider — this allows for shifting frequencies (think a sort of traditional sample and hold filter effect, although with a wider range of sonic mayhem from the aliaser) but also allows the delay line to be resized, which can produce all manner of glitchy outcomes.

This is a stereo effect, but transient detection is taken from the left side only.

Stompswitches and CV inputs:

Left stompswitch/Clock CV input — sets the tempo for the patch (can also use MIDI clock) (the tempo indicator can also be used to enter a tapped tempo)

Middle stompswitch/Manual glitch CV input (latching) — ignores the probability controls and automatically forces the patch to capture a buffer and produce other effects (aliasing, filtering) associated with glitching (there is also a manual glitch button on the control page)

The patch is arranged in columns, with each column dedicated to a specific function. The first column, in white, is the Glitch Probability controls.

At the top is a TEMPO indicator — along with the stompswitch or CV input or MIDI clock, this button can be used to enter a tempo via tapping. This shows the baseline tempo for the clock multiplication.

GLITCH CHANCE determines the chance that an incoming signal triggers a glitch. The control is probabilistic, so at 0, no glitches will occur, and at 1, they will occur continuously, although each transient detection will cause the buffer to be replaced and new random values to be generated. This is not based on the clock, per se, but on transient/amplitude detection (more on that in the subsequent section), so some glitches may be longer or shorter than others, depending on how often the transient threshold is exceeded.

GLITCH REFRESH mostly pertains to situations in which the glitch chance is set high: When the release is set to 1, the buffers will always be replaced at new transients (released, I suppose). When the release is set to 0, the same buffer will be held onto indefinitely. At points in between, you can get buffers that persist between transients but are ultimately replaced.

Below these controls is a UI button that will light up and randomly shift colors (strobe effect here; you may want to delete this if you are sensitive to really rapid color changes here).

At the bottom of the column is a momentary button called MANUAL GLITCH — this will cause the patch to immediately begin glitching and will override transient detection as long as it is pressed. (A stompswitch will be added for the final release.)

The next column, in yellow/lime/green concerns the transient detection.

There are two methods of transient detection available — via onset detector and via envelope follower. That the top of the column is a Threshold control — it is lime because it pertains to both methods of detection — it is used to set the threshold for the comparator used in the envelope follower mode and the sensitivity for the onset detector.

Below this is a button labeled DETECT MODE: when it is yellow, the onset detector is selected. When it is green, the envelope follower is selected. It will also go from dim to bright, in the appropriate color, when a transient is detected (and a glitch may potentially occur).

There are strengths and weaknesses to both options. The onset detector is easier to use, and in some cases better at detecting transients, but it also can be less sensitive than the envelope follower, even when its threshold is set very high. The envelope follower, because of its sensitivity, can be quite glitchy — in good and bad ways. I’ve included some additional controls for the envelope follower to give you a bit more control, hopefully, over how glitchy it is.

The HYSTERESIS THRESHOLD control sets a minimum threshold the comparator must drop below after exceeding the maximum threshold necessary to trigger a glitch. This can help keep the signal from fluttering above and below the threshold, re-triggering it repeatedly. At 0, no hysteresis is employed. At 1, the comparator’s input would have to drop all the way to 0 for a new transient to register — you probably don’t want this, unless you’re using a signal with a lot of silences and a crazy low noise floor. But you can obviously set it to other values to achieve effects between these.

Additionally, the there is an ENVELOPE FOLLOWER RELEASE control, which sets a buffer, up to ~1 second, where the signal will remain high following the the envelope follower dropping below the hysteresis threshold. If the envelope follower goes high again, this buffer will be reset — so, basically, it makes the comparator output last longer, which can be useful if you have a signal that is repeatedly rising above and dropping below the threshold.

An additional benefit of the envelope follower release control, however, is that it can allow you to dial in a glitchy “tail” to a drum hit, for instance, as the glitch will last as long as the threshold is surpassed plus the length of the release (unless you employ the “holdover” control explained below).

The HOLDER button affects how the glitches occur in envelope follower mode: Then the button is on, the patch will hold a glitch until the next transient is detected — this is the same as the onset detector method. But when the button is off, the glitch will only last as long as the comparator is high (plus the length of the release). This can make the glitches act a bit more like “accents” to sounds, depending on the decay of the sound and the density of the input.

The next section is the delay buffer section.

Here you can set a LOW MULTIPLIER and a HIGH MULTIPLIER for the patch to select between. At 0, the multiplier is 1x — the length of the incoming clock or tap tempo. At 1, the multiplier is 32x, which can produce granular/oscillator type sounds. So you can set a range to be selected between. You can also set a FIXED MULTIPLIER by toggling on the so-named button. This will set the multiplier to the setting of the High Multiplier value, and it won’t deviate from this.

The delay buffer also has a control you will also see in the aliaser and filter sections: RECALC CHANCE. This is the probabilistic chance that a new random value will be generated any time the clock divider module goes high — so this can be (much) more often than the time between transients. This is the key to frenetic glitchy sounds that constantly shift.

Finally, in the delay section, there is a RESIZE SLEW control. The patch employs non-interpolated delay lines — when the slew is set to 0, these resize to new multiplications of the clock immediately, moving from one time to another in a very surgical manner. When a slew is applied, these transitions are slowed, and the effects can be quite dramatic: pitch artifacts, (additional) aliasing and distortion, speeding up/slowing down effects, etc.. Some really cool sounds live here.

Both the aliaser and filter sections perform fairly similarly, so I’m going to group them together.

Each has a LOW FREQUENCY and a HIGH FREQUENCY control for setting the range of their randomization. You can disable either section by setting both of these to the maximum — 24kHz. The aliaser has an interesting stereo function — ALIASER SPREAD — which offsets the right side by a steady amount, up to one octave at the maximum. This is very effective in producing stereo dimension (I tried a similar control with the filter, but it wasn’t nearly as effective, so I scrapped it).

The filter section has a RESONANCE control (resonance is disabled when the glitch is inactive — the audio still passes through both of these sections in that circumstance, but the frequencies are set to their maximum and do not affect the signal). There is also a FILTER SLEW (really a CV filter in this case) that can be used to add portamento/slew between different frequencies. A little can go a long way at the speeds this patch normally operates at, but a little bit might always be advised, as the signal to return the filters to maximum frequency in “bypass” passes through this filter as well; changes that are too abrupt can produce clicks (I don’t think they’re the worst thing in the world, since this is a noise/glitch/weirdo patch, but a little slowing of the signal can be helpful in reducing/eliminating these).

2 comments on “Get Bent — a mangling, circuit-bent audio buffer
  • robin-servant on said:

    This is going to be fun with my ”state of the art” yamaha dd-10 drum synth!

    I’ll keep you informed of how it goes!

  • Leave a Reply