A Constant Time Slew Limiter with shape control and V/Oct mod control over the time.
Does such a thing exist? moDllz PolyGlider is so close, but falls short on the last requirement. No V/Oct time control. Paul’s Glissinator is close too but no shape nor V/oct. Ideas?
I have implemented a polyphonic solution with a slightly different design, taking advantage of the capabilities of my soon to be released Venom Envelope Factory. The beta (dev) version is available below. It is stable, I just need to complete documentation for some modules in the release.
It has a nice PatchMaster interface with a patch bay from Venom. The glide was implemented entirely with Venom modules simply because I could. It is fairly space and CPU efficient with one exception. The Poly S&H ASR uses a lot of CPU relative to other options out there. It think it can be replaced by the Infinite Noise S&H/T&H-2 saving both significant space and CPU, and it should preserve the polyphony capability.
I am thinking it might be worth creation of a dedicated Venom module, but definitely not for this upcoming release! I am soooo ready to get v2.16 out the door.
This is AI-generated, or? Bogaudio has no module called Curve as far as I can see. And people say those hyphens or whatever they’re called are common in AI text. Don’t mean to be accusative, just asking.
More generally. Here’s what I’m aiming for. I have been using docB’s RndC as my main random LFO for years. It’s great. But recently with @StochasticTelegraph releasing Distribute, I am realizing how amazingly useful the more specific control over distribution is. RndC offers three distributions (of which I only ever really use the minimum one). But Distribute gives you very fine control over how much the randomness prefers the center of the ranges, or the edges. Which is super musically useful.
Distribute outputs constant values though, not a random walk. I can make a nice smooth random LFO out of it with a constant time slew limiter. Constant rate won’t work, each new value could differ by anything from 0v to 20v and the smooth change should finish inside the clock period exactly.
Glissinator works great for linear interpolation, long as the clock rate is 1Hz or faster. But it would be nice to have the nice cubic curves (or similar). Polyglider can do that, and also goes slower. But it would also be nice if the clock rate and slew rate could be controlled in a cohesive way. You could probably solve that with Submarine AO-101 on the control voltage. But it’s annoying cause the documentation doesn’t tell you what the mod depths are so some trial/error needed. That’s how far I got before asking here.
Oh wow! I have come up with a much better implementation that only requires 4 Venom modules instead of 8! I think this is closer to Helen’s original description.
In order to create this version I had to modify Envelope Factory - the Amplitude and Offset are no longer clamped to +/- 10V. I think this is much better for Envelope Factory.
If I create a dedicated Timed Glide module then I will probably provide two options for Shape curves. Currently the patch only supports sigmoidal J curves. I think your random LFO would work better with a sigmoidal S curve option.
There’s a questionable post in the musical degrees thread too; I just replied to that.
em dashes are the long ones. en dashes are between a hyphen and an em dash in length. Unfortunately, I’ve seen some people have been using them less often because they’re now regularly associated with AI generated text.
Either way, use the Random RATE slider and/or CV to control the sample rate, with the TRIG output triggering Distribute. By letting Random control the trigger rate, you guarantee the curve reaches the sampled target every time, even if the Rate is modulated. You can replicate the Random trigger with Poly Clone before triggering Distribute, and then you get multiple smooth random voltages through polyphony.
Random would not work well however for the pitch glide use case. So I think there is still reason to create the dedicated Venom module.
Ooooh siiiick! That’s really clever! Way smaller than the other one you sent too. Thx a ton Dave.
This is gonna go directly into one of my saved selections, which is a smooth random pan that prefers to meander around close to the outer edges L/R. The way I did it before is to combine a slow sine LFO (through a waveshaper to stay near top/bottom for longer) with a faster random walk one. With the voltage ranges tailored to combine correctly, it has served me well. But with that algo the signal tends to stay on one side for longer, only crossing through the center occassionally.
Distribute (with a dist just like in your image!) lets me do a “more random” version of the effect. And also lots of other fun stuff like biasing towards one side etc etc. Only downside was the somewhat more manual setup. Which is now fixed by your clever solution here. Thanks again!
Very insightful, @DaveVenom. I’ve just linked to your post in my docs.
And it even works as I would hope if you put a clock signal into TRIG; Random appears to quickly figure out the time available for moving the value and does so, ignoring the Rate info.
The post below is worth a read. At the time I wrote it the VCV documentation for RANDOM was totally inadequate. The situation is much better now, but there are still some nuggets of information that are missing from the official VCV documentation.
The VCV Random module is polyphonic, in the sense that on receipt of a poly input, it will take samples and generate outputs from them polyphonically. The internal clock and other parameters, however, always stays singular. And thus the trig output remains monophonic. Since trig input is what determines Distribute’s polyphony, you need a polyclone or similar to get this setup working polyphonically.
This works, creating my beloved random pan patterns in a poly pad sound or the like.
It would be neater if the clock were also poly though. For example so a lower probability would give each channel its own independent chance to stay put for a cycle. Or so that one channel could have a busier rate than the others.
Thus, I make the following feature request @Vortico. It would be very nice if:
The clock in VCV random could go polyphonic
Its polyphony would be determined by the max poly width of the Rate and Prob CV inputs
The trig output followed suit to output the polyphonic clock signal
Yes, I noticed the same. I don’t know when the polyphony feature was added. If it has always been there, then I certainly missed it when I wrote my proposed documentation mentioned earlier.
I am toying with the idea of taking the VCV code and making a fully polyphonic version where all inputs support polyphony. (I think all, I haven’t worked through everything). I’m also thinking of adding independent shape control to each of the outputs, and maybe adding a distribution control that can push random (or sampled) values toward the center or toward the edges. I would also allow the RND control to apply to sampled values.
I’m not sure if I would implement the option for the LIN output to be normalled to the CV inputs that was introduced by the NANO version of RANDOM.
It will likely be a while before I attempt to do this - I need a break from coding. If Vortico takes on your request it will lessen the likelihood that I proceed.
Since version 2.0.28, there has been this menu option to separate TRIG channel count from OUT channel count. So I don’t think this is needed, unless I’m missing some nuance.
Menu Options
Default number of OUT channels
Sometimes you want multiple OUT channels (e.g., three different control voltages being generated with the same distribution) but you want them synced to one TRIG channel. Instead of you having to create a polyphonic TRIG input, this menu option allows you to set the number of OUT channels whenever there is only a single TRIG channel.
Note that OUT will not always have this many channels:
If TRIG has more than one channel, then OUT will have the same number of channels.
Nice. So @Andreya can generate the multiple outputs without using a PolyClone via the Distribute context menu.
But she would like to extend the technique to create polyphony where each channel is triggered at a different rate for example. This requires changes to the Random module - currently only the IN input is polyphonic. The other Random inputs are monophonic, as is the TRIG output.
I couldn’t resist the temptation. I created a fully polyphonic Venom Random based on the VCV code. Translating the VCV code to use SIMD for the new polyphony features was fairly straight forward.