New modules by CV funk

Hi, I have been developing a plugin for VCV Rack, and mostly posting over on the Discord channel about it. Now that I’ve optimized the code a bit, I thought it would be a good time to share what I’ve done so far here. Hopefully, I can get some feedback before I post it to the VCV library.

Includes 6 modules: Steps, Signals, Ranges, Penta Sequencer, Impulse Controller and Envelope Array

Steps: A step function generator and comparator.

Penta Sequencer: A 5-step sequencer with 5 simultaneous outs and slew.

Signals: A 6 input mini-oscilloscope for monitoring patches.

Ranges: Ouputs voltages ranging between two inputs.

Impulse Controller: 24 related decay envelopes

Envelope Array: 6 related AD envelopes with adjustable shape and range.

Here is a link to the latest cross-platform compiles:

Here is a link to the Github:


Are you planning on submitting to library?

Yes, I plan to submit it to the library. I was posting here first, just in case some bug or cross-platform issue pops up. So please, test it out and let me know how it goes.

1 Like

Just opened your first issue.


I tried to fix it by updating the .svg files. Hopefully I was able to remove the problem by re-flattening the panel artworks.

Additional demo images (was too big to put in the main description.


Any chance you can update the Envelope Array to hold each envelope cycle length constant as the slope and/or curve is modulated? Or at least provide an option to hold it constant? There are some techniques I would like to test out that almost work with your current design, but not quite. It might also be nice if the extreme slant settings provided a steeper slope, closer to a perfect saw or ramp.

1 Like

No, unfortunately it’s just not possible in this implementation. I tried really really hard to balance the effects of curve and slope, but it’s super non-linear. I got them mostly-tamed, but that’s probably the best I can do. The slopes are generated by updating the next sample relative to the current sample and some rates.

Shucks. It works well for what it does, just not what I was looking for. Thanks

CV dude, I’m very excited about this release, I was testing all the modules on Windows 10 and everything looks good, but I didn’t have enought time to fully review them. Congrats! :star_struck:

Here SIGNALS module scoping my first testing module. (just x6 cosine waves)

1 Like

penta sequencer is great fun.


This collection looks so cool! I guess Just Friends was an inspiration for the Envelope Array :wink: Looking forward to try them out!

1 Like

So, what exactly were you trying to do BTW? I am curious, and maybe I can make some adjustments to the module to make it behave slightly better. Can you describe the technique?

If you want the envelopes to have steeper slopes, you can use the faster rate setting. The rate setting changes the scaling of the exp/ln functions (which therefore also lets you have steeper slopes in linear mode). One limitation is that the steep slope ramps have a max length, but now that you have brought up the issue I have an idea of a potentially better way to map the range controls to get around that, I’ll have to tinker a bit.

If you want the function cycle length to not change related to curve/slant, here is a hack. Use another VCO to trigger the inputs of this module, you will then always be in tune with that VCO but with different timbres and sub-octaves. If you put the output through a RSCL you can remove the DC offset.

did you try BZ-envelope ? (constant time on any kind of shape)

No, thanks. I will look into it.

In general, I have used a couple of your modules enough to know that often times your modules can do some amazing things that no other existing module can. But the lack of documentation is generally too much of a barrier for me.


Sure, I want to trigger a non-looping envelope and modulate the slant at audio rates. It functions as an interesting hybrid envelope - VCA - wave shaper. I have a couple videos showing the technique where I hacked up a VCV WT-LFO as a single shot envelope generator that could morph between a saw and ramp envelope shape as you scan the wave table. I was interested in creating a wave table envelope generator, and was excitedly shocked at the result when the wave table position was modulated at audio rates.

Here is a long video showing how a patched it up. The link starts at the end result near the end of the video. Note how it sounds like there is an evelope / VCA combination controlling the attack/decay of each note. But it is all the WT-LFO!

And here is a performance with flute. Note the name “Halloween Waltz” is totally out of character with the piece, and make no sense unless you know that it was performed during a virtual open mic on Halloween night in 2022.

I am thinking that modulating the slant of your module at audio rates could give similar results if the envelope length could remain constant.

1 Like


1 Like

Oh btw, I think the first couple of uploads I did of that wavetable were missing a waveform in the “ramp” end. The latest version of the (much faster) python generator and wav are on github.


1 Like

Okay, I have done some work trying to counteract the different ways the knobs affect cycle length. It’s much better compensated than before over all ranges, but it’s also far from a perfect job! Consider it ‘character’. I think it might work out in your timbral application if you retrigger the envelope cycles with the oscillator you want to modulate.

Most importantly, now it can really generate ramps that are sharp. I think it’s a significant improvement.

Here you can see how the slant response changes the width of the function, and it’s quite non-linear. But I found a pretty good fit to the curve once I took enough data, so it works much better than before.

Anyways, thanks for the suggestions. It helped make the module better IMO. :slight_smile:

1 Like

Making a quick-reference guide for the manual. Hopefully someone finds it useful.