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
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.
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.
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.
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!
Here SIGNALS module scoping my first testing module. (just x6 cosine waves)
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.
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.
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.
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.