Last week I devised a workaround for the missing feature of articulation mapping in Bitwig. This week I learned a few new things that led me to discover an even better method. This one is such a good workaround, it's basically "integrated articulations" by some standards IMO.
Let's begin:
This method involves a Note Grid -> a Note FX Layer Device -> a Note FX Selection Device hosting a number of Note Grids -> your sampler in need of articulations.
The signal flow looks like this:
First we insert a Note Grid to apply a minuscule amount of delay to the MIDI on/off performance data playing back from your clips in the arranger window. We insert a delay module into the Gate path to ensure the sampler see's the keyswitch note data we are going to generate later on down the signal flow before it sees the notes coming from clips. The delay is set to 0.03ms. This also allows us to automate our articulations directly on a note, and start and stop playback from anywhere in a session and have the correct articulations playing back 100% of the time. You can even start playback mid-note, and it will update and playback that note's correct assigned articulation.
Next we insert an FX Layer Device. This device in Bitwig that allows us to parallel process Note FX instead of serially. We are going to create two layers. One layer is going to be blank and act as our "pass through" that passes the MIDI on/off performance notes through right to the sampler for playback as usual. The second layer is going to be our "keyswitching" layer.
The keyswitching layer is going to generate constant single note pitches equal to whatever pitches our sampler uses for articulation switches. We are going to accomplish switching between the generated pitches by using a Note FX Selector device in this layer, and selecting between Note Grids we insert into that device's slots, we will set up each Note Grid to generate it's own keyswitch pitch data.
And the setup for these Note Grids is very simple. You just insert a Pitch module and define it's pitch to the desired note #. So in this example, my instruments keyswitch layout begins at C0. The first Note Grid is outputting C0, the next Note Grid is outputting C#0, the next one D0, and so on. Rinse and repeat until all your keyswitches are defined. You label these slots accordingly in their Inspector panel, and these clear labels are what we are going to see in Bitwigs automation lane when we go to automate our articulations for a performance. Make sure the Note Grid is set to "mono/true analog" because the pitch module will not output anything in poly mode.
And that's it!
So what is happening here, is we are passing through our performance MIDI, and then in parallel there is a constant keyswitch note being added along with the arranger MIDI playback. What keyswitch note is added depends on which slot we select in the Note FX Selector Device, which we will select via automation. You can automate this in the arranger window, or even better, you can automate this in the Piano Roll, and it looks like this;
As you hover over an area, the articulation name appears and you just click to pencil it in. It is nicely stepped and as you drag up and down you go through all the articulations you defined.
I've been testing this all night, and it works really well! Linear start/stop playback from anywhere in the timeline of a session, including starting somewhere mid-note, always play back the correct articulation defined for that note. It's because the keyswitch pitch data we are generating hits the sampler 0.03ms before the performance on/off note does, so no more "playing back the last defined keyswitch" problems.
Once you have your sampler's keyswiching layed out and defined, this is of course savable as a patch and you can easily recall it project to project.
I was a Logic user for 20+ years, but really love the things Bitwig offers me for creativity. The last mile to get me off of Logic was working with my Orchestral libraries and other libraries that utilize keyswitching. The solution I devised last week was a decent workaround, but this new workaround 100% solves it for me, no doubt.
Hope this information is helpful to some. If there are any questions, feel free to ask. Also, if there is anyone who looks at this and knows how to improve it, please speak up! I am new to Bitwig, using it about 2 months now, coming from 20+ years of Pro Tools/Logic experience.
Cheers
Let's begin:
This method involves a Note Grid -> a Note FX Layer Device -> a Note FX Selection Device hosting a number of Note Grids -> your sampler in need of articulations.
The signal flow looks like this:
First we insert a Note Grid to apply a minuscule amount of delay to the MIDI on/off performance data playing back from your clips in the arranger window. We insert a delay module into the Gate path to ensure the sampler see's the keyswitch note data we are going to generate later on down the signal flow before it sees the notes coming from clips. The delay is set to 0.03ms. This also allows us to automate our articulations directly on a note, and start and stop playback from anywhere in a session and have the correct articulations playing back 100% of the time. You can even start playback mid-note, and it will update and playback that note's correct assigned articulation.
Next we insert an FX Layer Device. This device in Bitwig that allows us to parallel process Note FX instead of serially. We are going to create two layers. One layer is going to be blank and act as our "pass through" that passes the MIDI on/off performance notes through right to the sampler for playback as usual. The second layer is going to be our "keyswitching" layer.
The keyswitching layer is going to generate constant single note pitches equal to whatever pitches our sampler uses for articulation switches. We are going to accomplish switching between the generated pitches by using a Note FX Selector device in this layer, and selecting between Note Grids we insert into that device's slots, we will set up each Note Grid to generate it's own keyswitch pitch data.
And the setup for these Note Grids is very simple. You just insert a Pitch module and define it's pitch to the desired note #. So in this example, my instruments keyswitch layout begins at C0. The first Note Grid is outputting C0, the next Note Grid is outputting C#0, the next one D0, and so on. Rinse and repeat until all your keyswitches are defined. You label these slots accordingly in their Inspector panel, and these clear labels are what we are going to see in Bitwigs automation lane when we go to automate our articulations for a performance. Make sure the Note Grid is set to "mono/true analog" because the pitch module will not output anything in poly mode.
And that's it!
So what is happening here, is we are passing through our performance MIDI, and then in parallel there is a constant keyswitch note being added along with the arranger MIDI playback. What keyswitch note is added depends on which slot we select in the Note FX Selector Device, which we will select via automation. You can automate this in the arranger window, or even better, you can automate this in the Piano Roll, and it looks like this;
As you hover over an area, the articulation name appears and you just click to pencil it in. It is nicely stepped and as you drag up and down you go through all the articulations you defined.
I've been testing this all night, and it works really well! Linear start/stop playback from anywhere in the timeline of a session, including starting somewhere mid-note, always play back the correct articulation defined for that note. It's because the keyswitch pitch data we are generating hits the sampler 0.03ms before the performance on/off note does, so no more "playing back the last defined keyswitch" problems.
Once you have your sampler's keyswiching layed out and defined, this is of course savable as a patch and you can easily recall it project to project.
I was a Logic user for 20+ years, but really love the things Bitwig offers me for creativity. The last mile to get me off of Logic was working with my Orchestral libraries and other libraries that utilize keyswitching. The solution I devised last week was a decent workaround, but this new workaround 100% solves it for me, no doubt.
Hope this information is helpful to some. If there are any questions, feel free to ask. Also, if there is anyone who looks at this and knows how to improve it, please speak up! I am new to Bitwig, using it about 2 months now, coming from 20+ years of Pro Tools/Logic experience.
Cheers
Last edited: