How to Make Interesting Generative Music with VCV Rack

How to Make Interesting Generative Music

After more than 40 years of working with modular synths I´ve got the idea of writing down my experiences and the knowledge that I´ve gained over the years and produce an e-book trilogy about how to make generative music. The first two volumes are finished, some hundreds of page, legions of videos and presets, and right now I´m working on volume 3 of the trilogy.

All examples are exclusively in VCV Rack.

I think that generative music is an important part of working with modular synths, perhaps one of the most important ones. Therefore I´ve decided to make the main ideas and techniques of my work public – not everyone can afford to buy the books.

I´m going to rework volume 1 into a series of articles / posts and will even add most of the video documentation, and I hope you´ll find my posts interesting and perhaps they will initiate an in-depth discussion of the matter.

And that´s what I´m going to write about here (I´ll try to post one article per week): (more about it all on my website https://dev.rofilm-media.net)

Enjoy your day! Rolf

Chapter 0: About This Course And Some Words About What Generative Music Is

Chapter 1: Real Randomness vs. Complex Cycles (and the combination of both) Chapter 1.1: LFOs Chapter 1.2: Other Devices Generating Regular Cycles Chapter 1.2.1: Looping Envelopes Chapter 1.2.2: Sequencers Chapter 1.2.3: Shift Registers With Feedback Chapter 1.2.4: Sequential Switches Chapter 1.2.5: The Turing Machine – Part 1 Chapter 1.2.6: Samples and Recordings Chapter 1.3: Randomness, Probability and Stochastic Chapter 1.3.1: Some Basic Definitions Chapter 1.3.2: Sample & Hold Chapter 1.3.3: A Short Glimpse at the Turing Machine And at Shift Registers Again Chapter 1.3.4: Perfect Pseudo Randomness: Gray Code Modules Chapter 1.3.5: Imperfect Pseudo Randomness: Euclidean Sequencers Chapter 1.3.6: Random Trigger (Percussion) Sequencers with Different Amounts of Randomness Chapter 1.3.7: Stochastic Sequencers Chapter 1.3.8: Probability Gates (Random Clocked Gates)

  Chapter 1.3.9:	Bernoulli Gates				

Chapter 2: What to Modulate And to Trigger Chapter 2.1: Pitch Chapter 2.2: Timbre Chapter 2.2.1: Filter Chapter 2.2.2: Shapers Chapter 2.2.3: Partials (additive) Chapter 2.2.4: FM/PM Chapter 2.3: Voices Chapter 2.4: Rhythm Chapter 2.5: Effects Chapter 2.6: Envelopes Chapter 2.7: Quantizers Chapter 2.8: Grains Chapter 2.9: Sample (Player) Chapter 2.10: Slew Limiter Chapter 2.11: Comparators Chapter 2:12: Pitch Shifter

Chapter 3: Compositional Aspects of Generative Music Chapter 3.1: General Thoughts, Strategies And Basic Compositional Decisions Chapter 3.2: Basic Compositional Techniques Chapter 3.2.1: Contrasting Chapter 3.2.2: Repeating, Modifying and Inverting Relations Chapter 3.2.3: Basic but Exclusively Generative Techniques

Chapter 3.3:	Specific Compositional Techniques	
   Chapter 3.3.1:	Pitch Dependency				
   Chapter 3.3.2:	Rhythm 					
   Chapter 3.3.3:	Tension and Layers				
Chapter 3.4:	Certain Patch Techniques
		And Examples				
   Chapter 3.4.1:	Switching Voices and Larger Parts
		of the Patch					
   Chapter 3.4.2:	Sculpture Randomness and 
		Setting Borders				
   Chapter 3.4.3:	Jumping between certain BPM and
		Inverting Pitch Lines			
   Chapter 3.4.4:	Mixing Stable and Random Elements	

Chapter 4: Some Building Blocks of Generative Patching Chapter 4.1: The Instrumentation of Envelopes Chapter 4.2: 5 Faces of Randomness Chapter 4.3: Random Harmonies

19 Likes

I fixed the formatting for the outline (this site uses markdown):

Chapter 0: About This Course And Some Words About

  • What Generative Music Is

Chapter 1: Real Randomness vs. Complex Cycles (and the combination of both)

  • Chapter 1.1: LFOs
  • Chapter 1.2: Other Devices Generating Regular Cycles
    • Chapter 1.2.1: Looping Envelopes
    • Chapter 1.2.2: Sequencers
    • Chapter 1.2.3: Shift Registers With Feedback
    • Chapter 1.2.4: Sequential Switches
    • Chapter 1.2.5: The Turing Machine – Part 1
    • Chapter 1.2.6: Samples and Recordings
  • Chapter 1.3: Randomness, Probability and Stochastic
    • Chapter 1.3.1: Some Basic Definitions
    • Chapter 1.3.2: Sample & Hold
    • Chapter 1.3.3: A Short Glimpse at the Turing Machine And at Shift Registers Again
    • Chapter 1.3.4: Perfect Pseudo Randomness: Gray Code Modules
    • Chapter 1.3.5: Imperfect Pseudo Randomness: Euclidean Sequencers
    • Chapter 1.3.6: Random Trigger (Percussion) Sequencers with Different Amounts of Randomness
    • Chapter 1.3.7: Stochastic Sequencers
    • Chapter 1.3.8: Probability Gates (Random Clocked Gates)
    • Chapter 1.3.9: Bernoulli Gates

Chapter 2: What to Modulate And to Trigger

  • Chapter 2.1: Pitch
  • Chapter 2.2: Timbre
    • Chapter 2.2.1: Filter
    • Chapter 2.2.2: Shapers
    • Chapter 2.2.3: Partials (additive)
    • Chapter 2.2.4: FM/PM
  • Chapter 2.3: Voices
  • Chapter 2.4: Rhythm
  • Chapter 2.5: Effects
  • Chapter 2.6: Envelopes
  • Chapter 2.7: Quantizers
  • Chapter 2.8: Grains
  • Chapter 2.9: Sample (Player)
  • Chapter 2.10: Slew Limiter
  • Chapter 2.11: Comparators
  • Chapter 2:12: Pitch Shifter

Chapter 3: Compositional Aspects of Generative Music

  • Chapter 3.1: General Thoughts, Strategies And Basic Compositional Decisions
  • Chapter 3.2: Basic Compositional Techniques
    • Chapter 3.2.1: Contrasting
    • Chapter 3.2.2: Repeating, Modifying and Inverting Relations
    • Chapter 3.2.3: Basic but Exclusively Generative Techniques
  • Chapter 3.3: Specific Compositional Techniques
    • Chapter 3.3.1: Pitch Dependency
    • Chapter 3.3.2: Rhythm
    • Chapter 3.3.3: Tension and Layers
  • Chapter 3.4: Certain Patch Techniques And Examples
    • Chapter 3.4.1: Switching Voices and Larger Parts of the Patch
    • Chapter 3.4.2: Sculpture Randomness and Setting Borders
    • Chapter 3.4.3: Jumping between certain BPM and Inverting Pitch Lines
    • Chapter 3.4.4: Mixing Stable and Random Elements

Chapter 4: Some Building Blocks of Generative Patching

  • Chapter 4.1: The Instrumentation of Envelopes
  • Chapter 4.2: 5 Faces of Randomness
  • Chapter 4.3: Random Harmonies
9 Likes

It looks interesting.

Resident in Singapore. Both card and paypal donation fail:

donations to this recipient aren’t supported in this country.

Is there a more conventional ecommerce available or another way to pay?

1 Like

Hi Rodney, please send me an email to rofilm@seznam.cz Enjoy your day! Rolf

Thank you Paul!!!

1 Like

Welcome to part 2 of this series of articles taken from the e-book (see https://dev.rofilm-media.net for some background information). Today we start patching, and I have integrated even video in this article to make things audible and visible.

Chapter 1:

Real Randomness vs. Complex Cycles

(and the combination of both)

Chapter 1.1:

LFOs

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. click to see the graphic

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 “sub-cycles”) 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 listen to. click to see the graphic

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: Video C1 1 SupercycleVideo - YouTube ) demonstrates the patch. click to see the graphic

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 (ore 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). click to see the graphic

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. click to see the graphic

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. click to see the graphic

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.

Video C1 2 additive 1 - YouTube

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. click to see the graphic

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 falls.

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 “super-cycle” 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.

Video C1 3 additive 2 - YouTube

In the next article I´ll leave the field of purely additive combined 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

3 Likes

Thanks Rolf I was able to purchase your trilogy via a different account.

Good stuff Rolf! I’m totally with you. When this dawned on me (from another YT video) I became quite enthusiastic about the prospects of generating music with LFO’s (any kind of function really), S&H and quantizers. I’ve dabbled a bit with it here and here but I’m sure I’ll return to doing more in that vein, as it seems pretty limitless to me. “Supercycles”… great word for it :slight_smile:

Welcome to the third article about making generative music with modular synths (see https://dev.rofilm-media.net

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: https://www.dropbox.com/scl/fi/ih9nyxvr6ywgy8lk0exeg/image-1_12-series_1.png?rlkey=r1na8u1psc6endq1z88m0mv74&dl=0 (click to see the graph)

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): https://www.dropbox.com/scl/fi/0os4k0jzu6bzghtmus9n4/image-1_13-FM.png?rlkey=3g1yex4kgiiuz70ns3pydje1h&dl=0 (click to see the picture)

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. click to see the graph

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. click to see the picture

The video behind the link demonstrates this, and the preset “two_in_series.vcv” (comes with the book - see to the book) serves as a starting point for experiments of your own. watch the video

Well, there don´t seem to be many interesting aspects in this simple in-series 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. watch the video

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:

LFO 1:

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: click to see the picture

LFO 2:

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: click to see the picture

LFO 3:

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: click to see the picture

LFO 4:

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: click to see the picture

The seemingly infinitely changing development of the summed CVs look e.g. like this (only some snapshots of the ever changing graph): click to see the picture

The preset “FB_example_1” (only in the e-book - see to the book 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. to the video

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: click to see the picture

And there is a video to show the situation (of course there is one; just click the following link). to the video

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: click to see the graph

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. watch the video

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

wave: triangle

output level of the VCA: 50%

LFO2: frequency/rate: 0.5 Hz

wave: triangle

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. click to see the graph and the picture

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: click to see the picture

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 click to see graph and picture

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. click to see the picture

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: click to see the picture

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: click to see the picture

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 to stabilise 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-LFO-Feedback 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. click to watch the video

… to be continued

5 Likes

The preset “FB_twoChannels.vcv” (comes with the original e-book, see website

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). click to see the graphic

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. click to watch the video

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 f****LFO1 : f****LFO2 has a double function therefore.

The next step is introducing feedback to the setup, as the following graphic shows. click to see the graphic

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. click to watch the video

We have met all basic networks containing only LFOs now. Let me give numbers to them: click to watch the graphic part 1 click to watch the graphic part 2

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. click to see the graphic

Preset “complex_1.vcv” (available only in the e-book – see website

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). click to watch the video

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. click to see the graphic

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. click to watch the video

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. click to watch the video

In the next example (preset “nextFandA.vcv” available in the e-book, see website

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: click to watch the video

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. click to watch the video

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 un-attenuated modulation source most of the times.

The preset “phasemodulating.vcv” and the video behind the following link demonstrate such situations. click to watch the video click to see the graphic

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.

2 Likes

Welcome to article 5 of this series about making generative music with modular synths. All examples are made in VCV Rack (for more, please see website.

Chapter 1.2:

Other Devices Generating Regular Cycles

And don´t worry, the 6 types of networks are valid with the other “cycling” modules too. Each of the following is able to substitute an element or a whole block of the above mentioned classes/types of networks.

Chapter 1.2.1:

Looping Envelopes

If our envelope generator is equipped with an end-of-cycle output/signal jack, we can make the envelope loop. There are advantages and disadvantages (like always) of using a looped envelope instead of an LFO. The biggest advantage are the two, three, four or more stages of the envelope, which allow us to create more complex cycling curves. Not only sine, triangle, saw and square, but different wave shapes. But we have to be careful: attack, decay and release are times, not levels. This means, that the length of a cycle depends on its shape. If I want the slope of the cycle to rise more gently without making the fall less gentle at the same time, there is no way to maintain the same frequency, the same length of the cycle. There isn´t anything like a frequency knob in most of the AR, AD and ADSR modules.

And there is another feature to take care of: the sustain parameter is a level, not a time. This means turning the sustain parameter completely up to 100% leads to no development at all with some modules. Decay means a fall to the level of sustain, and with sustain = 100% there won´t be any decay, and no decay may – depending on how the electronic circuit is set up – mean no cycling back to the first stage of the cycle. The graphic shows some typical shapes produced by a looped ADSR module. picture 1 and picture 2

The video behind the following link demonstrates the behaviour of a looped envelope generator, and the preset “loopedEnvelope.vcv” (only in the ebook, see website) shall serve as a starting point for experiments of your own. video

There are envelope generator modules, which deliver end-of-phase” trigger outputs for each of the stages of the envelope. And envelope generators, which have CV inputs to modulate the length/value of each stage bear great generative potential. I´m going to introduce some of these modules in the chapter “The Generative Potential Of Certain Modules”.

Only one example of how to integrate a looping envelope in a modulation network may be sufficient here. And again there is a preset for you: “loopEx.vcv” (only in the ebook) and a video: video And here´s the corresponding graphic: click to see the picture

Chapter 1.2.2:

Sequencers

You may not think of sequencers at once, when talking about sources of cyclic/repeating CV. But sequencers are quite useful a tool if we want to sculpture a complex shape of cyclic CV, and together with a slew limiter these shapes won´t even be only square-cut. click to see the graphic

The preset “sequencer_slew.vcv” (only in the ebook) may inspire you to develop examples of your own, and there is of course a video clip demonstrating the matter: video

Chapter 1.2.3:

Shift Register With Feedback

Even less than of sequencers you might think of shift registers as sources of regularly cycling CV generators. But shift registers can be downright exciting sources of regular CV cycles. We must apply a little trick though.

Let me recapitulate, how a shift register works. There are (at least) two inputs, one of which is a trigger input. Always when an impulse reaches the trigger input the shift register takes a sample of the voltage level, which is at the other input at that moment, and leads it to the first of its outputs. The voltage value, which had been there before is shifted to the second output. The value of this second output is shifted to the third output and so on. The value, which had been at the last output of the shift register vanishes to the sound heaven (“is thrown out of the register module”).

It reminds a lot of the behaviour of a sample and hold unit, because we cannot predict, which voltage level is at the non-trigger input most of the times, and there isn´t any new level taken as long as no new trigger impulse arrives at the trigger input. click to see the graphic

To make shift registers generating regular and repeating cycles I have to achieve two things:

first: the last step (pushing the content of the last

register out of the module and into the waste

basket) must be redirected back to register 1.

second: the register must start working at all!!!

And this means it must get trigger

impulses and an initial signal at the non-

trigger input, but then no further signals

to sample, because the content of the

registers would permanently change

otherwise.

If I were able to achieve that, I would get a regular sequence of output CVs. Well, which levels they would have I don´t know, but the levels, which they adopt once would never change, the sequence, the cycle would be an unpredictable one, but a regular one, after its first initialisation. The randomly achieved cycle would go on and on – unchanged, as long as I won´t change the patch.

It´s kind of being in my own garden of regularity, but having a short glimpse over the fence to neighbour´s garden of randomness.

But how to fulfil the above mentioned two conditions? Well, there are two ways to achieve that, one using switches – which I won´t do now, but will do and demonstrate later in this book – the other is using a mixer, one channel for the trigger, another one for the signal the sample is taken from. And once there is content (= there are samples taken) in the registers of the module I fade out or disconnect the signal channel manually.

The preset “shiftregister.vcv” (only in the ebook,) is a good starting point for your own experiments, and the video behind the following link shows what I´m talking about here. video

Or – what great fun it will be – I use the square wave output of an LFO running at a quite low frequency to switch the signal channel of the mixer on and off.

Watch the video behind the following link to see what I mean, and the preset “squareshift.vcv” (only in the ebook) delivers a starting point for you. video

There are 8 outputs of the shift register, right?! So why not using more than only one (perhaps even all 8) to modulate the pitch of more than only one (perhaps even of 8) oscillators? And even if polyphony is a matter of the chapter “Compositional Aspects” I can´t help demonstrating a bit of it in the video behind the following link already now and here (and the corresponding preset is “earlypolyphony.vcv”). click to see the picture And here is the video: video

… to be continued

2 Likes

Welcome to article 6 of this series. You can read a lot more about this stuff on my website https://dev.rofilm-media.net.

Chapter 1.2.4:

Sequential Switches

We were standing in the “garden of sources of regularly repeating CV” and were looking over the fence into the realm of randomness in the last chapter, which I could have called “Changing Randomness into Regularity”.

In this chapter we are standing in the same garden again, but at the opposite side and we are going to look over another fence into another realm, the realm of switches, which are no sources at all – neither of CV, nor of anything else. And again I´m going to “misuse” them and I´m going to force them into pseudo sources of complex but regular and regularly repeating CV cycles.

There will be a whole chapter about switches later in this book, but let´s deal only with one certain kind of (sequential) switches now, which takes a number of different inputs and leads each of these inputs sequentially to one output. click to see graphic

And now I take as many CV wave shapes – e.g. from LFOs – as the switch has inputs and patch each of them to one of the inputs. What I get at the output is a regularly repeating complex wave shape (of CV), which consists of all constituent individual shapes. The result may be a cycle consisting of a sine followed by a square followed by a triangle followed by a saw etc. and this again and again. Or I take more complex shapes to the inputs – e.g. the results of a couple of modulation networks.

The only thing I have to take care of (if I want something regular) is that the frequency of change between the inputs as well as the frequency of all input generating units are integer multiples of each other. Otherwise we would loose our wanted regularity. click to see the graphic

The resulting (and regularly repeating) CV development generated by the situation, that is depicted in the graphic (switching from f1 to f2 to f3 back to f1 etc.) would look like this: click to see the graphic

(It´s not necessary to have the same wave shapes!)

With non-integer frequency relations each switch would “catch” the input shape at always different phases leading to an always changing and never repeating succession of resulting wave shapes.

But wait a minute! Do we really loose regularity? Well, we do not, of course. We simply get what we got at the very beginning of this chapter 1: we combine a couple of waves, which are running at different frequencies and different phase shifts, which means an actual situation will surely occur again after some time, and from then on repeat again – only that this “some time” can be a quite long one, which causes the impression of randomness. And again its on us, it depends on our compositional decision how much regularity and how much randomness we want at a certain point in our patch.

The preset “sequentialSwitch.vcv” (only in the ebook, see https://dev.rofilm-media.net) and the video behind the following link may lead you deeper into this matter. https://youtu.be/9h0Ug8yY9Ao

Chapter 1.2.5:

The Turing Machine – Part 1

In the chapter “Generative Potential of Certain Modules” I´m going to introduce the Turing Machine and its applications in generative music in detail. But there is one aspect, one function witch makes it seem reasonable to mention this module even in this early chapter here.

In chapter 1.2.3 about shift registers we met the situation, that on one hand we didn´t know which sequence of CV levels we would get, but – once got – this development of CV levels would regularly repeat over and over again. With the Turing Machine we can create a similar situation (and therefore we are looking over the fence into the realm of randomness again).

Let me make it short and simple here. The big knob in the upper center of the picture sets the amount of randomness the Turing machine will produce. In it´s 12 o´clock position we get only and 100% random successions of CV levels, whereas in the 5 o´clock position the sequence/succession of CV levels, which is in the buffer of the module at a certain moment won´t change any more – we have “caught” or frozen the sequence, which will regularly repeat as long as we sustain the five o´clock position of the knob.

The smaller knob below and a bit to the left sets the number of steps of the sequence/succession of CV levels in both situations: in randomness as well as in regularity. We can say it sets the length of the sequence.

And the five knobs at the right let us adjust certain steps manually, which means we can change the CV level of certain steps of the sequence, which is in the buffer of the module at the moment.

And the speed/rate is set by the CLOCK input. click to see the graphic

The preset “turing_1.vcv” (only in the ebook, see https://dev.rofilm-media.net) and the video behind the following link show the way to your first experiences with the module. To read about its whole functionality, please go to chapter 5 of this book.

https://youtu.be/wj-Z_SCKzgw

Chapter 1.2.6:

Samples and Recordings

And why not recording/sampling CV, and play it back in loop mode? It would be a regular CV development, a regular and repeating cycle of CV levels, right?

And what´s more, these sampled CV cycles – which may be the result of a complex network of LFOs, sequencers, shift registers etc. - can easily be stored away and used anywhere and at any time as completely independent units without the need of loading all the modules or even the whole patch, which generated these CV cycles some time ago.

And the functionality of a sampler with its loop-start and loop-end and other functions can change us into a cosmetic surgeion of CV cycles.

The preset “sample.vcv” (only in the ebook, see https://dev.rofilm-media.net) and the video behind the following link introduce you to the matter.

https://youtu.be/JlrTSszfbXk

And combining all the mentioned ways of generating regularly repeating cycles of CV levels we can build really complex and long cycles, and generate quite perfect illusions of “ever changing” events.

… to be continued (by the way: the fastest and easiest way to contact me is via my email rofilm@sezna,.cz - enjoy your day! Rolf)

3 Likes