Random LFO Generator, by me

I spent an hour making this, and I hope its not too complicated.
All this is is a basic random LFO generator made using python; You can insert the amount of points (2-101) you want, author, and name.

-How to Use-
Paste the following code into any python compiler, Online one: https://www.programiz.com/python-programming/online-compiler/

following code: https://pastebin.com/nb95QPKp

  • Run it and copy the outputted text.
  • Open Vital, right click the LFO, and press ‘paste’

If this doesn’t work, please tell me and I will try and fix stuff :slight_smile:


here’s something weird that happened while testing


Thanks a lot for posting this.
Question if I’m using it correctly: the main thing to add randomness is to use the “num_points” value?
It’s taking the shape of the initially saved LFO and adds random points to it, right? Or are there any other values to adjust?

Example: first screenshot “num_points” set to 6, second “num_points” set to 26

Random-1 Random-2

1 Like

Looks like unlocking Synthmasters 2D Envelope :smiley:


This is so cool!

Here are my results:

To help people out so they can try this, you can copy the outputted text you generated, then right click on the LFO and click “Paste”, and it will magically work as well (:

1 Like

Oh thanks!


What it’s doing is altering the num_points value, but is also editing the point’s values as well. It repeats for the number you put into the ‘points’ value and creates an set x and random y value; (ex: 10 in the points value means you need 20 x&y point values and 10 power values).
I could mess with the powers value, but I don’t think it’s necessary

1 Like

Looks like fun :slight_smile:
Perhaps people could share their favourite creations here (there’s an export LFO option in the LFO’s right-click menu, which will create a file with the correct file extension).


Nice, i think what would be even better is a forum or category for people to share their vitallfo files(in categories). That way,over time, you can build a massive amount of lfo shapes, like many of us did in serum. Because just randomizing it, is giving you the “same” results after some time. I know, sounds stupid since its random and “new” everytime. But go ahead and go 30 points and hit random 50 times and compare it and you see what i mean. At some point you wont get useful results anymore. But the code is still useful!

1 Like

I don’t want to spoil your joy but this has already been here and I have modified the source code many more times, but the random LFO is usable from a maximum of 3%, the rest is waste. use a random generator instead. that’s just my opinion.

1 Like

What do you mean by this?

that of all random generated LFOs, only 3 percent are usable.
for me it was only a test in which I found out that it leads nowhere.
I do not discourage anyone from doing so.
as I wrote last time, if, for example, Matt decides to publish some details on how the LFO is specified (especially “powers” section maths), more can be done about it.

1 Like


1 Like

Problem with random generator is that you can’t loop it.
Feature request: Add ‘freeze’ function to all random generators like in Turing Machine.

Another request: Add this ‘randomize LFO’ function to the UI. One slider: How many points and button fro rolling the dice.

Sure it’s not always usable, but it is great source for inspiration.

1 Like

I could try modifying the code to loop better, and i think the LFO tab has a freeze option (in tempo).

1 Like

I meant that Vital Random generators don’t loop and the freeze function just freezes the current value not the say 1 bar loop.

This random lfo generator does loop and it’s great!

1 Like

Oh, Thanks!

A few mods I have done:

  1. To minimize typing in the Python file, you could substitute this line for the points variable, to prompt the user to enter the number of points:

points = int(input('How many curve points do you want (2-101)? '))

  1. Also, if you install the pyperclip library (pip install pyperclip) and import pyperclip at the beginning of the script, you can add this at the end of the script, which will automatically copy the result to the Windows clipboard so you do not have to do it manually:


  1. I also have added this at the very end, just to explain what to do (assuming the pyperclip addition), because I will only use this occasionally and might forget:

print(‘Result is copied to Windows clipboard (or manually copy the result above, including the brackets). In Vital, right-click on the LFO and choose paste.’)

  1. You can randomize the smoothing, on or off, with the mods below. You can really put it anywhere above the last block. I put it after the powers block.

smoothrand = random.randrange(0,2)
if smoothrand == 0:
smooth = ‘false’
smooth = ‘true’

…then in the first help_me line, replace the word false in the smooth parameter with {smooth}…brackets included

  1. Thanks for creating this SlavaCat.
1 Like

Thanks! Would you mind linking the code so I can add it?

Tar Heels for Vital! I’m a fellow Heel who happens to love Vital, too. Good to see us represented!