Tags: posts Bitwig Generative Note-Grid Sampling Sound-Design Chords

Combining Sub-Patterns for Generative Music in Bitwig

Tutorial | May 04, 2021

In this video, I show how I combine sub-patterns to create a larger generative pattern. I demonstrate how to use the probability module in Bitwig Studio, and how to combine different sequences in a meaningful way. I also show how to use a sample and hold module, a transport playing module, and a compare function to create a trigger signal to reset the chance module. This technique can be used to create generative drum patterns, and it is a great way to exclude what you don't want and focus on what you do want in your track.

You can watch the Video on Youtube - support me on Patreon

Questions & Answers

Maybe you dont watch the video, here are some important takeaways:

What is generative music?

Generative music is a form of music composition that uses algorithms and randomness to create and evolve musical patterns over time. It is mainly used to create ambient or experimental music, but can also be used to create more structured forms such as pop, rock, and hip hop. Generative music is often used as a tool to explore new sound possibilities and to create soundscapes that evolve over time.

How can I use sub-patterns to create larger patterns in generative music?

Sub-patterns can be used to create larger patterns in generative music by combining multiple patterns into one larger pattern. This can be done by using modules such as a probability or chance module, a select module, and a sample and hold module. By changing the probability or chance of each sub-pattern, you can create unique patterns that evolve over time. Additionally, by using a transport playing module, you can sync up the slow down version of the face signal to the original signal, ensuring that your patterns are in sync.


This is what im talking about in this video. The text is transcribed by AI, so it might not be perfect. If you find any mistakes, please let me know.
You can also click on the timestamps to jump to the right part of the video, which should be helpful.

[00:00.000] In today's video, I try to explain how you can combine different sub-patterns to larger patterns,
[00:07.120] which can help you in a generative music, where you try to exclude everything you don't want to have
[00:15.600] in your tracks, and you focus more on things you want to occur at some point. So it's more like
[00:25.120] a different approach to generative music. It's not like that you have some kind of algorithm that
[00:31.600] tries to come up with sounds and patterns in all kinds of random ways. It's more like that you
[00:37.040] exclude everything you don't want to have happen, and just focus on things you do want to happen
[00:44.400] in your generative music. So I show you how this looks in in Bitwig and how you can apply it to
[00:52.400] your tracks. Okay, so switch here to Bitwig Studio. And I have here just a Poly-Grid and there's
[01:00.080] a Sine-Oscillator here for the sound and AD. We want to trigger here with some gates, and there's
[01:06.480] also an output, so that's all. So normally you go here for a gates module, and this one triggers
[01:13.520] basically our AD, and we get some sound. And what you can do is you can switch this here to
[01:22.640] probabilities. Okay, so this way you can say which step is played all the time, and which step
[01:30.720] only occurs in a certain chance to a certain degree. So here we have 50% chance that this step is
[01:38.240] played, and maybe this one is also 50%. So you have sometimes some of these steps are played and
[01:45.520] sometimes not. So this is perfectly nice. The problem with this is that every time you repeat
[01:52.640] the cycle or this pattern, it recorculates basically every step. So you have at each bar you have a
[02:01.760] different situation or different pattern playing. That's not what we want. We want to have maybe
[02:08.880] eight bars of the same pattern, but the pattern itself is randomly generated or
[02:14.960] occurring by chance. And we can of course use this here and maybe re-sample the outcome of this.
[02:24.720] Replay it with maybe the recorder, eight bars long, and then we switch back to this one here. This is
[02:30.800] also possible. But this time I want to show you how you maybe can combine different sub patterns.
[02:38.240] So we switch this back here to gates. And for instance, I want to have a pattern where always the
[02:45.200] first node is playing. And I want also to have maybe a pattern where only this one is playing.
[02:54.160] And I also want to have a situation where both of these are playing. Okay, and when I combine maybe
[03:00.240] three of them, I want to have this one rarely occurring. And this one always and this one maybe.
[03:09.920] So we have three different sequences. We can combine which makes a total of nine combinations.
[03:17.040] All we have to do now is to combine these in a kind of meaningful way. And we can do this by
[03:23.520] just using some module. Which just combines all these modules, right? And now we have basically
[03:33.920] just one pattern made out of these three sub patterns. Maybe like this.
[03:43.920] So now we need to switch some of these off or maybe all of these off. And we use just
[03:52.800] and select module here. We go to the second input of this.
[04:01.600] Because default is now off. And we need to switch these on. And we can do this by using a chance module.
[04:09.600] And this chance module goes into or maybe we just go in here and I'll show you how it's
[04:18.960] look, how it looks like. So this goes straight into the output. This is okay. The chance module
[04:24.720] triggers the select module, which then switches to the second input by chance.
[04:29.920] What the problem here is that I show it is on a oscilloscope. That's when we trigger this here.
[04:40.640] Maybe with the button over the trigger. When we trigger this module,
[04:49.760] nothing really happens. It's just a short burst of a signal. But we need to hold this.
[04:57.760] And when I say hold, we need a sample in hold. So we need to hold to the signal coming out of
[05:06.160] this chance module. That this one or this select button stays basically at the second input here.
[05:14.240] So we need to hold this. And also we need to trigger the chance module. Because now instead of
[05:22.880] the probabilities module here, which is re-triggering or re-setting all the chances on every cycle,
[05:36.240] we can now re-trigger this here manually at will. And we do this probably every eight bars or so.
[05:46.240] So it depends on you how you want to build your generative tune. But I like to re-trigger
[05:53.440] maybe at 60 bars or maybe at 8 bars or maybe at 32 bars if you want to have the sequence playing
[05:59.280] as long as possible. So we go here for face input. And the face input gives us basically just ramp
[06:08.640] signal like always. And this one is exactly one bar long. So the start at zero and the end at one
[06:19.280] is exactly the time frame of one bar in the speed or the tempo of this project, which is 130 BPM.
[06:29.760] And when we select the Poly grip down here, you can see at the left side, the device face is
[06:34.880] length one bar. So we can change this. So when you change the length of one bar, everything that
[06:42.400] depends on the face is changing basically the behavior or the speed. As you can see here, the
[06:50.080] gates modules play a bit slower. So the cycle repeats basically now when I switch this to two bars,
[06:57.120] the cycle repeats in two bars. So we don't want to change this. I just want to show you this that
[07:02.960] you can influence this here. Maybe it's useful for you. So now we have this face and this face is
[07:08.800] exactly one bar long because we have decided to switch here to length of one bar. And we use the
[07:16.240] scalar to change the rate to maybe eight, eight, which means now our face signal is eight bars long.
[07:31.520] But only at the output of the scalar, the other modules here just play just fine in the cycle of one bar.
[07:39.680] So only this output now gives us a face signal of eight bars. As you can see, the ramp builds up
[07:46.560] pretty slowly. The downside of this is that it's out of sync. As you can see here, the output of
[07:54.880] this face module is still one bar long, but it repeats not really in the same or it doesn't restart
[08:04.160] or sync or it's in sync as you can see here. This one is a bit offset to this one. So what we do
[08:10.880] now is we use an or what I usually do is I go for this transport playing module here
[08:21.040] and reset the logic with this one. So every time we press now play on the transport hit stop,
[08:27.360] these two signals, the original signal and the slow down version is in sync. And you can see
[08:36.560] here now that these two face signals line perfectly up at the end. As you can see, it's just one
[08:44.640] straight line. So this is what I usually do. So now we have our original signal and the slow down
[08:50.560] version perfectly synced up. We have now one eight bar long ramp signal and eight small one bar
[09:01.520] face signals. And we can use this now to trigger the chance modules here because we want to have a
[09:10.880] new pattern every eight bars. So to generate a signal or a trigger signal from the slow down version,
[09:18.800] it's pretty easy. We use a compare function here and that's in the logic and it's in comparison.
[09:27.920] So when this signal is exactly at the height at the top here, which is one, we want to output one
[09:38.720] one trigger signal. So when this signal is long, this long face signal here is at the top
[09:48.080] ceiling. We are have the value of one. And if the constant is the same as this face signal,
[09:55.280] we generate a trigger signal. So this way, we can now trigger the chance module, which then
[10:00.240] recorculates if this is actually going to play and we use the signal then to
[10:08.000] yeah, hold the sample and hold or sample and then just hold the signal. We get then
[10:14.240] yeah, basically a long trigger as long as we have this face. So now we raise this here to maybe
[10:23.920] 90 or 59% because this one or this pattern here, we want to have probably playing all the time.
[10:33.600] Maybe super rarely not, but we want to have the first beat or the first step always playing.
[10:39.280] As you can see, the select module is straight down here at the second inputs. We are
[10:45.920] letting this signal pass and we go out here to the sum and then we trigger here.
[10:51.680] And every time this one occurs, we have here basically an open AD.
[10:57.280] Okay, so this is the logic for that. And now we repeat this just for all these steps here.
[11:10.960] So we copy this over and we go in here in this one and this one and also the sample and hold.
[11:19.600] And we go back to the select and now we have basically a generative
[11:29.440] combining of sub patterns to create larger patterns. And this pattern only changes every eight bars.
[11:37.040] And we can change chance here of which pattern to occur. So maybe this last thing we want to
[11:50.560] rarely occur, maybe 10%. And this one here maybe more often, maybe 780%, 80%. I don't know.
[12:00.560] And you can see which pattern is active by looking here at the select. This one is active.
[12:07.760] This one is active. This is disabled at the moment. And you can also do this here with more
[12:13.040] patterns. Maybe bring this in. Maybe go for 50% here. So this way you can combine sub patterns.
[12:36.480] We have now four different sub patterns and we can combine them to four by four which are 16
[12:45.360] different combinations that are now possible. And you have control over the chance when they are
[12:52.000] occurring, but you don't know really when. And you have also control about when you want to
[13:00.720] retry out the chance modules. You can also go for 16, the length of 16 bars. And then you have
[13:08.080] longer patterns. And this is a nice valuable technique for creating drum patterns in generative
[13:16.800] and generative music. Because you want to have not really obscure randomly triggering
[13:24.640] drums all over the place. You know exactly what kind of patterns you want. What you don't want
[13:32.000] to decide which pattern to play at which point. But you know exactly. So you can define what you
[13:39.360] want to have in your track and exclude the rest basically. And it's not that complicated to set up
[13:46.720] here. It's basically just a switch to let the gates pass using chance module, then assemble and hold
[13:55.440] the chance output and then to hold here also the select for the gates to pass and then combine
[14:05.840] everything and then go to your AD or envelopes or whatever you want to trigger with it.
[14:11.760] Yeah, it's a nice little effective technique to combine sub patterns to bigger patterns in
[14:18.240] your generative patches. Sometimes where you also know exactly what you don't want. What you
[14:24.720] don't want to have. And you maybe want to all you plan to make maybe some techno or deep techno
[14:30.560] generative patches where you exactly know I want to have a bass drum every time on the first step.
[14:37.440] So for that, it's a nice little technique. This is just one video. There are more videos coming soon
[14:46.960] in this direction on this channel. So be subscribed and give me a thumbs up if you like the video.
[14:54.800] And yeah, like I said, I plan to do more videos in this direction. Maybe also how you can combine
[15:00.880] it with different Poly-Grids that also play in generative stuff and yeah, make whole tracks this
[15:07.760] way. So thanks for watching and I'll see you in the next video. See you and bye.