Venom v2.6 released

Venom v2.6 just hit the library, and it has some exciting new modules and enhancements.

Enhancement - Custom Port/Parameter Names - documentation link

All Venom ports and parameters now have context menu options to rename the port or parameter. The custom name appears in the hover text and context menus, and is saved/restored with the patch. The custom names do not appear on the faceplate.

Widget Menu Extender - documentation link

This module brings custom port/parameter names and parameter user defaults to modules from other plugins, in much the same way that Venom modules do. It works by extending the context menus of foreign plugins to let you rename and set defaults. The names and defaults are saved and restored with the patch as long as the Widget Menu Extender remains in the patch.

This module can be of great use to anyone that works with VCV. It helps you annotate and keep track of large patches. The custom names can also be an aid during performance, or when sharing a patch with others.

The custom defaults are another good performance aid. It lets you set any control to your favorite sweet spot, and then during performance you can freely tweak the control, knowing you can instantly get back to your sweet spot with a double (or command) click.

Benjolin Oscillator - documentation link

My first oscillator - a wonderfully chaotic beast based on the Rob Hordijk masterpiece!

I love the sound of a Benjolin, and it is a blast to play with. This module makes it trivial to create a fully functioning Benjolin within VCV. It incorporates the two oscillators and the Rungler into a single module. You just need to add a resonant filter with good ping characteristics.

A fully functioning patch based on the Benjolin Oscillater is available on PatchStorage:

And here is a video showcasing an earlier version of the patch plus an additional Benjolin Oscillator. The Benjolin is great fun to tweak live, but this video is fully autogenerative with static configuration.

1.5 Venom Benjolins Air Windows.vcv (6.8 KB)

Logic - documentation link

An extremely flexible module capable of any combination of all the standard logic operations. There are a number of features that distinguish this module from all the other logic modules available to VCV:

  • All the operators support one, two, or many inputs. Rows can be combined and/or polyphonic inputs can be merged into a set of inputs for one gate.
  • Options for oversampling, output polarity, and DC offset removal make it ideal for processing audio inputs to generate novel sounds without unwanted aliasing or other artifacts.
  • High and low thresholds are user configurable, making it easy to process a wide variety of signals.
  • The output of one logic gate can be internally routed as input to a subsequent gate, making it possible to perform compound logic operations like ((A and B) or C), without introducing sample delays.

Poly Sample & Hold Analog Shift Register - documentation link

Ten rows of inputs and outputs that can be patched as any combination of independent sample and hold, and or shift registers. The module is very much inspired by the VCV S&H ASR, but with a number of major enhancements:

  • Full support for polyphonic inputs and outputs, with a dizzying array of configurations possible
  • Oversampling options for interesting audio effects without noticeable aliasing
  • Internal random input (noise) is available for any of the data inputs, not just the top row.

Here is a patch and video demonstrating an interesting audio technique that the Poly S&H ASR makes possible:

Venom S&H Stepped Sine.vcv (6.8 KB)

And here is a patch with a video that explains the above technique, and demonstrates the profound impact oversampling can have:

Oversampled Venom Poly S&H ASR Demo.vcv (4.4 KB)

NORSIQ Chord to Scale - documentation link

Converts up to 14 channels of polyphonic “chord” input into a set of CV outputs that define a scale for the Non-Octave-Repeating Scale Intervallic Quantizer.

When paired with the quantizer, this module functions very much like the wonderful SIM Coerce module. But there is a major difference - this module can create non-octave repeating scales, opening up an entirely new world of harmonic possibilities.

Below is a beautiful piece I created using a scale based on an extended chord. It also nicely showcases the Venom Rhythm Explorer. An explanation of the patch is available here.

NORSIQ Chord To Scale Demo.vcv (8.1 KB)

And here is a patch and video that showcases the dynamic nature of the module, creating scales from randomly selected triads.

Stacked Random Triads.vcv (9.5 KB)

Knob 5 (documentation link) and PUSH 5 (documentation link)

These are deceptively deep “simple” control modules. Each knob or button can be independently configured.

Knobs:

  • output range
  • polyphony

Buttons:

  • Mode: Trigger, Gate, or Toggle
  • On and Off output values
  • On and Off colors
  • polyphony

And of course the standard Venom custom name and default options are available, making them even more useful.

34 Likes

Congratulations on releasing the Benjolin Oscillator! I have watched as you went from prototype patches of existing modules all the way to this polished release. Very cool!

1 Like

Congratulations, and thank you for these great modules - and also the extensive examples!

2 Likes

Thanks Don!

I had not even considered creating my own plugin when I developed my first Benjolin patch using existing modules.

When I started Venom modules, I longed to create a Benjolin, but I was worried how I would create a worthy filter for it. I got kind of giddy when I realized I could create a useful Benjolin Oscillator without the filter component.

I had some fun last night driving your wonderful Sapphire Nucleus with the Benjolin Oscillator!

1 Like

Congrats on your new release Dave,
a really fine collection of modules you have now!!!

1 Like

Congrats Dave and thank you for your contribution to the community! As someone who was around before you started any module development, I gotta say you’ve come really far, creating both valuable improvements to known concepts and completely unique modules.

2 Likes

noticing benjolin “freezes” and stops producing sound. duplicating module and plugging up the same way produces sound again. I’m on intel mac x64

not yet aware if there’s a common reason it does this, slightly unpredictable, but decently frequent.

Thanks for the report. Do you have a patch you can share? I haven’t run across that yet.

I’m curious if you are modulating anything with external signals? By external I mean coming from some other module. And do you notice a difference with oversampling engaged or not?

I have seen my Poly S&H ASR occasionally generate NANs (floating point Not A Number), and then the patch needs to be shut down and restarted. I haven’t yet determined if the NANs are originating from my module, or introduced by external inputs.

I think some module filter out NaN on inputs. Have to confess I never did… If a module might go bonkers from seeing a NaN, then it’s probably a good idea, now that I think about it.

Yeah - I can see arguments for both options. But I certainly don’t want my module to generate NaN on its own! Hopefully I can track down whether I am at fault. Or maybe the problem has nothing to do with NaN. Time will tell.

1 Like

I modulated using its own outputs. I believe im usually using mid to high oversampling

Afk but ill keep experimenting

That’s strange, I though @Vortico introduced NaN protection in cables for Rack2…

“Add infinity and NaN protection to cables, so they won’t propagate non-finite values from badly behaving modules.”

1 Like

That just means that the NaN will not propagate from the module that outputs it.

Isn’t that what Dave means when he says

Poly S&H ASR occasionally generate NANs

? I mean what the module is doing internally isn’t that interesting, what runs through (propagates) the cables is, and there NaN should be blocked by Rack itself.

that is correct

Thanks Lars. The full quote from the development blog was:

So I was curious whether that actually made it to production. I ran a quick test (coded a module to intentionally output NaN and inf). Indeed, the module output (cable input) showed NaN or inf. But at the cable destination it shows as 0. So the blocking by the cable truly is occurring.

Unfortunately for me, that means my S&H module must have been producing the invalid output on its own :frowning: So I have a bug to track down, but now I can’t seem to reproduce the problem. Argh.

I guess I am past due for an inscrutable bug in my Venom plugin. As a fairly new plugin developer, I’m a bit surprised I haven’t run into something like this before.

So please - if anyone runs across invalid output from any of my modules, please let me know. Especially if you can reliably reproduce the problem, please post a message with a patch and instructions on how to force the problem. That would be a huge help!

2 Likes

I could be misremembering, but, last year when I worked for months to track down a crash caused by on open source plugin module, I saw cable voltages in the millions and these would overflow modules such as Voltmeter and others. So, it may not always be a NaN that causes problems. That problem last year was an uninitialized variable when a sequencer was run in reverse, I think.

It’s been a while, but didn’t you find that address sanitizer was useful for finding uninitialized variables and such?

I wonder also, it enabling floating point exceptions in a debug build might make it easier to find errors. It’s something I used to do with the microsoft compiler, but have never tried with gcc. for example: gcc option: about -fsignaling nans : how does it work ?

1 Like

You ran asan for me at that time, but we did not find the source of the crashes. We did learn some about the apparent value in explicit initialization of everything that is not initialized implicitly by the construction of the variable (array).

All I was able to do was to eventually find an example patch that crashed Rack upon every launch. The developer very quickly tracked down how the crash could occur when the sequencer was running backwards and gets back to an array index of 0 or -1 (?) or something like that.

That bug implicated so many modules in the crash log that were in fact innocent.

2 Likes