Saturday, October 24, 2026

Multi-Pulse Waveshaper

     There's a special waveform I found on the Yamaha PSS-80 that has been dubbed the "multipulse" by Christian Windler. It's like a square wave, but what would be the high portion is instead a short burst of pulses. This makes it "brighter", and gives it a unique sound. You can read more about the PSS-80 on Windler's blog here. I even get a mention.

pulse bursts - source

    For a long time I've kicked around ideas of how to replicate this waveform in an analog way. You could logically AND together a lower frequency square wave and a higher frequency square wave, but you'd have to maintain the frequency relationship between them. You could divide down the high frequency to get the low frequency, but you need a VCO that tracks well at high(er) frequencies. It'd be nice if you could multiply the low frequency to get the high frequency, but how do you do that without getting into PLLs that always struggle to follow the pitch?

The Way of the Road

    I had an idea during a long drive: what if I used a stack of comparators to slice a saw wave into pulses? It would be instant, and you could get multiple higher frequency pulses from a saw running in a normal frequency range. Here it is:

Multipulse schematic and trace
Falstad simulation link

    The stack of 100k resistors in the middle generate three equally-spaced threshold voltages that the saw gets compared to. You can see these in the bottom-left trace. These signals feed the comparators.

Window to the Soul

    The comparator outputs are open-collector, meaning they can be safely tied together to perform a logical AND. The top two comparators use this trick to form a classic window comparator.

TI datasheet explaining window comparators

    The window comparator tells us if we're between two thresholds, meaning we're within a "window".

Quad-laser Will Amaze Ya

    We have three thresholds, rather than just two. They define four "quadrants", and the saw can fall into any one of the four at a given time. 

The four saw quadrants and the corresponding outputs

  •     Quadrant 1 is anything above threshold A
  •     Quadrant 2 is anything below A, but above B (window comparator output)
  •     Quadrant 3 is anything below B, but above C
  •     Quadrant 4 is anything below C (bottom comparator output)

    The objective is to combine the outputs of our comparators to get an alternating sequence of high/low as we pass through the quadrants in order. This gives us pulses out when we put a saw in.

Combinatorics

    The window comparator tells us if we're within quadrant 2. We can test for quadrant 4 without a full window comparator since it has no lower threshold; we only need the one comparator seen at the bottom of the schematic. We'd like to OR these signals together to say: we're in Q2 OR Q4. The last comparator helps with this, but it can only AND by default.

    Here's the trick: using the inverting input of a comparator will yield a logical NOT. Adding the last comparator will NOT the window output, and swapping the bottom comparator's inputs will NOT its output. Now we can say "we're NOT in Q2 AND we're NOT in Q4" and that's just as good for our purposes. This is basically De Morgan's law.

    Finally, the output goes: high, low, high, low as the saw passes through quadrant 1, 2, 3, and 4.

Modulation

    We can put a control voltage into the resistor stack to scale the threshold voltages. Since the ratios are set via the resistors, the thresholds retain their relationship to each other.

    A low CV will bunch up the thresholds and make the pulses very narrow, while a high CV will yield a square wave. This is because the Q2 window becomes too high for the saw to reach, and it can only cross in/out of Q4.

Level Shifting

    This design started with the Gakken project, but became a eurorack module. This change required some level shifting. A 5V reference helps offset things on the inputs and output.

    The input op-amps are single rail, so the parts were selected to be tolerant to negative voltages under a certain current flow. This allows the comparators to also run single rail without worrying about their inputs going negative. The benefit of this is that the comparator output will swing down to ground, rather than an unpredictable -12V-ish rail. The positive swing is up to the +5V reference rather than a similarly sloppy +12V rail. With a little shifting and scaling, we arrive at a reliable +-5V output that doesn't require trimming.

Going Further

    Additional comparators could be used to continue the pattern to add more pulses.

No comments:

Post a Comment