Happy Holidays, folks! Here's my gift to you all. Over the past few months I saw a few threads asking about Kontakt's flex envelope so I gave it shot at recreating it in ScriptNode. It lacks individual point modulation as we can't, as of this date, access them inside the network.
- Use this as a script envelope modulator. It is fully polyphonic.
- Load it in after loading the Table Envelope. Use the Table Envelope for Attacks and Releases. I tried recreating these here as well to have it all in one view, but always ran into problems with clicking. If there was a Table Envelope node like all the other envelope nodes that automatically triggers on note-on/off and kills the voice, it would be great.
- Attack Time should be set to whatever your attack time for the Table Envelope is. There's a ramp that acts as a timer, and once the attack finishes, the flex envelope starts doing its thing.
- It acts like a factor, multiplying the output from the Table Envelope. That way the gain perfectly fades into the flex and out to a release.
- Right click drag on lines to make them into curves. If you decay the Flex to 0, the Release won't play.
- Looping the Flex goes from the end -- you're setting the start point of the loop as the percentage of the table's x axis
- If you need longer timings, open the collapsed node, find the ramps, right click on PeriodTiming and set your desired Min/Max
- Default block size is 32 samples. If you need a different size for faster/slower processing (shorter Flex times and wild patterns will likely require bigger resolution and therefore smaller block size), right click on the fix_blockx node and set your desired block size. At this size the overhead is miniscule and 5-10ms smoothing clears out any zipper noises.
- Unless Funky's got an ace up his sleeve and is sitting on the API for this, the table itself isn't dynamically adjustable. You can use the logic that you see, create additional serial rampings, set your min/max for each point, create more tables and you could get to a point where you can adjust the factors from scripting, but it's gonna be seriously messy. Plus to my knowledge (that I absorbed from the Script Envelope documentation), there's no way to edit the curve amounts anyway. In that case it's easier to just do it in SNEX/Faust.
Copy the XML to your project directory into DspNetworks\Networks.
Or copy the base 64 string to your clipboard, create a new DspNetwork, click somewhere to add a new node and you'll have an option to import FlexEnvelope from your clipboard.