Tags: posts polarity-music Bitwig Note-FX Grid

Note Wrapping with Bitwig Grid: Understanding the Wrap Module and How to Misuse Modules to Create Unique Sounds

Tutorial | Mar 10, 2022

In this video, I explain how I built my note wrapping tool and why it is so useful. I use the wrap module by Bitwig to wrap values to the phase range. I then visualize this using an oscilloscope, showing that different values in the oscilloscope mean different notes. I then explain how to rescale the range so that when higher notes are input, they are wrapped within the octave range of C3 to C4. I finish by showing how multiplication and division can be used to offset the axis of the wrap module.

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 the note wrapping tool?

The note wrapping tool is a tool that I built in Bitwig to wrap pitch values to a specific range. It uses the wrap module to wrap pitch values and then uses multiplication and division to scale the range from plus one to minus one to a specific range. This allows for the notes to wrap within a certain octave range when inputted with higher notes.

What is the purpose of the wrap module?

The wrap module is designed to take a signal, usually a phase signal, and wrap it within a certain range, usually between plus one and minus one. It is used to limit a signal so that it does not exceed a certain value. In this case, the wrap module is used to wrap pitch values so that they do not exceed a certain octave range.

What are the benefits of using the note wrapping tool?

The main benefit of using the note wrapping tool is that it allows you to easily wrap pitch values within a certain octave range. This prevents the pitch from going out of range and allows for more precise note selection. Additionally, it is much more efficient than manually routing logic and


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 to another video. Recently someone asked me about my note wrapping tool
[00:07.280] how I build it and why it rocks. So I want to explain this in this video. It's super dry.
[00:13.920] I only explain things. There's no music in it to go away. But if you stick around then you learn
[00:21.520] something about the grid, probably how to misuse modules and why something works and how I think
[00:29.760] about different things when I build something in the grid. Okay so what's my mindset about it?
[00:37.200] So I would say let's go. The key to this preset is basically the wrap module itself by
[00:46.560] by Bitwig here. And this is a module for wrapping values to the phase range. So it's made basically
[01:00.240] for phase signals but I misused it for using it for pitch values. And to show you or to visualize
[01:11.200] what's happening. I use a oscilloscope here. It may be a value. Okay so let's go you have the value
[01:23.920] into the oscilloscope and just turn it up. You can see we go from zero to one.
[01:31.120] You can also switch the pseudo bipolar. Of course we can go negative to minus one plus one
[01:37.360] zero. Okay so we have all values available with this value knob. When we go for pitch values
[01:46.000] they are a bit different. They have the same value range into oscilloscope of course but they
[01:52.880] mean different things. For instance C3 is always zero. Go down to E minus seven then you are
[02:04.000] basically here at the bottom by adding at minus one. And if you go up here for octas I don't know
[02:12.560] C13 or C13 here you are at plus one. So different values in here mean different things. So
[02:27.440] instead of having here percentage here we have for each percentage or for each value at this
[02:36.400] oscilloscope here we get a different node. We can also put a readout here at the end and switch
[02:44.480] this to parts here so we can read out the notes. So when we put here in the value you can see
[02:53.680] we have C3 and when you pull this down yeah it's C minus seven and plus we are at seven
[03:00.640] C13. So it's basically the same. Instead of this using this it's completely the same. The only
[03:08.240] difference is that here we have the value mapped to the notes and here we have percentage values.
[03:16.080] So the units change basically but the signal is the same and different values are mapped to different
[03:23.360] keys that's that's the whole point of it. So there's no difference between these two signals
[03:29.280] maybe the colors different this also changes. So what we want to do now is basically when we
[03:38.640] go up here with the keys on our keyboard we want to we don't want to go up to plus one.
[03:48.320] What we want to do is when we reach for instance C4 let me go here when we reach C4 everything
[03:57.200] above C4 C sharp for for instance we want to pitch down one octave to C sharp three. So we never
[04:07.440] exceed basically the C4 range. So we want to wrap the notes inside only one octave.
[04:14.080] It doesn't matter but what pitch you input we always want to end up on the same octave which is
[04:21.360] between C3 and C4. So to do this you can go to manual route where you just lock a logic check
[04:33.920] values and say everything that's above C4 transpose it down one octave right but it's not
[04:41.760] it's not sleek it's not nice to code because you need a lot of transposing modules to pitch it
[04:49.760] down for each octave and you need to pitch it up for each octave below C3 so it's not good to do
[04:56.960] and it's not efficient. So what I'm doing here is I'm using the wrap module and I saw how this
[05:05.040] behaves. So instead of going in here to plus one and minus one you go into the wrap module and see
[05:11.520] what comes out. You can see the first change is we never go negative even though we put in negative
[05:22.000] values as you can see here it minus 86. So normally we would be here but the wrap module
[05:30.000] doesn't allow you to do this. Instead it wraps the value into the positive range.
[05:42.080] So if we go up here we go to plus one and then you switch back to zero line here
[05:50.640] then we go down it actually jumps up to here and goes down from there.
[05:55.600] So this is the first thing to know how this wrap module basically works and we can utilize this
[06:08.560] a bit to change our behavior. So maybe we put in here B to uni. So instead of letting this wrap
[06:25.600] module decide and put everything into the upper octave we used to B to uni module to do this
[06:33.360] beforehand. So nothing really changes but we already did this here so we can apply something
[06:44.400] to the full range signal beforehand and also after something happens. So we can also do here
[06:53.760] backward conversion. So we switch back to bipolar mode. So now it's basically like before.
[07:08.960] But the thing is everything that goes above plus one and minus one is wrapped into here.
[07:15.200] So I can't really show this I think I have to use your constant because the constant goes above one.
[07:29.600] So here we are at zero okay so let's see we go up we go up we go up and then when we reach one
[07:37.120] we jump down then we are at a zero line again with the value of two then we go up we go up we go
[07:49.520] up and then we are back at minus one here. Okay so this wrap module basically helps us to wrap
[07:58.880] everything into this space plus one and minus one. Instead of just using the values here on this
[08:07.600] input you can see one is up there and when we go higher than one basically nothing happens
[08:14.560] because the value go above here somewhere here right we don't want that we want actually jump
[08:21.040] with the line here to minus one so we use the wrap module and this helps us then to wrap the values
[08:31.600] in this minus one to plus one range. So all we need to do is basically to tell the grid that
[08:40.320] we need to size or rescale the range because up here it's pitch value or technically pitch values
[08:53.600] up here or see 13 and way down here we are at c minus seven or something so that's too much we
[09:00.960] want to scale it down into this range here right maybe plus zero dot two five or something which is
[09:08.320] then c four so we have to scale it that's all we have to do now because the wrapping module works
[09:14.800] and only the range is wrong so we do this a bit by multiplication and division
[09:27.280] so we scale basically the values so let me do multiplication here
[09:40.480] and we use another constant
[09:49.200] so we increase the signal that it's when it's at one way higher
[09:53.600] and fuck in fact twice as high or four times as high
[10:06.480] and yeah we need to divide here
[10:12.400] basically everything we scale up here we scale down here again
[10:30.240] okay so now we scaled our range already down to this range here
[10:37.680] so when we exchange this here again for the pitch module
[10:46.640] just the same values it's just that we have here basically now pitch
[10:51.120] you can see that when we also pass a certain line it's actually f five then the next value jumps
[11:10.560] down to here which is f sharp zero so instead of f sharp five we get f sharp zero it's exactly what
[11:19.360] we want we go down here to f zero it jumps up to f five so it's exactly the opposite way
[11:30.160] so we already have here now a note rapid it gives us only notes in one octave or two octaves
[11:38.480] or three octaves I'm not sure right but we can input a lot of higher notes but we get only
[11:45.600] the same note basically in one octave or two octaves so that's exactly what we want
[11:55.280] so it's basically just using the wrap module here to yeah make this parameter jump
[12:02.400] and using multiplication and division here to scale the signal down from plus one to minus one to
[12:10.480] plus zero dot two five to minus zero dot two five so it's basically just scaling
[12:20.640] and the next thing we can do is maybe to change yeah basically that's it that's the main
[12:30.720] reason to do this when you have your different multiplication value and division value then
[12:39.040] you end up sometimes on different notes which is not what you want
[12:48.720] c five c five c one okay it's important that's the same note right that's what you want
[12:57.120] the number that octave can change but the
[12:59.760] the note should be stayed the same c one becomes c five
[13:09.680] nice I think the division here or this number needs to be in the quantized to five
[13:21.120] so it's only five ten and so on to end up on the same note so if you are not
[13:26.960] you need to check it basically jump here c two c sharp two becomes c sharp two
[13:39.120] a four becomes a two that's okay f six becomes f two so basically this is this is the whole
[14:00.080] magic with the note wrapper the only thing I added is basically that you can change the range here
[14:06.960] um I added some math to change yeah that you can change the axis where you want to move out
[14:15.200] this because um it's all based around c three which is the middle value here um so sometimes you
[14:24.320] don't want to write wrap around c three which is the middle point you want to offset you want to
[14:30.640] have maybe a bit higher maybe f f three or something what you can do to change this is to use
[14:40.400] transpose and you transpose up the notes in front and then you transpose it down afterwards um
[15:00.320] let me go here 12 up 12 down
[15:15.280] the same amount we pitch up here we pitch down there
[15:22.240] now we can see when we here move fast to this we we wrap around
[15:26.800] a different point or different value it's not the middle line anymore
[15:35.040] maybe we need more um that's the range
[15:45.840] you can see now we wrap here at this position which is a minus value
[15:49.520] so you can basically change the the axis of rotation or the axis of mirroring the line
[16:04.800] so this is what I did um this is the math behind it and my my thought process
[16:11.040] I basically utilized the wrap module which is usually used for face signals
[16:18.000] to wrap note signals because every signal in the grid is the same it's the same thing it's just
[16:26.720] different colors and sometimes um different mappings so different values mean different things
[16:32.960] when you put it in this or that module but usually you can exchange all this for different
[16:39.040] modules and use it you can even use to spend module right if you want to check this um in here and then
[16:48.960] change the value or the signal even a bit more to get some surprising effects
[16:57.440] so at this point I'm pretty sure no one actually watches anymore or people
[17:02.320] click the way on the sidebar in YouTube to a different video a nice shiny plug-in that you can
[17:09.040] just install and it's ready to go and gives you some nice sounds um but if you still do then I like
[17:17.680] you and please leave a like on my video I mean why not thanks for watching and I see you in the next
[17:23.840] video bye