Feature Request: LFO Envelope Mode

Hi All,

Here’s a suggestion for a new LFO-related feature. As many of you may know, certain synths (Virus, Nord Lead 3, et al) allow you to use the synth’s LFOs as simple attack/decay envelopes to provide additional modulation options. These synths include an “Env Mode” (or similar) setting that basically puts the LFO into one shot mode where the LFO stops after one cycle. For a standard sawtooth/ramp LFO, this would allow you to create a simple attack/decay mod envelope that is independent of the filter and amplitude envelopes. So you could create a fast “pitch warp” attack envelope, for instance, but still use Envelope 1 for a slow filter sweep, for example.

Including this Env Mode option really opens up the sound design possibilities without requiring any new hardware controls. From a UI perspective, you would only need to add an “Env” option to the LFO mode (the last parameter on Shruthi’s LFO page).

Oliver, is this something that could be added to the next version of Shruthi’s firmware? That is, is this architecturally feasible?

Incidentally, is this forum the best way to request a particular software feature? Or is there another “suggestion box” somewhere on the site that I have not discovered?

Added to my TODO list.

Cool. Thanks!

I haven’t had a hardware synth with this before but I really like the sounds of this!

Most excellent - thanks Olivier

Martin

It sounds like an interesting feature, at least when you can use the more novelty envelope shapes such as ~1 to ~16.

When I first read the title in this thread, I thought the Original Poster by “LFO envelope mode” meant free-running repeating envelopes, since that’s a feature I’ve seen on many synths (especially on modulars). So if the OP’s feature does make it into the firmware, I think it’s important to keep the terminology straight to avoid confusion. (‘one-shot LFO’ vs. ‘free-running ADSR’)

This is probably obvious, but when an LFO is set to Envelope (One Shot) mode, the LFO should also operate in Slave mode so that the phase of the LFO is reset every time a new note is played. This way the one shot envelope always starts at the same point in the LFO cycle.

This starting point should ideally be the most musically useful point in the cycle. For instance, a sawtooth-shaped LFO should start at the beginning of its cycle to create an upward ramp envelope and not somewhere in the middle of its cycle (at 45 degrees, for instance). Of course, in this case if you want to create a downward ramp envelope, you would just invert the modulation amount.

Hope this makes sense.

Note that we might be running into problems here because the fancy LFO waveshapes are just “recycled” audio wavetable data, and they are not meant to start from 0, do their thing, and go back to 0 at the point where it’ll cycle - so not very suitable for cyclic mode! I can’t mess with their phase either, because their phase has been carefully adjusted so that they blend well into each other!

>Note that we might be running into problems here because the fancy LFO waveshapes are just “recycled” audio wavetable data, and they are not meant to start from 0, do their thing, and go back to 0 at the point where it’ll cycle – so not very suitable for cyclic mode! I can’t mess with their phase either, because their phase has been carefully adjusted so that they blend well into each other!

I think for the more complex, “fancy” LFO waveshapes, it’s okay if they just do their thing. The two LFO shapes that matter most for this “envelope” mode are the sawtooth and triangle waves (which will give you a ramp up/down and simple attack-decay envelope, respectively,) As long as those both start from 0, everything should be good. :slight_smile:

Is it really that crucial to have LFO waveshapes that start from 0?

Yes, I see the argument that this is more intuitive, i.e. a “saw” would give you one single ramp, and not a clipped waveform, wrap-around or any other strange behavior. And I also realize that if they don’t stop at 0, you indirectly add a modulation offset which you then must compensate for. But why should we let offset waveshapes stand in the way for a feature that has such great creative potential?

Using one-shot LFOs at rates around 5-50Hz would be excellent for some twisted transient shaping (sort of a poor man’s D-50 synthesis), and I can accept ugly consequences such as an arbitrary modulation offset, if this means that I can have some truly unique synthesis tools as an available option. To me, synthesis isn’t as much about planning a sound from scratch, but rather taking what you have available and tweaking it until you find something amazing. As long as people are aware that enabling one-shot LFOs can lead to some very odd results, I’d say go for it.

>Is it really that crucial to have LFO waveshapes that start from 0?

Yes, in order to create some very useful simple attack and attack-decay envelopes out of the LFOs, it’s necessary that at least the Ramp and Triangle LFOs start at 0 degrees.

But this wouldn’t stop you from using the complex LFOs, for instance, in one shot mode at high LFO rates to create some cool attack transients. It would just mean that the transient that you create would be the same from note to note. But that’s probably okay. I would imagine the attack transient would be more percussive in nature anyway and may even benefit from this consistency from note to note.

Of course, Oliver could probably “hard code” (on per LFO shape basis) whether a given one shot LFO is set to slave mode or set to free run. The complex shapes might be better left to run freely while the ramp, triangle, and square wave shapes would start from their 0 point each time.

Oliver, any thoughts on this?

Implemented - wasn’t easy! Tons of ugly details:

  • It’s a new option listed in the “mode” setting, called “1shot”.
  • Phase is always reset on new notes.
  • Normally, the LFO output is bipolar - it goes from -128 to 127 then back to -128. I found that to make it really useful, I had to make it unipolar, going from 0 to 127 and back to 0 just like an envelope (except that half of the dynamic range is lost).
  • For the basic waveforms, phases are adjusted to make it work as expected. Tri goes from 0 to 127 back to 0 ; Sqr stays at 127 then drop suddenly to 0. S&H picks a random value and stays there forever. Ramp ramps down from 127 to 0. Step plays the 16 values programmed in the step sequencer and back to 0 - this is kind of cool to have this little sequence in one shot mode modulating oscillator pitch for chiptune-like arpeggios and trills!
  • For the 16 fancy waveforms, it’s a bit random, but it definitely does the “transient mess-up” effect. At the end of the cycle, it does not go back to 0, but is held at the last value. This prevents some ugly discontinuities but might add unwanted offsets - especially when modulating pitch.
  • The ramp attenuation (“attack” parameter) is still applied.
  • Garbage might happen when used in combination with the MIDI/tempo clock sync (how can something be clock sync’ed and still slaved to note triggers???)

Great. Can we have this on the Ambika sometime, too?

Nice try :slight_smile: Ambika’s LFOs 1-3 run on the main processor, so they are common for all voices in a part and cannot thus be aligned with individual notes. Only LFO 4 runs independently on each voicecard, but it is a very simple block of code that cannot do fancy waveforms - it doesn’t even have a sync option.

I appreciate the hard work you’ve put into this! I can live with all the ugly details, they just add more character.

is there any code available?

Yes, but this is part of the new firmware revision (which is not the main branch yet).

@pichenettes: When can we ‘mere mortals’ try out these new firmware features by simply downloading a ready-built sysex file?

(the most recent file posted is shruthi1_0.97.syx, dated 19-Apr-2013)

Martin

Not now because the rest of the firmware has not been thoroughly tested.