Venom version 2.3 released with 3 new modules

Here is a summary of the changes, with more details about the new modules below.

2.3.0 (2023-07-03)

New Modules

  • Poly Unison
  • Reformation
  • Shaped VCA

Behavior Change

  • Bernoulli Switch: The B input now remains normalled to the A input when bypassed, which in turn can affect the bypassed B output.

Bug Fixes

  • HQ
    • The selected channel for monitoring is now saved with the patch
  • Recurse Stereo
    • Fixed Right Signal output label
  • VCA Mix 4
    • Excluded patched channel outputs no longer contribute to the polyphony count in the Mix output
  • VCA Mix 4 Stereo
    • Excluded patched channel outputs no longer contribute to the polyphony count in the Mix output
    • Fixed Right Mix output label

Poly Unison

PolyUnison

This module is pretty straight forward. There were already a few modules available to convert a monophonic V/Oct signal into polyphonic unison with a detune spread. But that does not work well if your incoming V/Oct signal is already polyphonic. I ran into this as I was developing my Roland JX8P emulation patch, from which sprung the idea for this module. It functions nearly the same as my Poly Clone, replicating each incoming channel N times, and packaging it all up in one polyphonic output. But Poly Unison also provides a detune spread for each of the incoming V/Oct values.

It works great for thickening up each voice in a polyphonic oscillator, with a detune spread up to 1 semitone. But there are other range options that make it convenient to generate harmonic intervals as well.

It also can be used for CV other than V/Oct, such as to clone polyphonic velocity and after touch to be used in parallel with the detuned unison. You will need the channel counts to match between your velocity, after touch, and detuned unison. You don’t need the detune for velocity or after touch, so Poly Clone could work as well, except it does not have the CV control over the clone count.

You can see how Poly Unison greatly simplified the third version of my JX8P emulator.

Reformation

Reformation

This polyphonic CV controlled voltage mapper and waveshaper is heavily inspired by the Klavis Flexshaper Eurorack module. I opted to use sliders instead of knobs because I think it gives a much better visual representation of the mapping being applied. The input and output can be independently configured for unipolar or bipolar, and it works great with both CV and audio.

The real fun begins with two CV inputs and attenuverters for each of the mapping way points. I like to use one CV input for a LFO to introduce slowly changing harmonics, and the other for audio rate amplitude modulation of a portion of the input wave. With 5 mapping way points, you can have 5 overlapping regions of audio rate amplitude modulation, each with its own modulation frequency.

It also gives options for hard or soft saturation clipping, with independent CV control over both drive and output level. So you can dynamically saturate the output, and/or use Reformation as a VCA.

Finally it has optional oversampling to control aliasing when shaping high frequency content.

Shaped VCA

ShapedVCA

This stereo polyphonic VCA offers CV control over the response curve, going from exponential to linear to logarithmic. This was another module that sprang from my work on the JX8P emulation. I was surprised to only find the Befaco Hex Mix module with this capability, except the Hex Mix did not handle polyphony the way I needed.

Other features include

  • Level range options to support attenuation and/or amplification and/or inversion
  • bipolar VCA mode to support ring modulation
  • hard and soft saturation clipping options
  • oversampling options to control aliasing
  • A level input bias control that can be used to dial in some ratio of amplitude modulation and ring modulation when using the bipolar VCA mode.

The left input is normalized to 10V, so it is convenient to use Shaped VCA as a wave shaper. Simply patch your audio signal to the Level input, leaving the IN input unpatched, bias the Level input by 5 volts to make it unipolar, and shape the wave with the response curve and clipping options. You might want to use the bipolar VCA mode for this just in case your input exceeds 10V peak to peak. You can use the output offset option to restore the output to bipolar. You probably will need both clipping and oversampling if wave shaping with any amount of a logarithmic response curve.

If you try ring modulation using the logarithmic curve, you definitely will want both clipping and oversampling!

The left and right channels need not be used for stereo applications. You can pass an envelope or ring modulator signal into the Level input, and modify the signal with the response curve. You can patch your audio into the right IN, leaving the left IN unpatched. The Left OUT will have your modulated level input, and the right will have your amplified or attenuated or ring modulated output.

26 Likes

Hi Dave ! Thank you for your modules ! An interesting update, again. I will try to explore Reformation, it seems fun !

I thought about your collection, I was looking for a module, I was certain you’ll have something that would do it and could not find it, tell me if I’m wrong : I was looking for a polyphonic version of the Slope Detector, by Count Modula, basically.

So, something that analyses a signal and spits out gates when the signal is going up, down, or staying steady, and a trigger when it changes. Right up your alley, don’t you think ? I was sure I would find a way to do it with your comparator, but I could not.

It is really useful when you make a sequencer out of anything but a sequencer and want a trigger on note change, for instance, but it is monophonic only, unfortunately…

What do you think ?

Reformation looks great, thoughts on stereo version? It would be super fun with Surge oscillators. Also, digging Shaper VCA as a mini stereo VCA.

Yep - I have been down that road looking for a polyphonic slope detector, without success. But I have had good luck patching up my own crude slope detector using existing polyphonic comparators - WINCOMP is particularly convenient.

Simply patch your input directly to A, and then also to B but with 1 sample delay (just pass through another module before going to B). As long as your input signal is clean, you will have useful gates:

  • A=B - no change / steady
  • A<>B - any change
  • A>B - rising slope
  • A<B - falling slope

If your signal is not clean, then you have two potential simple remedies:

  • Add a small tolerance factor so that you only detect changes > the tolerance
  • Pass your input through the VCV VCF low pass with maximum cutoff to smooth out high frequency noise

I’ve been wanting to add a sample delay option to all of my Venom plugin input ports, which would allow WINCOMP to detect changes on its own. I’ve got the design mapped out in my head, but I’m not sure I will ever get around to implementing it.

1 Like

I briefly considered it when designing Reformation, but opted not to. Had I thought of the Surge stereo oscillators I might have built in stereo.

I may still consider creating a stereo version in the future, but it is fairly trivial to process stereo with Reformation as it is, as long as your polyphony count is 8 or less. You just need the Grande PolyMergeResplit (PMR) module. (This works for any polyphonic module that is missing stereo)

I must say, it was very easy to dial in some delicious fat stereo sounds with the Surge Classic VCO and Reformation!

I see how Surge oscillators create a stereo image with detuned unison. But I can’t figure out how to get a stereo image with VCOs that don’t have unison, such as the FM2 VCO for example. These VCOs have left and right outputs, but the stereo output seems pointless to me. I must be missing something.

4 Likes

Cool, thanks for the tip about Grande PMR, will give that a go.

One of our modules planned for surge 2.2 is a module to take one (or more) mono vcos and apply the surge unison drift and character to it

My rough idea for this is poly voct in then you have a set of pairs of voct out mono back. If you hook up one vco and make unison 5 then you max out at poly 3. The module will recalc and remap voct, collect the signal, pan it on the correctly re assigned poly channel and send it along.

With a unison max of 7 you need 7 identical vcos to do poly 16 so I imagine there will be loads of connectivity

This sounds quite a bit like your module so just wanted to share that it’s in the cards for us if you want to compare notes.

Here’s our GitHub issue if interested. https://github.com/surge-synthesizer/surge-rack/issues/804. Surge 2.2 won’t be here until the fall I bet. But I’m doing some idle chipping away now

3 Likes

That will indeed be very similar to my Poly Unison.

I think the major difference is yours is able to take the VCO poly output and further process it into a stereo signal. I think I see what you are planning - So for each detuned voice with more than 2 unison you merge all the detuned channels into one for both left and right?

It sounds like you are trying to support more than 16 intermediate poly channels via multiple poly VCOs, is that correct? So you must have multiple poly V/Oct sends and audio returns to/from the VCOs?

Your module sounds very interesting - I was just playing around with detuned Surge VCO stereo outputs, and it is a nice effect.

One last unrelated question - What is the purpose of the stereo outputs for the FM2, FM3, and Twist VCOs? I can’t find any way to induce a stereo image with those VCOs.

Fm2 and fm3 are basically mono yeah. It’s just consistency in the vco processing for now.

Twist I think can send an alternate signal down the left channel - or at least it can in surge proper.

Basically all the vco are the same module with a template specialization and we kept the io consistent. Maybe that was an error? But too late now!

And yes if you have unison 5 the surge method is pan left half left center half right right and I’ll do that by placing the signals into the stereo field. We’ve factored it into a standalone class anyway (along with drift) so might as well

1 Like