Pitchbend conversion in MPE

Official support for: bitwig.com
BobOstertag
KVRer
7 posts since 29 Jul, 2020

Post Tue Jul 28, 2020 5:23 pm

Does anyone know how to do this:

MPE controllers typically have 3 outputs per physical input: x, y and z.
In Bitwig, the Bitwig instruments map x to Pitchbend, y to "timbre" and z to "pressure."

But I don't want the x axis to route to Pitchbend.

What do I do to route the x axis to an arbitrary destination and not Pitchbend?

Thank you.

User avatar
u-u-u
KVRian
1061 posts since 31 Mar, 2014

Post Tue Jul 28, 2020 7:40 pm

I see some different possibilities:

A) If you do all the synth sound design inside a Poly Grid device, you are free to map Pitch (X), Timbre (Y) and Pressure (Z) to whatever parameter you prefer. But make sure to disable all pitch pre-chords on oscillator and filter modules. This way the modulation even works polyphonically (per-note).

B) Are you recording MPE MIDI from a hardware controller? Then each track in Bitwig has an option to convert incoming/recorded pitch bend to note pitch expression. Maybe you have to disable that option? Then you can use a MIDI modulator to map pitch bend to anything. But that only works if you don't play polyphonically (multiple notes at the same time).

C) You could try using a Keytrack modulator (which also works polyphonically/per-note when added e.g. to a Bitwig internal synth device like Polysynth or Phase-4). But you somehow have to make sure that the oscillator pitch isn't keytracked. If PB->oscillator pitch is hardwired (like on Polysynth) - you could try to negatively modulate the oscillator pitch by an additional Keytrack modulator to eliminate the assignment.

D) If I remember correctly - controllers that follow the MPE standard always send the X direction as pitch bend messages. Maybe something can be done via Bitwig controller scripting (like remapping the pitch bend to a CC message/ swapping X and Y direction)? If you remap the X to the Y direction you then could use an Expressions modulator. The timbre mod source then should contain your X data.

Maybe not all of that options make sense in your specific case. But I wanted to give you some different hints on where to look further.

BobOstertag
KVRer
7 posts since 29 Jul, 2020

Post Wed Jul 29, 2020 7:49 am

Thank you. I will pursue all of the today and get back.

BobOstertag
KVRer
7 posts since 29 Jul, 2020

Post Thu Jul 30, 2020 9:17 am

Checked it all out. Your information was very precise. I am quite surprised that in Bitwig, which is supposed to be the most MPE-friendly DAW, it is actually impossible to route an MPE-x controller to anything except Pitchbend when using Bitwig's own instruments. Weird, huh? Of course, there are 3rd party plugins that can doe this easily. Aalto, for example.
Thanks

Noumena
KVRist
180 posts since 4 May, 2019

Post Thu Jul 30, 2020 10:08 am

you can do this in the grid, not elsewhere. my intuition is that this is because PB is unlike other cc controllers: it is a 14 bit integer vs an 8 bit.

to add to the feature gap, you cannot *disable* mpe pitch bend on the built in instruments, which is weird because you can for vsts.

i've found a way to modulate and disable pitch bend on grid (harder than you'd think) which also allows for you to route it to other modulator targets. i will post it below.

Noumena
KVRist
180 posts since 4 May, 2019

Post Thu Jul 30, 2020 10:45 am

Untitled.png
you can use this to scale and filter PB (as disambiguated from the note values themselves) in the grid. It works polyphonically, too. You can also take the output and use it to modulate other things... Maybe when we get some more grid based tools (mod-grid, notify-grid) we will be able to do this kind of thing for other instruments....
You do not have the required permissions to view the files attached to this post.

BobOstertag
KVRer
7 posts since 29 Jul, 2020

Post Thu Jul 30, 2020 10:59 am

wow. not sure I can sort out what those modules are from the pic...

Noumena
KVRist
180 posts since 4 May, 2019

Post Thu Jul 30, 2020 12:33 pm

gate input -> trigger in for a Sample and Hold, pitch input into the value input. This captures the note value on attack (which at least on my controller is always a note w/o any pitchbend applied). You can just take the output from that and have a no-PB value and use that as pitch, but we want to capture the pitch bend value, continuously.

So: we take the S/H value which has captured the unbent pitch and the pitch input, which is pitch, modified by bend and we get the difference with a Subtrack module. This difference is the pitch bend isolated from the note value. I think that this is what you are asking for.

I then wanted to be able to scale the pitch bend down (I like to use the PB for subtle pitch mod) so I have a scale knob feeding into a Multiply module that allows me to get 4% (as shown) of the Pitch Bend.... and then I add that value to the original note and use that as my Pitch value.

Noumena
KVRist
180 posts since 4 May, 2019

Post Thu Jul 30, 2020 12:34 pm

Untitled 3.png
For context.
You do not have the required permissions to view the files attached to this post.

BobOstertag
KVRer
7 posts since 29 Jul, 2020

Post Fri Jul 31, 2020 2:40 pm

Thank you. Super helpful. I am a longtime Max programmer just checking Bitwig. Things are done so differently here.

BobOstertag
KVRer
7 posts since 29 Jul, 2020

Post Fri Jul 31, 2020 4:23 pm

Hi again. Next question: I made this preset in Polygrid. I wanted to make a preset that gives me MPE X, Y and Z outputs connected to modulators, as an easy place to begin for creating MPE synthesizers in the grid. This all works great. I can route any of the modulators to any of the parameters on the audio modules, and I get per-note values. Yay. What I don't undersand is this: if I delete the AR module, everything else dies. All the readout modules stay at 0. There appears to be no more input. Do you know why?
You do not have the required permissions to view the files attached to this post.

User avatar
u-u-u
KVRian
1061 posts since 31 Mar, 2014

Post Fri Jul 31, 2020 7:05 pm

It's because the envelope determines the voice lifetime. You set the number of voices to 4 as I can see from your screenshot. Then Bitwig uses a mechanism to detect which voices are currently in use to save CPU power. The envelopes are used to detect how long a note is active. E.g. in the Release phase there still should be sound although the note already has been released. As soon a the envelope out has returned back to 0, the voice will turn inactive and doesn't consume any CPU anymore!
Just for your understanding: select the AR module and look for the 'Affect voice lifetime' (AVL) setting in the module inspector. In fact most of the time you want only the main volume envelope to affect the voice lifetime but not every addition filter/any sound parameter envelope. Also: the Audio Out module also has an AVL setting where the signal's volume can be used to detect whether is still sound. And I haven't BwS open ATM but I think also the Gate module has the AVL option. If you have no module with the AVL option enabled a polyphonic Grid patch will always be silent/have no output/won't be calculated at all because all voices stay inactive! So that's why deleting the AR module will cause this behaviour.
For you to try: You also just could insert a single Gate module (even without its output connected but with AVL enabled) and then delete the stuff around the AR module.
Also: If you change a Grid device to be monophonic (number of voices to 1), the whole behaviour will change slightly (there is a mode where the one voice will be always active).

For your current use case I wonder a bit what you want to do. From your patch i see 2 options:
  • If you want to create a polyphonic synth patch - yes, you need to set the Grid to be polyphonic. In this case you also need at least one Gate/envelope/audio out module that determines the voice activity as I just explained. Each finger's XYZ position can control parameters of the corresponding synth voice. (From the preset name 'Dimplr MPE Synth' I conclude you want to to that)
  • If you just want to use the Modulator Out modules for controlling other devices (inside the FX slot of the Grid device), polyphony is 'lost' nevertheless and you can set the number of voices to 1 and use that mono mode I talked about. This is the case if you want to create an audio effect and use your MPE controller as a pressure sensitive XY controller. But only one touch point can be used one your MPE controller then. In this case (voices set to 1) you can delete the AR module and there still should be sound.

User avatar
Tj Shredder
KVRAF
4517 posts since 6 Jan, 2017 from Outer Space

Post Fri Jul 31, 2020 11:56 pm

BobOstertag wrote:
Fri Jul 31, 2020 2:40 pm
Thank you. Super helpful. I am a longtime Max programmer just checking Bitwig. Things are done so differently here.
Hi Bob, same background here, fell in love with Bitwig for the inspiration it gives to me some years ago...
Never could turn a scientific synth paper into playable polyphonic MPE synth as fast as with the Grid...
Max is still more complete and universal, but for fast results, Bitwig rocks...

Noumena
KVRist
180 posts since 4 May, 2019

Post Sat Aug 01, 2020 11:15 am

I am so glad to read about others doing this work! MPE+Grid is just so amazing to work with and it is wonderful to not be working completely on my own. I'd love to see some of what you folks are building. I'm mostly converting Spitfire Audio sample libraries to MPE controlled samplers (lots of work to make the sustain pedal work properly and the work above to be able to scale PB... things like that.) Playing well sampled strings with pressure mapped to amplitude is a real revelation.

User avatar
pdxindy
KVRAF
16946 posts since 3 Feb, 2005 from in the wilds

Post Sat Aug 01, 2020 2:48 pm

Noumena wrote:
Sat Aug 01, 2020 11:15 am
I am so glad to read about others doing this work! MPE+Grid is just so amazing to work with and it is wonderful to not be working completely on my own. I'd love to see some of what you folks are building. I'm mostly converting Spitfire Audio sample libraries to MPE controlled samplers (lots of work to make the sustain pedal work properly and the work above to be able to scale PB... things like that.) Playing well sampled strings with pressure mapped to amplitude is a real revelation.
The Grid is satisfying for MPE... fast and fluid and just works automatically.

I make mostly simple synth constructions where it is the nuance of the per voice modulations and playing that give the sound its beauty. I have yet to have an interest to use PB for anything besides PB.

I'm planning to get SampleRobot to auto-sample synths as it exports to Bitwig format.

Return to “Bitwig”