Creating an Algorithmic Composition with Bitwig Studio
Tutorial | Aug 01, 2022
I show how to create a self-running patch in Bitwig Studio that produces predictable melodies. I start by setting up an oscillator and an envelope, and then use a gate module to trigger the envelope. I then use a sample and hold module to persist the pitch, and then use a pitch quantizer to make sure the notes are in a certain scale. I then introduce an LFO and use a phase input to modulate it so that the output is different each time. I then create a melodic pattern with a steps module, and introduce audio effects like a delay and a reverb for additional texture. Finally, I use a dice module to add variations in the decay of each note.
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 Bitwig Studio? #
Bitwig Studio is a digital audio workstation (DAW) that allows users to create and produce music. It is a powerful and flexible DAW that has a comprehensive set of features for music production, including creative tools for sound design, sequencing, mixing and mastering, and live performance.
How do I create a self-running patch in Bitwig Studio? #
To create a self-running patch in Bitwig Studio, you will need to set the grid to monophonic mode and create pitch signals with the Pitch module. You can then use a Gate module to trigger the envelope and create a self-running patch. Additionally, you can use audio effects to tweak the tonality and use a Sample and Hold module to persist the pitch of each note.
How can I create a repeating and predictable melody in Bitwig Studio? #
To create a repeating and predictable melody in Bitwig Studio, you can use a Sample and Hold LFO to output random values that are then transformed into pitches. You can then use a Pitch Quantizer to ensure that the pitches fit into a certain scale. Additionally, you can use a Step Sequencer to modulate
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] Hey folks, welcome back, maybe we should do something inside the grid of Bitwig Studio.
[00:07.680] So if you're already one on BBM project running, nothing else, and maybe let's create your
[00:16.080] Okay, we have an oscillator here and we have an envelope here and an audio out.
[00:22.360] So this works with my MIDI keyboard when I actually hear on this track, which is already
[00:28.460] So I can play music with it.
[00:31.760] Also the grid itself is in monophonic mode, so it's only one voice active, so you can
[00:37.960] create a self-running patch.
[00:39.640] So this is very important.
[00:40.640] If you have here maybe multiple voices, six or 12, pull it down to mono so we have a self-running
[00:47.740] So what we want to do now or today is to actually create some kind of algorithmic or
[00:55.300] predictable melody, synth kind of, so kind of a self-running patch with predictable melodies.
[01:05.500] And I want to leave this here as a core, basically, that you can see.
[01:10.060] It's basically just a normal synthesizer playing an oscillator through an amplitude modulator
[01:18.540] and then to output and we create here pitch signals and gate signals inside the grid and
[01:24.940] maybe also audio effects to tweak a bit the tonality.
[01:32.100] So what we want to do first is to create pitch signals for this input here, right?
[01:37.340] We don't want to use a mini keyboard or the note clip input to change the pitch.
[01:43.420] We want to create something inside the grid.
[01:46.220] There are multiple ways to do this.
[01:48.100] We can, for instance, take the pitches module here, drive this in, and then change the pitch
[01:55.540] this way.
[01:56.540] And you can see there is no sound coming out because we need to still trigger here something
[02:03.460] on our MIDI keyboard.
[02:06.060] So we can replace this here instead with an gate thing, which is also self-running and
[02:14.660] it puts out some triggers, as you can see at certain points, right?
[02:18.180] We can connect this.
[02:19.680] Every time the display bar goes over these yellow dots, it triggers the envelope and
[02:26.100] we get the sound.
[02:27.100] But now the problem is, as you can hear, the pitch changes when the gate is active, right?
[02:35.060] So pitch is changing while a note is playing.
[02:38.460] So we need to persist the pitch for this note.
[02:41.140] We can do this with a sample and hold.
[02:46.500] And it takes an gate input here and we can take the gate input from this module.
[02:53.660] So now, every time a gate is playing, we sample the grand pitch from this pitches module and
[03:01.020] hold it as long as the gate is active or high or one.
[03:05.860] So now you have a persistent pitch for each note you play or you trigger.
[03:13.300] That's exactly what we want.
[03:19.580] So now that we have this, we can modify this in all kinds of directions.
[03:25.500] For instance, we can use an attenuate to scale the whole thing down.
[03:31.700] Or we can modify the playback speed here of this, for instance, take a phase signal.
[03:45.340] So instead of using the phase pre-chord, use the external phase input, which is the same
[03:50.500] as before.
[03:51.500] But now we can tweak it here with some different modifiers, for instance, a mirror.
[03:58.820] So now it plays back and forth.
[04:02.460] So we can change the speed or the direction of the playhead here of this pitches module.
[04:08.660] And we can also speed this up or slow this down.
[04:11.540] So all kinds of possible ways to do this.
[04:15.820] But this time, I want to use a random mod.
[04:22.140] And this is called sample and hold LFO because it's an LFO and the values are sampled from
[04:30.860] And this outputs here random values over time, as you can see.
[04:38.540] And it's not predictable.
[04:40.620] Every time it generates a new value, it's completely random.
[04:46.620] And it also outputs pretty high notes.
[04:48.380] So when you use this here as a pitch input, you get something like this, right?
[05:03.260] Pretty high pitch notes, not really pleasant.
[05:07.660] Because everything on top here, the value on top is basically C6, C7, something around
[05:13.580] those lines.
[05:14.580] So very high pitch.
[05:15.580] So we need to scale this down.
[05:17.260] And you can do this pretty easily with an attenuator.
[05:22.060] So 100% is the same outcome as before.
[05:24.660] But now we squeeze this down to maybe 20% or something like this.
[05:31.980] It's the same signal as before.
[05:33.660] It's just pushed together, squeezed together.
[05:37.980] And we still have to random values.
[05:39.700] And the resolution is not that high anymore.
[05:42.660] But you can see, we barely surpass here the first line.
[05:46.220] So it stays around C3.
[05:48.020] So zero is C3.
[05:50.420] And this is probably just within one octave here of pitch noises.
[05:55.060] We can use the signal pretty easily now in here.
[06:00.860] And stay within one octave of pitches.
[06:06.820] So this is nice.
[06:08.660] But now we have the problem that we are not within one scale, or it's actually not a scale.
[06:14.060] It's just random pitches grammatically.
[06:17.180] And maybe we take here our quantizer.
[06:21.500] And I put this here after the sample and hold so we can see it better switching around.
[06:31.180] So now every time we trigger here something, we sample a random value from the sample and
[06:38.780] And then push it through this pitch quantizer, but then changes it.
[06:43.020] So it hits exactly one note.
[06:46.660] And which note you can select or which notes you want to have.
[06:49.700] You can select here with this interface.
[06:52.980] And I dialed in here my beloved D sharp minor scale.
[06:58.300] And now it sounds much better probably.
[07:02.700] Get a nice melody.
[07:13.900] But now still the problem is that the sample and hold outputs random values all the time.
[07:18.740] So it's not a repeating sequence or anything like that.
[07:21.620] It's just random notes after one after the other.
[07:25.460] And you want to have some predictability in there.
[07:28.580] We want to also have some repeating patterns and yeah, we do this.
[07:34.220] First, I take here the oscilloscope in there.
[07:40.740] We put this here into hold mode.
[07:42.500] And I also made a tutorial about the sample and hold behavior in a, yeah, I made a video
[07:48.060] about this.
[07:49.060] I linked to it in the description probably.
[07:52.740] So when you have this on sample and hold or an on hold, you actually need to drive the
[07:57.900] face input of this LFO to get numbers out.
[08:02.500] So you can use here and value, drive this.
[08:08.060] And when you change the value, get random numbers, but only two, two numbers.
[08:15.220] Because the face input range of the sample and hold is actually not between zero and
[08:20.940] It goes much further.
[08:22.540] So zero, one, two, three, four, five, six, seven and so on.
[08:26.340] And you basically can use this or can see it as an, yeah, kind of modifier where you
[08:32.460] can grab notes from an external table.
[08:37.460] And you can increase the numbers of tables you have access to by going up in value.
[08:48.260] So this value knob only ranges from zero to one.
[08:52.420] So we can only access two values basically.
[08:54.940] So this is the first value, this is the second value.
[08:58.980] So now we need to increase here this value by maybe using a multiply and a constant.
[09:09.340] And we want to access up to 10 values, right?
[09:13.500] So now when we move this here, you can see we have much more different values.
[09:18.060] But the kicker now is that every time you reach the same position with this value knob,
[09:22.660] you get the same random output.
[09:25.740] So it's basically a fixed noise sample that you can access with this constant in this
[09:32.820] value, which is pretty nice, actually.
[09:39.020] So now that you have this, we need, of course, different nodes all the time.
[09:44.860] So we have to modulate this, right?
[09:46.380] So it moves all the time.
[09:47.620] We get different values, which is then transformed into pitches, which gets us a melody.
[09:54.580] So instead of modulating this, I'm just taking a phase input, which moves all the time.
[10:01.700] It's a ramp signal.
[10:03.220] It's also exactly one bar long, and you can change how long this is by selecting the grid
[10:08.220] and go here to the left side of the device phase, and you can change the length to two
[10:12.180] bars maybe.
[10:13.180] So now we have a ramp signal that goes over two bars, and also all the playback speeds
[10:21.780] here of these, for instance, the skate module now, this is now two bars long because it
[10:27.060] takes the phase input here, right?
[10:30.160] So when you switch this back to one bar, you can see it plays much faster.
[10:34.860] So everything inside the grid that uses the phase input behaves differently when you change
[10:41.260] the device phase.
[10:42.660] So this is very important to know.
[10:44.660] So we switch this back here to length, and maybe we want to only change the length of
[10:49.860] this phase signal, right?
[10:51.900] So we can use a scalar for this and say make it twice as long, twice as fast, this is twice
[11:00.100] as slow.
[11:01.380] So I can see the phase signal is, yeah, two bars long, but this one still behaves like
[11:07.420] before because we only change the scaling of this phase input here, or phase output.
[11:14.220] So now that we have this, we can use this as an input here to change the outcome of
[11:20.900] the sample and hold LFO, but we also want to multiply it here, right?
[11:25.860] Because we want to have nothing between, nothing between zero and one, we want to have something
[11:31.580] between zero and 10.
[11:33.900] So now we multiply this by 10, zero, still zero, and one becomes 10.
[11:40.140] So we have a RAM signal going from zero to 10, easy, right?
[11:44.900] Okay, so now it plays, you can already see it plays some kind of melody that goes across
[11:52.900] two bars, maybe pump out your more notes, like this, we have more different notes in
[12:00.380] So let's play this actually, yeah, fine.
[12:17.020] So we have a melody generator that generates melodies, but the melody is always the same.
[12:22.580] It's repeatable and it's predictable.
[12:25.700] And when you probably save this as a patch here and reload the patch or save this in
[12:31.060] a project and save the project, every time you reload the project and the patch or the
[12:36.420] preset, you get a different random outcome here, you get a different melody.
[12:41.340] That's something that's very important to know, because you can't persist this.
[12:46.380] That's the sad part of it.
[12:48.900] And we don't have anything inside the grid yet to persist anything that you created within
[12:54.740] the grid.
[12:55.740] I hope you get something like this in the future, but for now, it's not possible.
[13:00.780] So every time you reload this project or this preset, you get a different random value,
[13:06.940] value numbers, a different random noise sample that's getting sampled and hold it here.
[13:14.000] And you get a different melody.
[13:16.820] Okay, just leave this at that here.
[13:21.540] So now we created basically some kind of medium complex pitches generator that outputs predictable
[13:33.300] And we also have a small little gate generator here.
[13:36.740] It's pretty simple.
[13:37.740] It's just a skate module, but for now, it's perfectly fine.
[13:41.580] So what we can do now, the next thing would be maybe to introduce some audio effects.
[13:47.580] So maybe use an delay, mod delay here, but instead of putting this in between here, we
[13:54.660] just use a blend, we can blend between the dry signal and the wet signal.
[14:03.180] So if you pull this down to one, you only hear the dry signal.
[14:07.300] And this is only the second input, which is the delayed signal.
[14:11.380] We also want to have probably, now let's put this to play here, probably want to have here
[14:17.780] some feedback running so you can hear it's a melody.
[14:33.780] It's always the same melody.
[14:35.820] It changes a bit in the second half and it's pleasant to listen to.
[14:45.060] I think when you want to have a different set of values here, you can retrigger this
[14:52.060] LFO here by just using trigger button, connect this, maybe make the precode off so you can't
[15:00.460] trigger it actually with the keyboard.
[15:02.500] Every time you press this, you get the different random values, different random values.
[15:16.300] So trigger again, so you can see the melody changes, but then it keeps staying the same.
[15:32.420] Let me use an octaver here, pull this down.
[15:38.020] Okay, what else can we do?
[15:43.340] We can do something like sequencing this a bit.
[15:47.260] Instead of going here to the arranger and doing it with the arranger, we can still stay
[15:51.340] within the modulation system.
[15:53.460] We can use the steps mode and we need to start playing this here, four bars, okay, fine.
[16:04.180] You can see it's playing here, right?
[16:06.420] We maybe clear everything out and we go to quarter notes.
[16:12.860] And now I think this is exactly four bars long and at the end from these four bars, we
[16:19.340] maybe paint in here these bars and then we modify the constant, which is not possible,
[16:29.020] but we want to modify here the constant, right, to change the melody a bit at the end of the
[16:34.060] fourth bar just to have some variety in there.
[16:38.540] So what I do usually instead of using this multiply here with the constant, which is
[16:45.060] basically just an amplifier, more or less a signal amplifier, we just use a gain knob
[16:52.980] here, something like this, which does basically the same.
[16:57.300] It's just, you can see it in the lower left corner, it's just a multiplication, right?
[17:01.780] It's exactly the same symbol.
[17:04.580] So you can change the constant here with the knob and you have an input and an output.
[17:09.260] So it's the same thing.
[17:11.500] We can take the signal here, drive it in there, remove this, go to maybe 10, something like
[17:23.300] Of course, it's not the same number as before.
[17:25.820] So db is not a number, it's basically logarithmic scale.
[17:31.020] But when you amplify here this, get kind of the same result.
[17:38.420] So it amplifies the signal, but now we can modulate this here with the steps mode.
[17:46.500] So maybe at the end from these four bars here, I want to have a different kind of a change
[17:51.820] to the melody.
[17:58.260] We also want to have higher notes, so we can change the attenuate too much.
[18:15.900] So you have a repeating pattern in here and here we change up the melody a slight bit
[18:21.100] to get some variation.
[18:26.100] So this is how I usually sequence stuff.
[18:38.500] Also we have here a tri-signal, maybe we use a random mod here.
[18:42.220] And this random mod also has a free mode.
[18:45.660] You can also switch to a sync mode if you want to have this always at the same position
[18:50.140] in your arrangement, in your global arrangement.
[18:53.900] It switches here to smooth and to bar.
[18:56.900] And now I want to have paid in of this mod delay every four bars.
[19:07.260] Now you can see here the line is going up over the course of four bars.
[19:12.900] And switching back because we have here a loop running.
[19:24.220] If you use multiple of these random things here, then you can sequence stuff in and out
[19:30.260] over time.
[19:31.260] And it's never overlapping, it's always different, you know.
[19:35.540] And these slow modulations basically sequence stuff for you.
[19:43.260] So maybe bring in a reverb here, maybe clone this here down and change the mix, mixing of
[19:56.860] So because this is a different random modulator here and then this, this is a different seed
[20:06.500] than this one and they never, they are never, never the same.
[20:11.740] They never overlap basically.
[20:14.020] So sometimes we have more delay in there.
[20:18.180] Sometimes we have more reverb in there and it constantly changes and it's always a different
[20:23.180] combination of values, which brings in a lot of variety and interesting changes.
[20:29.620] And if you do this with a lot of things in your patch, it makes it, in my opinion, more
[20:51.020] So modulation.
[20:52.020] You can do the same here with the modulation inside the patch as we did here with the LFO.
[20:59.340] So maybe take this, this one here out and maybe also use some labels, call this here
[21:08.260] which generator and this one here is our what you later to later generator like this.
[21:34.060] And yeah, maybe you see a different trigger for this so we can trigger it separately.
[21:42.700] And to use this output here as modulation, maybe the Wavetable position.
[22:00.100] Maybe we introduce here also filter.
[22:09.460] Maybe I should use a different AT for that.
[22:37.260] And so now we have here a filter, we have a delay as audio effect and also separate
[22:41.820] AD sounds more like FM.
[23:08.980] Maybe we should never go down to zero here, maybe start at 15%.
[23:18.620] So now what we also can do is we use a dice module here.
[23:22.780] And every time we trigger a node, we trigger the size and the size outputs a random value
[23:26.980] between zero and one.
[23:28.980] We can use a modulator and we now create a different decay value for each node, which
[23:40.500] is also interesting, my opinion.
[24:02.180] So maybe we can use the output of the face input, we maybe can use this as a pitch mod
[24:12.620] here for the mod delay.
[24:34.700] Maybe too much, one percent is maybe good.
[24:48.660] So now we have a slight pitch modulation in the delay, makes it also a bit more interesting,
[24:55.380] I think.
[25:07.940] Okay what else, we could maybe change here the octave volume by two to have sometimes
[25:17.260] a bass note in there.
[25:22.700] Maybe we can use a steps mod, what else.
[25:28.460] So every time at the beginning here we switch down to, there's some kind of bass note in
[25:42.380] there, good to something.
[26:00.420] So you can see I'm trying to make the most out of what I already have or try to instead
[26:27.460] of creating new stuff, because the more you add, the more you have to figure out which
[26:32.660] values goes with what and it makes it much more harder of course to decide what to use
[26:41.340] and what to leave.
[26:45.860] This also sounds nice here to have instead of this plucky sound more like a fading in
[26:52.020] note in there, so we can maybe use your second dice and do this and also maybe exchange the
[27:00.780] gates module here for a probabilities module which does basically the same, but now you
[27:06.220] can say these are maybe not likely to be played, but sometimes they play.
[27:33.220] So we can push this in every kind of direction as you can see, for me it's of course always
[28:00.500] a bit this ambient style, because I like it.
[28:17.420] Because we use here a quantizer, this is perfectly in pitch with the rest of Bitwig
[28:25.500] of course, we can introduce here maybe that sound, so I feel like this, so I feel like
[28:52.220] maybe we need to pitch up here this one by Ray's Semi-Tones.
[29:22.060] So, that's it for today's video, I hope you enjoyed it, I'll see you in the next one.
[29:48.900] Alright, so it's always nice to have some kind of add in there, just to have some orientation,
[30:15.460] it's maybe too much, random bleeps here and there, it could be also nice.
[30:30.260] We need to introduce here some ghoul force, just to get some rid of some frequencies.
[30:55.460] So any of those VSTs of course, if you want to.
[31:09.700] Maybe slow it down, slow machine, I think it's some nice ambient going, maybe piano
[31:39.540] in there, put this down.
[31:56.900] Yeah, maybe just record here some bits.
[32:26.740] Alright, so that's it for today's video, I hope you enjoyed it, I'll see you in the
[32:56.580] next one.
[33:04.540] Just call it a day here, it doesn't matter how long this part is actually, it's actually
[33:13.660] nice that it's not exactly 16 bars, so it kind of creates some polyrhythmic effect sometimes,
[33:21.860] so I don't care with these kind of genres, I don't care so much for bar length, at least
[33:28.180] if it's in the length of a bar, so two bars, three bars.
[33:34.180] Here it's 18 bars, the correct would be 16 bars, but this is also fine.
[33:47.860] Maybe create some bass sound here, probably also need to have a mono low end here, I'm
[34:04.460] taking a tool device with zero only in the low end, yeah, yeah, yeah.
[34:12.620] And then we probably want to paint in just one note, of course we are lazy, and use here
[34:23.540] some repeater, using Euclid mode, and maybe changing this here, rotate this around so
[34:30.740] the first note is actually not on the bass drum, when we introduce some bass drums, so
[34:35.500] it's a bit offset, right?
[34:53.260] Ah, maybe a pick limiter here, and not in the top, yeah, yeah, yeah, yeah, yeah, yeah,
[35:23.100] maybe more density, and every time we play a note we want to have a different setting
[35:46.860] here maybe for this knob, so we use a random mod, switch this to hold, switch this to note,
[35:56.420] and we get a new random value only when the note triggers.
[36:08.780] And it's probably need some reverb and delay here, so I put here something in the high
[36:12.500] box, minus four is nice, but this is the bass, maybe we can introduce a bit of kick
[36:42.180] I don't know, maybe it's too much, or you want to have it without kicks or drums at
[36:47.140] all, so split this kick drum up here a bit, distortion, just a tad, maybe a reverb,
[37:16.380] and only maybe not in the low box here, and then we use the ADS R to duck down the reverb
[37:37.780] every time the kick plays.
[37:55.540] Oh, maybe in front of this.
[38:18.740] Okay, so we could maybe also create something in the grid or some hi-hats.
[38:48.700] Let's do it quickly, fully grid, don't need that, we need the noise input, we need the
[38:58.580] filter, we go for SVF or this one here, bandpass, in there, out there, triggers, triggers, clock
[39:21.180] quantize, something like this.
[39:43.460] You need distortion here, and of course a low cut.
[39:59.380] So now that we have this, we do the same like we did before with the DICE modules here,
[40:07.980] create two modulators, it's the stereo, it's also nice to have this here in stereo mode.
[40:33.060] Maybe a steps mod here, to change the frequency here a bit, and then a phaser.
[40:58.340] You can see we can change this here a lot by modifying these knobs.
[41:14.700] So we probably want to do that, maybe another one, and a bit of delay.
[41:40.700] Let's use a random here, and bring in a bit of this diffusion here.
[41:59.300] Switch this to fade, change the delay times.
[42:08.020] So bipolar, so we can modulate 2, 3 and 4, maybe a bit faster, so we have a nice level,
[42:30.420] you know some hi-hat percussion, glitchy stuff, we could maybe use here the VST, I showed
[42:42.460] you in the recent video, let me just push here the both buttons, so it randomizes basically
[42:51.660] the pattern and all the, yeah the FX, could be nice, also in this state, maybe we switch
[43:16.140] here, clean, switch this to convert, so now we have the glitch here, or the dry signal,
[43:31.980] and we use a step mod to switch between the two, only at the end from the bar we want
[43:38.460] to switch to, so the glitch plug in.
[43:56.500] It would be also nice to have some hi-hats in there, chord pattern, first one is amplified,
[44:20.940] so we go for this kind of velocity sensitivity, and we can use the velocity, change the length
[44:34.340] of the decay, oh that's pressure, other way around, maybe a bit of swing, just a tad,
[45:01.660] so it starts to groove, maybe a polysynth for the main lead sound, we probably go to
[45:27.860] unison 16 voices, a lot of delay, we go here for space, let's see all the sounds,
[45:57.780] I don't want to go too far here with this,
[46:27.700] so yeah, as you can see, this can lead to interesting results in the background, as
[46:34.780] a background layer, you can also push this to a completely just lead, random melody generator,
[46:41.220] maybe also for bass lines, I use this also for bass lines sometimes, just to have some
[46:47.820] ideas, if you don't like the melody just press the trigger button here, and maybe change
[46:55.380] the trigger sequence here, we can also influence here with this how dense the melody or the
[47:06.260] melody plugs are, and we could also modulate this here a bit,
[47:33.580] so yeah, I think that's it, I want to show you basically how you can go from 0 to something,
[47:46.340] what else you do on the master here, DPE meter, and we want to have maybe minus 10 loves,
[47:56.420] and then we go into the elevate, with 0 DPE here, yeah, I think that's it, this project
[48:18.660] is available then on my Patreon page of course, you can download this and experiment with it
[48:24.740] or maybe make a track with it or just, you know, play around, but yeah, that's it for
[48:32.580] this video, thanks for watching, leave a like if you liked the video, subscribe to the channel,
[48:37.780] if you have questions then please leave the questions in the comments, I try to answer
[48:43.580] them all, and maybe also give me feedback on this video, because I think it's a bit all
[48:53.460] over the place, yeah, thanks for watching, see you next time.