Zenjolin — a ZOIAnese take on Rob Hordijk’s design

Zenjolin — a ZOIAnese take on Rob Hordijk’s design

The Benjolin is a unique and original electronic instrument in the purest sense. In some ways it is a very simple device — it consists of just two oscillators and a state-variable filter. And the rungler. The rungler is a shift register, which uses the output of the two oscillators to generate its buffer. Oscillator one provides 0s and 1s, based on its state, while oscillator 2 clocks the analog-to-digital converter which takes those 0s and 1s and produces a 3-bit value, as well as clocking the rungler. Where the rungler becomes really interesting is that it can then be fed back to oscillator 1 and 2 (and used to modulate the filter), at varying intensities and polarities, creating a cybernetic system in which the output influences future outputs. The product is something that feels organic and evolving, while also producing sounds that feel otherworldly. (For the video, I used a slip of paper as reference: “This machine speaks alien science.” A little silly, maybe, but not wholly inaccurate as to my feelings when patching it.)

Rob Hordijk, the designer of the Benjolin, passed away last year, leaving a vast legacy of synth education and DIY promotion. The Benjolin was created as a synth that could be built in a workshop session, in order to make synth building accessible to people and inspire a sense of accomplishment, as they completed the build of their own instrument. I strongly recommend checking out his SynthesisWorkshops book, an extremely comprehensive exploration of synthesis history, techniques, and theory: https://rhordijk.home.xs4all.nl/G2Pages/

Although creating in ZOIA doesn’t deal with resistors and capacitators (directly), I think its approach as a patchable, modular desktop synth falls very much in the spirit of DIY that Hordijk advocated, one which allowed you to craft your own tools and explore the unexplored.

The Zenjolin, then, borrows many ideas from the Benjolin, and it adds a few and changes a couple more.

Some things were also left out, either because I could not figure out how to accomplish them in the narrow scope of CV/audio conversion available in ZOIA (the PWM circuit), or because of CPU reasons/compromises (external clocking, external filter input), given the other features I wanted to add. An important aspect of the Benjolin as a part of a larger modular ecosystem is its outputs, and unfortunately, I reduced the number of filter outputs to just one, selectable via radio buttons.

ZOIA, as many of you may know, isn’t the most robust device for translating between audio and CV. The original Benjolin uses comparators to create its bits of information and clock. You can comparate ZOIA’s oscillators (by first translating them into CV via an envelope follower), but the window for comparation changes with the frequency of the oscillators themselves; I never figured out how to get it to smoothly track this change. Instead, I made a compromise: the envelope followers instead feed flip flops, which preserves the general concept — the output of these flip flops is used in the same manner as those comparators in the original design — but cuts the speed of operation in half. (Don’t worry, it still does plenty of funky, audio rate weirdness.)

Those new features are: a duty cycle control for oscillator 1, which opens up a number of timbral opportunities. A simple mixer for oscillator 1 and 2 was added, with the levels of the oscillators being a destination for the envelope, which is also a new addition. I call it a “rungulated envelope,” an attack-decay envelope triggered by oscillator 2’s clock. Its stages can be modulated by the rungler, and it is routed to many places internally. I also added a delay, which can be controlled by rungler or envelope to produce all sorts of spacey vibes.

This is a happy accident machine, and a palette for exploration. I hope you enjoy it.

The patch outputs dual mono signals, by default. You may notice in the video that at a certain point, I delete one of the outputs. The CPU is…. -right there- when running on a Zebu (there should be more headroom on ZOIA, and if even more headroom is needed, you can delete the CV modules). I’ve never had outright clipping, but it was closer than I wanted, so I deleted the outputs I wasn’t using. That’s a good tip, if you’re running up against CPU concerns and aren’t using certain inputs or outputs for a Euroburo patch; the default I/O can all be deleted. The CPU savings aren’t huge, but they can be just enough.


Before we dive in, within the patch two modulation sources — the rungler and the rungulated envelope — are available to a variety of destinations. Rather than mention that over and over again, I’ve created a key.

If a parameter has an (R) next to it, that means the rungler is internally routed to it. Beneath the parameter, there will be an orange parameter for “Rungler amount,” which is a bipolar depth control (the modulation can be applied positively or negatively).

If a parameter has an (E) next to it, that means the rungulated envelope is internally routed to it. Beneath the parameter,* there will be a purple parameter for “Envelope amount,” which is a bipolar depth control (the modulation can be applied positively or negatively).

*The envelope amount control for the oscillator 1 duty cycle is located to the right of the parameter, rather than below it.

Additionally, there are three CV inputs on the bottom row with attenuverters. Their destinations are oscillator 1, oscillator 2, and filter frequency, with designations (CV). The inputs are 0-10V; when the attenuverters are set to 1.000, the oscillators and filters should track v/oct.

OSCILLATOR SECTION (blue and sky):

Oscillator 1 and oscillator 2 share a number of parameters, but within the Benjolin (and Zenjolin) paradigm, they serve very different purposes. Because oscillator 1 provides high or low bits to the “ADC,” its frequency, relative to oscillator 2, which serves as the clock for capturing those bits, will have an affect on the output of the rungler. Likewise, oscillator 2’s frequency, which serves as the clock for the patch, will have a profound effect on how the patch operates.

Generally (but not universally), oscillator 1 will be used for generating sound, while oscillator 2 will be dedicated to clock duties. That said, oscillator 2 will function at audio rates, both as a sound source and clock source (at a certain point, aliasing becomes a problem for its clocking duties and things start going wild and then get really kind of normal? Check it out!)

Oscillator 1 frequency (R) (CV) — try operating this at sub-audio frequencies (negative values) to ping the filters

Oscillator 1 FM amount — this is taken from the output of oscillator 2 and can add both movement and inharmonic content to oscillator 1’s output

Oscillator 1 duty cycle (E) — adds a pseudo-waveshaping distortion to the oscillator; sweeping it with the rungulated envelope can produce interesting timbral changes; .5000 represents an even duty (the most “normal” triangle waveshape) while values above or below this will be more distorted

Oscillator 2 frequency (R) (CV) — as it is the clock for the patch, it will often operate at sub-audio freqencies

Oscillator 2 FM amount — this is taken from the output of oscillator 1; generally, the clock goes a little nuts when oscillator 2 is cross-modulated

Oscillator 1 level (E) — setting the level at minimum and the envelope at maximum allows you to produce more “traditional” synth voices, but the envelope can also be used to, for intance, modulate the intensity of the output and there are interesting combinations of drone and rhythm when the level and the envelope are combined

Oscillator 2 level (E) — same as above — even though oscillator 2 may operate at sub-audio rates, it can still affect the output of the patch


The rungler is a shift register derived from the output of oscillator 1, clocked by the output of oscillator 2, then converted via a 3-bit “ADC” into one of eight values. Since its output is derived from the oscillators themselves, routing it back to the oscillators introduces feedback, where the two elements — the oscillators and the rungler — influence one another mutually. This is neat.

Stability — this controls how stable the shift register is. At 1.000, whatever values are in the buffer will repeat indefinitely. As stability decreases, values in the buffer will be replaced with new values, allowing the sequence to evolve.

Rungler length — from 3 to 16 steps, this determines the size of the shift register’s buffer

Lock (pushbutton) — this will lock the current buffer in place (essentially sets the stability control at 1.000 while active)


The envelope is triggered by the clock (oscillator 2). It uses exponential input scaling to give greater control over the (often) short envelope. This makes the modulation of the envelope by the rungler quite dramatic in some cases. The output of the envelope is multiplied, to give an exponential curve.

Attack (R) — swells

Decay (R) — plucks (I dunno; I don’t have any useful tidbits to add about envelopes at this point. The original Benjolin doesn’t have this, so if you want to be purist, you’ll ignore this section, but it’s a cool add that brings all sorts of possibilities to the table)


The output of the filter is state variable — lowpass, highpass, bandpass. The original Benjolin has simultaneous filter outputs, but by picking just one filter output at a time, I was able to save a ton of CPU. The filters are multi-filters; each state uses two filters, run in series, to produce the sort of response I wanted. (Except the bandpass filter, which is an SV filter followed by a multi-filter, because that worked best.) Multi-filters consume a lot of CPU when modulated, so when the output is switch, inside the patch, the modulation is also switched, so that only one of the filter pairs is modulated at any given time.

I should add that… controlling the output of this patch was/is a nightmare. In order to tame that, somewhat, I added a compressor in limiter mode (ratio: infinite). You may want to adjust the threshold or ratio. The page the limiter is located on is labeled. You can hear the limiter sometimes clamp down on highly resonant lowpass and highpass sounds (it’s less likely to be provoked by the bandpass output, and the bandpass is, in most cases, quieter than the other two). This introduces a distortion; after a while, I got used to it/came to appreciate it as another element in the patch, but like I mentioned, you can change the limiter settings if you find it off-putting.

Frequency (R) (E) (CV) — sets the filter frequency. Since this will often be modulated, it might be more readily thought of as a point of reference for modulation

Resonance — the resonance, or Q, of multi-filters is such that at below ~.3, the resonance will actually soften sounds, rather than enhance them. The filters can scream, if you want them to, and some interesting pinging options are possible at high resonance, especially fed by sub-audio frequency oscillators

There is a column of UI buttons — lowpass, highpass, bandpass — used to select the output. When selected, the button’s brightness will change according to the frequency of the filter


The delay is just a delay w/ mod module, set to BBD. The darkening repeats keep the already-busy sound of the Zenjolin from getting overwhelmed.

Delay time (R) (E) — modulating the delay time with the rungler produces pitch-shifting artifacts and process different sounds at different rates. The envelope can produces pitch sweeps and arpeggiated repeats

Delay feedback — works as expected

Delay mix — works as expected


All CV outputs are 0-10V.

They are outputs of the rungler, clock, and rungulated envelope.


If you use one of my patches in something uploaded to social media, please consider tagging me or sharing a link on the patch page! Also, please consider liking it on Patchstorage!

Youtube: @ChristopherHMJacques

IG: https://www.instagram.com/chmjacques/

Reddit: https://www.reddit.com/user/chmjacques

Patchstorage: https://patchstorage.com/author/christopher-h-m-jacques/

Bandcamp: https://christopherhmjacques.bandcamp.com/

One comments on “Zenjolin — a ZOIAnese take on Rob Hordijk’s design
  • del-uks on said:

    I can’t wait to try this one with my Bastl Softpop 2, my Meng Qi’s Wing Pinger & Wingie 2 “Blippoo” ! 👌🏽👏🏽👍🏽🙏🏽

  • Leave a Reply

    • Platform:
    • Category: Synthesizer
    • Revision: 0.1
    • License: Creative Commons Attribution Share Alike 4.0
    • Modified: 2 months ago
    • Views: 1029
      Likes: 7
      Downloads: 194