Real Randomness vs. Complex Cycles
(and the combination of both)
When we hear “permanently changing” most of us will surely think of sample and hold units at first.
And, yes, S&H units are important engines to drive our generative patches.
But what about clock generators and LFOs (the latter being able to serve as clock generators as well)?
“Why, LFOs generate regularly repeating cycles?” you may say.
And: “No permanently changes will be going on. All changes repeat exactly the same way, when the next LFO-cycle starts.”
You are true. Of course you are. But such LFO cycles can be quite long ones. The lowest frequency of the VCV rack LFO-1 for example is 0.0039 Hz, which means a cycle of 4 minutes and 16 seconds before things start repeating again.
And there are LFOs with even lower frequencies and longer cycles out there. But even 4 minutes may give us – as listeners – at least the illusion of “permanently changing”.
Your next argument will be:
“But these changes are going on THAT slowly, that the result is boring at the least, and some of our listeners may even think, that there are no changes at all.”
And you are true again. But if my LFO is equipped with a CV-in jack to modulate its frequency, well, then things start to get interesting. In other words: let´s talk about frequency modulating LFOs, about modulating the modulation strength (the “volume” of an LFO´s output), about feedback loops consisting only of LFOs, and about additive mixing of different LFO outputs.
You can imagine what complex networks we can build with these four building blocks. And if we use different LFOs of such a network to modulate or trigger different sources of sound, we are able to construct a “super-cycle” (which consists of a set of “subcycles”) that lasts a very long time until it returns to its beginning.
And when we further take into account, that frequency is not the only parameter, which we can modulate, things get really exciting: modulating the LFO´s amplitude, the LFO´s phase and even the LFO´s wave shape (if our LFO is equipped with a CV in jack allowing us to modulate the shape).
A simple example shall explain what I mean:
Let´s take two LFOs, LFO A and LFO B. LFO A runs at a frequency of 0.03 Hz, which is a cycle length of 33 seconds. LFO B runs at 0.04 Hz, which leads to a cycle length of 25 seconds.
LFO A modulate the frequency of a VCO, let´s call it “VCO X”, and LFO B modulates the frequency of a VCO called “VCO Y”. We can use two quantisers and two VCAs to make things more comfortable to hear and to
Let´s now say, that both LFOs start their first cycle at the same time.
To use the aforementioned terms: we have one “super-cycle” consisting of two “sub-cycles”.
Please look at the following table now: it lasts all in all 825 seconds until both LFOs begin their cycles at the same time again. LFO A needs 25 cycles to get there, and LFO B needs 33 cycles. The length of our “super-cycle” is 825 seconds, even if the “sub-cycles” are only 25 seconds and 33 seconds long.
The video “Video C1_1 SupercycleVideo” (just follow the link: https://youtu.be/Y0RFxQf3NZA ) demonstrates the patch.
Well then, let´s set up some typical LFO networks now.
The easiest group of LFO networks – easy in terms of predictability – are additive ones, networks in which all LFOs work parallel on one and the same (or more than one) modulation target.
Let me start with 1 VCO as the target and 2 modulating LFOs. In those cases the absolute values of the LFOs add to each other: when the phase of the waves of both LFOs are positive the sum is a higher positive one, if both are negative the sum is a higher negative one, and if one wave is in its positive phase, the other in its
negative phase, then we get a subtraction, and in case the waves differ by 180° we get a complete phase cancellation.
The resulting summing wave may look like in the following picture (just an example). And patching a quantizer between the LFOs and the VCO we get the following melody (given that we have chosen the output strenght of the LFOs adequately (later more about adequate modulation strengths).
In the region marked in yellow the patch will play h2-#a2-a2-#g2-g-#f2-f2 (will be held for a while given, that the local minimum is still nearer to f2 than to e2) and then continue with #f2-g2-#f2-f2-e2-#d2-d2-#c2-c2#c2-d2-#d2-e2-f2 (will be held for a while again) and then back to e2-#d2-d2-#d2-e2-f2
With both LFOs running at different frequencies we get random sounding melodies with patches like that one.
Using a suitable mixer for the two LFOs we can adjust the wanted frequency ranges by adjusting the “volume” of the LFOs – what is adjusting the Cvs, which are sent by the LFOs.
And we can – of course – adjust the LFO output strength differently for both LFOs.
If the channels of our mixer are equipped with CVins, we can modulate the relative strength of each LFO by other modulation sources – e.g. using more LFOs. And if our mixer doesn´t have CV ins, we can patch VCAs
between each LFO and the mixer.
But I´m anticipating what will be talked about later.
The following link leads you to a video, which shows me messing around with the patch (and explaining a bit more about it). In the video I´m using other LFO waves than only sine waves as well.
Let me add a third LFO. But instead of just another sine wave this new LFO shall produce a square wave, a wave that simply jumps between two values. We will have to attenuate the output of this LFO a lot to avoid long periods of silence, when it´s at its low level.
With a patch like that we get “unexpected” jumps in the melody, which had been simply going up and down so far – continuously up and down – and the only “randomness” was in the different lengths of the rises and
And with this third LFO, which – or course – runs at a third different frequency, the overall length of the aforementioned “super-cycle” increases dramatically, which increases the impression of randomness even
more. With frequencies of 0.025 Hz, 0.035 Hz and 0.25 Hz our “supercycle” gets a length of 1,160 seconds, what is nearly 20 minutes. Surely long enough to cause the impression of real randomness.
The video, which is hiding behind the following link demonstrates (and explains) the patch in detail.
In the next article I´ll leave the field of purely additive comb ined LFOs, build up some rather complex networks and introduce a general LFO block system to make it easier to construct and to document LFO networks of infinite complexity.
… to be continued
I leave the field of pure additive LFO networks now and turn to LFOs in series. Here one LFO modulates the frequency of the other one:
LFO 2 can be patched into a quantizer then, and from the quantizer the CV goes to the 1 Volt/octave input of an VCO. At first only the output of the second LFO shall be attenated to set the frequency range of the VCO:
The result is quite predictable:
LFO 2 lets the melody go up and down the scale. Without the modulation by LFO 1 and in case we are using only sine waves, the melody would develop slower at its bottom turn as well as at its top turn, because there the value differences of the sine wave are quite small, and therefore the quantizer will give out the equivalent pitches for a longer time.
But there is the modulating LFO 1, which modulates the overall time the circles of LFO 2 need to be completed. Therefore the melody develops slower than “natural” sometimes, and sometimes it runs quite fast.
The cycles of LFOs 1 and 2 may look like this (just an example):
Patching a VCA between the two LFOs – or using the “FM CV” knob of our LFO, if it has one – we can adjust the strength of the modulation.
The frequency of LFO 1 (modulating frequency) determines how fast the changes in the “speed” of the melody happens, whereas the strength of the modulation by LFO 1 determines how much the speed of the melody changes.
If the frequency of LFO 1, the modulating frequency is higher than the frequency of LFO 2, the modulated frequency, then we notice the effect, that the modulating LFO 1 determines the development of the melody
more than LFO 2. which directly modulates the Quantiser-VCO connection, because the changes of the length of a circle of LFO 2 are going faster than on wave (circle) would “naturally” last.
The video behind the link demonstrates this, and the preset “two_in_series.vcv” (comes with the book) serves as a starting point for experiments of your own.
Well, there don´t seem to be many interesting aspects in this simple inseries network, at least not as far as generative music is concerned.
Let´s go a step further therefore, and this step is: feedback!
And let´s use only one single LFO at the beginning. One LFO with its output patched back in its frequency/rate CV input. As the vast majority of LFO modules deliver more than only one wave shape, and most of them are sine, triangle, saw and square we have to investigate all possible pairs of modulated vs. modulating shapes. Appendix A contains a comprehensive collection of graphs showing the result of these feedback combinations, with different strengths of modulation. And the video behind the following link shows how I have gained them.
As far as generative music is concerned we are interested only in different and changing developments of the CV, which the feedback loop delivers to VCOs and other modulation targets. Therefore we won´t use the pure internal feedback “output to frequency/rate CV input”. Instead we will patch an external VCA between the output of the LFO and its frequency/rate input, a VCA, which we can modulate.
Let´s go for some examples.
I combine (additive) the following constellations:
square modulated by saw at a frequency of 0.102 Hz, unipolar, modulation strength 100%, signal share 23.5%. The corresponding graph (see Appendix A) looks like this:
sine modulated by saw at a frequency of 0.447 Hz, bipolar, modulation strength 100%, signal share 43.9%. The corresponding graph (see Appendix A) looks like this:
triangle modulated by triangle at a frequency of 0.033 Hz, unipolar, modulation strength 100%, signal share 70.45%. The corresponding graph (see Appendix A) looks like this:
saw modulated by square at a frequency of 0.145 Hz, bipolar, modulation strength 25%, signal share 53.35%. The corresponding graph (see Appendix A) looks like this:
The seemingly infinitely changing development of the summed CVs look e.g. like this (only some snapshots of the ever changing graph):
The preset “FB_example_1” is set up like that. Just go and experiment with different frequency relations of the LFOs and different VCA settings.
The following link leads to a video, which shows me doing so.
My second example (preset “FB_example_2”) uses the same 4 LFO constellations, only that they are paired two-and-two, meaning, that LFO 2 modulates the rate of LFO 1, and LFO 4 modulates the rate of LFO 3. All
self-modulations stay active. LFOs 1 and 3 are modulated by two different sources therefore: by one other LFO as well as by themselves. Using the CV graphs from before the situation can be described by:
LFO 1 + 2:
And there is a video to show the situation (of course there is one; just click the following link).
With this example we have already set one foot into the next level:
feedback loops containing more than only on single LFO. Only one foot, because we don´t have any feedback between the two LFOs. None of the 4 feedback loops leaves its own LFO. Let me change this now. And for
reasons of compatibility I don´t use the internal functionality to regulate the strength of the modulations and/or the feedbacks, but patch all CV signals through external VCAs.
The simplest of all possible patches of this category looks like this:
The upper VCA in the feedback loop determines how much the rate of LFO 2 is modulated by LFO 1, and the lower VCA in the feedback loop sets the strength of the feedback modulation (LFO 2 modulates LFO 1).
The right VCA between LFO 2 and the VCO determines the strength of the overall pitch modulation of the VCO by the LFO network. The preset called “FB_twoLFOs_1.vcv” is set up like this. Just go and mess around with it if you like.
And the following link leads to a video demonstrating the patch, and showing the different CV developments and resulting modulation shapes.
And even if I explain the patch in the video it might be a good idea to describe some general principles here in the written part now.
The data of this example are:
LFO 1: frequency/rate: 0.25 Hz
output level of the VCA: 50%
LFO2: frequency/rate: 0.5 Hz
output level of the VCA: 50%
The CV development WITHOUT the feedback from LFO 2 to LFO1 looks like shown in the following image. The blue curve is the output of LFO 2, the pink curve is the output of LFO 1. We have the situation: LFO 1
modulates LFO 2. No feedback so far. The blue curve (the output of LFO 2) is the result of the modulation of LFO 2 by LFO 1, the pink curve is the modulating signal. The original signal of LFO 2 is not shown – well, it´s
simply a triangle wave of double the frequency of the pink curve.
We see, that always when the amplitude of the modulating pink signal increases the frequency of the blue curve increases too.
I´ve patched a scope to both LFO outputs. Let´s have a look at these two scopes first, before I patch the feedback loop:
The left graph(s) show the actual output of LFO 1, the modulating LFO, and the right graph(s) show the actual output of LFO 2, the modulated LFO.
And again the pink graph is the output of the OTHER LFO: on the left scope we see the blue CV graph of LFO 1 and the pink CV graph of LFO 2, whereas the rright scope image shows the blue graph of LFO 2 and the pink graph of LFO 1.The pink graph on the left side and the blue graph on the right side are the same therefore. (As well as are the blue graph on the left and the pink graph on the right.)
To understand the next step, the feedback loop, I insert a third LFO, let me called it “LFO X”, and modulate its frequency by the output of LFO 2 as we have it so far.
We see, that the blue graph – the result of the modulation of LFO X by LFO 2 and the pink graph – the output of LFO 2 – perfectly relate to each other. Always when the amplitude of the output of LFO 2 increases, the frequency of LFO X increases as well and so on.
There is one very interesting point in the graph (meaning: there is one very interesting situation in the development of the Cvs). I´m talking about the two quite fast rising and falling amplitudes of the (pink) output of LFO 2.
The amplitude of the modulating (pink) CV signal goes up, and the modulated (blue) CV signal tries to increase its frequency, but before it can complete its circle it is caught by the again falling of the amplitude of the modulating (pink) CV signal. Therefore the modulated (blue) CV signal decreases its frequency ( = enlarges the length of its cycle and the graph builds this little saddle), before the next rise of the amplitude of the modulating (pink) CV forces the blue graph again to start increasing its frequency ( = shortening the length of its cycle).
It is important to understand these goings on. Otherwise we would not grasp what´s going on, when I now replace LFO X again and patch the complete feedback loop (use the preset “threeLFOs_beforeFB.vcv” for
experiments of your own). When the feedback loop is active, the blue curve of LFO 2 depicts the CV, which is going to modulate LFO 1, which – in the first step – should (and does!) generate something like the blue curve of LFO X, which then will modulate LFO 2 again, which then (re)modulates LFO 1 again and so on.
Like in any feedback loop a certain wave shape stabilises, which in our
case looks like this:
There is still one step missing: How does the CV development look like, that is generated by LFO 2 modulating LFO 1 in the aforementioned first step?
Well, inserting another LFO-Scope combination in the patch, and patching the output of LFO X to this new combination of – let´s say LFO Y + Scope gives the answer (because LFO 1 is still producing simple triangle waves as long as it is not part of a feedback loop. So, the result of the described first missing step is this:
Well, this is the result of the feedback from LFO 2 to LFO 1. The only thing left to show now is the result of this new LFO 1 – curve modulating back LFO 2, but, this is – of course – the final result of the whole feedback loop, as I have shown before (well there are some cycles needed tostabilise though). While interpreting the last graph, please don´t forget, that an amplitude rise of the modulating pink curve means a positive stretching/lengthening of the cycle of the blue curve, and an amplitude fall means the opposite: the blue curve gets compressed, its cycle starts getting shorter. Rise and fall of the pink (modulating) curve does not at all cause a rise and a fall of the blue (modulated) curve, but elongation and contraction of the blue curve.
All in all, when you look at the overall resulting curve of this two-LFOFeedback loop, you see: it is far too regular to serve as a CV source for generative developments on its own. Changing the frequency relations to
high integer numbers (e.g. 0.44 to 0.41) increases the length of the overall cycle, but we need more – and we will get more. Let´s just finish talking about LFO networks. And there are some very interesting ones to come.
But after investing so much time in explaining (and after you´ve made such efforts in understanding) I think it´s time for a bit of beauty. So, in the video behind the following link you see and hear a nice way to implement the things you´ve just learnt.
The preset “FB_twoChannels.vcv” (comes with the original e-book, see https://dev.rofilm-media.net) gives you the patch of the video for experiments of your own. But now I´m going to continue in our system and talk about combining additive and serial LFO networks.
The least complex network of this kind consists of two LFO, one of which modulates the other, but both send their outputs to a mixer from where the resulting CV is patched to a modulation target (sound, filter etc. - see chapter 2).
This constellation can be described as “additive combination of two LFOs, one of which producing a complex CV shape”.
The preset “SerAdd_1.vcv” shows this constellation, and in the video behind the following link I´m messing around with it a bit.
Like with all additive (parallel) LFO networks it is the relation of the frequencies of the LFOs which determine the length of the overall cycle (and with that decrease or increase the impression of ever changing randomness). And it is the same frequency relation, that determines the complexity of the resulting development of the CV over time, as it (the frequency relation) determines the shape of the output of the modulated LFO (LFO 2 in the picture above). The relation fLFO1 : fLFO2 has a double function therefore.
The next step is introducing feedback to the setup, as the following graphic shows.
We can describe this patch as “additive combination of steps 1 and 2 from the comprehensive explanation of feedback above”. The preset “SerAdd_2.vcv” (in the e-book) and the video behind the following link deal with a setup like this.
We have met all basic networks containing only LFOs now. Let me give numbers to them:
I have added patch a VI to the diagrams (the self-modulating one LFO) to be able to stay systematic in the following examples.
Our matter now is setting up more complex networks by combining these 6 basic building blocks. By doing so we leave the field of LFO networks, yes, we even leave the Earth and enter the universe of LFO networks, as there are unlimited possibilities. We can replace each part in each of the 6 building blocks by any other of the building blocks – or even by the “mother” block itself.
An example will come in handy here. I take 5 LFOs and three mixers (as well as a couple of VCAs for later modulations. I equip each LFO-VCA combination with a scope for better understanding and patch the modules as follows.
Two LFOs are patched parallel into a submixer. One of the LFOs modulates itself. The mixer outputs the summed CV into the main mixer.
Two of the other LFOs I patch parallel into a second submixer. Additionally the two LFOs build a feedback loop. From this second submixer I patch the CV into LFO number 5, from where it goes to the main mixer. In the graphic I have used the above shown system of numbers to label the three main functional blocks.
Preset “complex_1.vcv” and the video behind the following link will help you to a deeper understanding and working out some experience of your own with the patch – which causes a “generative feeling” to a quite big
amount even if it is completely without random elements (so far).
All our LFO networks have been aiming at modulating the frequency, the rate of an LFO so far. Let me spend some words (and a video) on modulating the other LFO parameters now. Everything that we have met
when we were talking about our LFO networks is independent from the modulated parameter. The system of our 6 building blocks is valid whether we modulate frequency or amplitude or phase or wave shape.
Therefore it will be sufficient to introduce some examples without going deep into the matter a second time (modulating amplitude), a third (modulating phase) and a fourth (modulating shape) time.
But let me say it even here and by now: There are more ways to set up our networks of repeating cycles than only by LFOs. I´ll return to this aspect later in this book.
Alright, some examples then, modulating amplitude first. A bit earlier in this book I said, that patching LFOs in a parallel way by sending their outputs to a mixer will increase the overall CV amplitude. When we set up
networks modulating amplitude we have to take care about this fact even more and more carefully, because these added amplitudes are changing over time.
Let´s start with modulating the output of only one single LFO. The CV range – and with that the range of the modulated parameter, e.g. the pitch of a VCO, changes – and that´s all. I´ll use VCAs to modulate parameters
in all my examples, because not every LFO module might have a CV-in jack to modulate its output, and I promised at the beginning of this book, that you would be able to follow and to do all experiments here yourself, no matter what system you´re using.
The above mentioned patch looks like in the following graphic therefore.
And from here we can go ahead and use our well known networks from before and continue experimenting with modulating amplitudes (instead of or additionally to modulating frequencies).
The preset “amplitude_1.vcv” represents the above shown simple patch, and the video behind the following link demonstrates its characteristics.
And I can do both, modulating the output amplitude of an LFO as well as its frequency. I can do it with one and the same modulating LFO, or I can modulate these two parameters with different LFOs at different frequencies. But be always aware of the fact, that modulating the amplitude of an LFO, which acts as a modulator in a patch means modulating the strength of the modulation, that this LFO is causing. When I use the square wave output of the modulating LFO I can switch certain modulations and even whole modulation paths and building blocks on and off – longer duty cycles (= shorter zero-level times) of the square wave are advantageous quite often. The preset “FandA,vcv” is based on the last mentioned preset and the video behind the following link messes around with this preset at bit.
In the next example (preset “nextFandA.vcv” the speed of the arpeggio and the pitch range of the arpeggio are modulated by one and the same modulation source. Just follow the link:
Let only mention it here: Later we are going to modulate different kinds of modulation targets from different points in the modulating network. We are going to modulate not only VCOs/Quantizers, but also filters, switches, effects and a lot more (see chapter “What to Modulate And Trigger”).
We have modulated the rate/frequency of an LFO, we have modulated the output (modulation strength) of an LFO, but there are LFO modules out there, which allow even their wave shape being modulated. Let´s do so now. The preset “waveshapemodulation.vcv” gives you an easy start to modulating wave shapes of LFOs, and the video behind the following link demonstrates some possibilities.
Last parameter to modulate: phase
Well, modulating the phase of a wave or the frequency/rate of the wave leads to quite similar effects. There is a famous example in the world of audible frequencies: Yamaha called their iconic DX series (DX 7, DX 21 etc.) “FM synths”, even if it was phase modulation, and not frequency modulation what´s going on in these synths. Modulating the phase of an LFO wave will be interesting mostly when I want to play with phase cancellation effects in an additive setup of two or more synths. For example a phase shift of 180° leads to complete cancellation of two otherwise identical waves. So, when I´m aiming for changes in the timing of the modulation I prefer modulating the rate/frequency, because the results are easier to calculate and to predict, but when I want to get some (random sounding) changes of the modulation strength, and changes of the speed, then I go for phase modulation. Here it´s phase modulation, which is easier to predict. And what´s more, modulating the LFO´s rate/frequency needs attenuation of the modulating signal to get sensible results quite often, whereas phase modulation can be done directly from the unattenuated modulation source most of the times.
The preset “phasemodulating.vcv” and the video behind the following link demonstrate such situations.
Let me summarize what we have so far.
We can tell apart 6 basic constellations of how to patch CV sources, that produce regular cycles. Each constellation can be a part of any of the others, quite complex networks, which generate complex and long lasting regular cycles can be set up. And in these networks I have the choice to modulate the rate/frequency of each of the cycles, their phase, the wave shape and the strength of modulation.
But how shall I decide with this amount of different ways to patch my network?
Well, this question is answered by your compositional will, by what you – as the composer – are aiming for on behalf of art and music.
In the chapter “Compositional Aspects” I´m going to talk about that, and there you´ll get some methods of how to make the above mentioned decision(s).
But at first we need to talk about other kinds of modules, which are able to produce regular cycles of CV, modules, which are not LFOs. This is the topic of the following chapter 1.2
… to be continued