How to retrigger effects as you do envelopes?

Is there a way to automate the effects when a note is playing? I can’t see any way - neither NOTE nor LIFT works, LFOs and envelopes use time instead of note length.

So for instance we can’t retrigger reverb on every key press.

Envelopes are curves that trigger when a note is played (or you can put LFOs into Envelope mode)… you can’t read “note length” because Vital is not a time machine and it has no idea how long a note is going to be pressed for until the note is over. But you can certainly do whatever automation you want during the note, and after it’s pressed.

A more interesting question is, lacking access to any kind of master gate for the time-based effects, how do you “clear” their internal feedback loops? If you want to “retrigger reverb” what you actually need to do is configure the reverb so that if no note is being pressed, the reverb is silent… but my initial experiments with that led to an issue that when you retriggered the next note, the reverb is still “holding the tail” of the previous note because it’s still feeding back into itself in its internal delay lines.

I was able to get this working by messing with the “time” parameter on the reverb and using an envelope for that in addition to the mix, so that when the note is released, the reverb quickly shrinks its size to a few milliseconds and “empties” the delay.

I don’t know if this is actually what you’re describing but I had fun making it

Dead Tail Strings.vital (311.4 KB)

Thanks, that is interesting. (What you have could make an awesome 80s big gated snare effect - where you put massive reverb on a snare that triggers with the hit, and immediately stops with the note off.)

I could also silence the delay by frequency like this.

“configure the reverb so that if no note is being pressed, the reverb is silent”

How? There is no ‘midi note off’ trigger in Vital, is there? Only a ‘midi note on’ trigger. I tried the ‘LIFT’ parameter, but I think that’s for MPE, not MIDI.

Ohhh, maybe I can enter MPE data somehow in Reaper.

But that’s not how you did it I assume, I can’t figure out what parameter you used

Oh, you wrote a manual envelope for each separate note. Meh, that’s tedious.

Let’s see if I can get LIFT to work somehow

The “MIDI note off trigger” in vital is the release stage of the envelopes. There are no gate signals in Vital, at all, unfortunately. There is no way to map a “trigger” to anything. The only “events” Vital knows about are a note starting and a note ending, which it uses to drive envelopes.

The NOTE parameter is actually a value that corresponds to the note being played, not a gate (though it drops to 0 when no note is played so it sort of seems like a gate at first glance). the LIFT parameter is for release-velocity, which some controllers send (how quickly you let the key UP, where velocity is how quickly you push it DOWN).

The way I did it was I took an envelope and mapped it to the things I wanted to control (reverb mix, reverb size, whatever).So the envelope goes to 1 when I press an note and drops to 0 when I release it; map that to the reverb mix level, and the value of the reverb mix goes to 1 when I press a note and drops to 0 when I release it. This isn’t really any different from what a “note off message” would do; when you release a note, the value of the envelope changes. You can do a simple reverb-gate by just turning reverb mix to 0, mapping a spare envelope to reverb mix with the intensity set to whatever reverb amount you want, and calling it a day.

The only challenge, as I said, was figuring out how to get the reverb to “empty” so that when the next note is pressed, and it brings the reverb mix back, it isn’t still playing the tail from the last note. But for a big reverb-gated snare that wouldn’t really matter.

Ohhh, thank you. That’s perfect.
So if every envelope is linked to midi note on and off, then I can make env1 a pluck to control the oscillator.
And make env2 a pad to bring up the delay feedback to endless, then back down to zero at note off, and back up again at the next chord. I can also make the delay tempo change over the note duration, so much fun.
Thanks.

Only weird things I’ve found are:

  • instead of my feedback dropping to zero at the end of a note, it becomes 100% first, then 0% then rises to the level I specified, making the delay infinite at the end of a note if another one doesn’t start
  • why do I have two delays in my matrix page…, and only one delay module in my effects page…

So this is one of those weird “quirks of Vital” you have to learn to work around, namely that once Envelope 1 reaches the end of its release phase, the system kills the voice, not just the audio.

Like if you think about how a real hardware synthesizer works, the oscillator is always ON, and the envelope just controls whether or not you hear it, but in Vital (as in many software synths) to save CPU, the voice is not computed unless there’s an active note.

So what happens is, you have your short pluck, right? And once it reaches the end of its release tail, all of the other envelopes stop processing. Because there is no voice, since Envelope 1 is the global voice envelope, and it has completed. Even if the other envelopes have their own, much longer, release tails, they don’t process because there are no active voices. It’s not my favorite thing in the world but hey, it’s how Vital works and you learn to live with it.

So what you should do is, instead use an envelope other than 1 for your “pluck” by mapping it directly to the oscillator’s volume knob. So, say, env2 controls the oscillator level to pluck it, and envelope 3 controls the delay mix/feedback/etc. Then you can use envelope 1 with a release tail that’s LONGER than the tail on 2 or 3. What this means is that the voice will stay open for longer than your longest envelope, and even though the voice’s “volume” will be high, since the OSCILLATOR’S volume has been reduced to zero, that won’t matter. Incidentally, if you ever intend to do Karplus-Strong-type synthesis (where you send an impulse into a self-resonating filter like a comb filter) you need to do something similar, because the envelope 1 voice limit applies AFTER the filters. It’s after all 3 oscillators, with their unison, plus the noise source, through both filters, and then it hits the Envelope 1 master voice ADSR, then goes to FX. And whenever Envelope 1 hits the end of release, the voice is dropped, which means all other envelopes and LFO-envelopes stop running and reset.

EDIT: I should also note here that envelopes are polyphonic but the effect chain is not, so they can only take one envelope trigger at a time. How this is selected is based on the “voice stealing” in the advanced tab (basically you can think of envelopes that are tied to monophonic modulators as being the synth functioning with a voice limit of 1, even if it isn’t) and the legato parameter. This matters because once you start using Envelope 1 to “hold the voice open” you can run into situations where you think you’re triggering a new note, but the first envelope is still technically open, and if you don’t have your voice stealing set up correctly, it leads to unintended results. E.g. you may get legato/glide when you release one note and then press another, which you don’t expect, but it happens because technically Vital still has the first note’s voice “open” even though the note has been released.

I know, it’s a weird way of doing things. But, like I said, you learn to live with it and work around it.