Pitch Bend via Ribbon Controller

I want my ribbon controller (Doepfer R2M) to send positive Pitch Bend values only. By default, 0 is somewhere in the middle of the ribbon, so like a pitch bend wheel, I can slide up or down to increase or decrease the Pitch Bend value. I am trying to only convert the Pitch Bend values to only positive numbers so the ribbon acts like a guitar neck, but I can’t seem to figure out which pipes to use to achieve this.

It’s a bit complicated since there are adjustable settings on the R2M, the soft synth (Surge XT for now), and midihub.

Any help would be much appreciated – thanks in advance!

Try this:

image

Positive Pitch Bend.mhp (411 Bytes)

If your Pitch Bend is not on Channel 1, edit the virtual mapping in the Transform, so the channel matches the one you are using.

In case you’re using a larger preset that already makes use of Virtual H bus, please post your preset here and I’ll help you integrate this.

What this preset does is first reduce the pitch bend depth by half, so it goes from -4096 to 4095, and adds 4096 to make it be in range 0 to 8191. The LSB handling will not be very accurate, but hopefully it will be good enough.

For bonus effect - add a CC LFO to the right of the LFO and set it to 14-bit, Active Modulation mode, for LFO pitchbend fun :slight_smile: Reduce the Depth to single digits to stay close to the value bounds.

1 Like

Hey @Giedrius, nice solution.

I looked at this bearing in mind your earlier pitchbend EQ solution

…but didn’t think of the Passive Mod.

A couple of technical questions:

  • would a Rescale of CC3 (sthg like [32:95] → [64:127]) do the same job as the Passive Mod LFO?
  • if the mapped Transform appeared before Virtual H out, would it work the same?
1 Like

The Rescale would nearly work as well, but it wouldn’t max out the LSB byte, as the LFO does, I’ve tried that as well. :slight_smile:

The Transform pipe is on the 2nd line, so the mapped CC #3 can reach the Virtual H output, but then be discarded later on, in the 2nd line, as CC #35 is the one that triggers conversion back to Pitch Bend.

figured you would’ve (or dismissed out of hand!) :wink:
…but I don’t get your “max out the LSB” as both LFO&Rescale work on the MSB byte, don’t they?


I get how your order works @Giedrius, I was wondering whether

Screen Shot 2024-11-07 at 05.42.54

has precisely the same functionality.
Like I say, just a technical question!




I read that @Steven’s R2M is 12bit.

Given that a some popular ribbon controllers like Keystep are just 7bit (& presumably most users don’t complain), I wonder whether a “grainier” MSB-only version would sound much different?
Screen Shot 2024-11-07 at 05.58.19

1 Like

In 14-bit mode, the LFO works with both the MSB and LSB, so in case it goes out of bounds, it would clamp both the MSB and LSB to maximum.

It wouldn’t be the same, as both CC messages produced by the transforms travel together as an ‘avalanche’ of events, one pipe to the right at a time, the virtually mapped param would change too late. So staging the Virtual mappings in the right order is important.

Also you would have to set works with range for the Transform pipe and adjust the CC range filter pipe too, to drop CC #3 as well, so putting the Transform in the 2nd line is also more elegant that it requires less parameters to be set just right.

1 Like

Thanks, G: subtle stuff &good knowledge to have!

1 Like

Thank you Gierdrius & resonotter!

I tested the Positive Pitch Bend solution, and I confirmed via MIDI Monitor that the midihub is indeed sending only positive PB values.

But for some reason it isn’t resolving the issue with any of the soft synths I’ve tried (I’m mostly trying to work with Surge XT, but tried some others as well. I discovered the soft synths behave as expected the first slide on the ribbon, but in subsequent slides the pitch gets altered and the ribbon goes back to its old bipolar ways. I got a visual confirmation of this via a VST called ‘synthmaster player,’ with which I can manually reset the PB wheel to center in the GUI… then the ribbon behaves as I hope, but only for one slide before the PB wheel’s default position visibly moves above 0!

Is it possible the midihub is contributing to this behavior?

I also ended up updating the firmware/software just in case, and now when I get readouts rather than data like Pitch Bend -7432 for example, I get Event e0 30 60 (incoming) / e0 30 60 (outgoing) which is much harder for me to parse. Is there an easy fix for that? It would help with troubleshooting.

Thanks again! Kindly let me know if I you would like videos/screenshots to provide clarity.

Hey @Steven

The reason you’re seeing hex is you’ve got Raw Display selected…
Screen Shot 2024-11-07 at 19.06.34

…giving this:

Screen Shot 2024-11-07 at 19.03.02
(same data)

…instead of this:

Screen Shot 2024-11-07 at 19.02.15

I find it useful to take screenshots like above showing

  • the pipe selected
  • its properties and
  • a MIDI Monitor trace of some input
    (here I’ve dragged that pane over to under the pipes too)

If you have Clock running and you don’t want it filtered out, remember that when you drag can the MIDI Monitor pane’s scroll bar up from the bottom, it’ll freeze the data list wherever you want it.


It would help with troubleshooting.

Yeah, try using MIDI monitor while your MIDI out pipe is selected.
doesn’t sound like it’s MH problem but those MIDI Monitor traces will tell us!

Upload your preset too while you’re at it.

PS. it’s not that hard to use virtuals to give yourself a virtual out with your original PB alongside your “should be positive” version. I often do this –rechanneling my original to say Ch.7– so I can compare exactly how my patch is behaving when the “real” output gives odd results.

2 Likes

I suspect the Pitch Bend is either on other channel than 1, or the unaltered Pitch Bend messages go through other lines in your preset.

Indeed, you should upload your full preset here and check with the MIDI monitor at various output pipes going to your synth to see whether there’s any mess with unintended Pitch Bend messages.

resonotter,

Thanks for the solution to my readout woes!

Giedrius,

I was doing some troubleshooting and realized I have the same problem even with all the other equipment removed – and without any extra pipes added to your earlier Positive Pitch Bend solution.

With the readouts sorted, I can now see that Pitch Bend doesn’t return to zero. With some experimentation I see that the CC LFO pipe is the culprit (but of course it’s also the main thing keeping the notes in the positive?). So it seems to be offsetting the center of the virtual pitch bend wheel.

I’ve tried altering various settings on the R2M ribbon module, but PB returns to somewhere between 4100-4300 (with the midihub LFO pipe’s depth set to 32).

Yeah I did wonder about this with your original request cos any strategy to squeeze the entire range into the positive half is going to place the old zero in the middle of that range!

I would expect every Pitchbender to return to zero, so maybe they only way forward is to Drop all the negative PB values (or wrap them round making both sides positive†…)



† I’ll defer to @Giedrius on sketching that one!

Yes, the center of the ribbon was shifted to 0.5 positive pitch bend. I thought you wanted the lowermost area of the ribbon to be around the Pitch Bend center (0) and the highest part to be at maximum positive end (+1.0).

How does your ribbon controller work? I assumed it retains the last touched value, does it automatically return to its ‘center’ like a pitch bend wheel with a spring?

I’ve been looking at the manual ( from here), @Giedrius, and have concluded that @Steven should give up and sell it me! :grin:


Being serious, it’s a nice bit of kit and in terms of PB has two modes which produce both notes and PB in different ways.


@steven As it’s so versatile, it might be worthwhile starting from the point of really pinning down what you want the R2M to help produce sonically as the outcome of a “gesture sequence”.
It may just be that one of the other modes would suit your aims via a bit of Midihub magic.

Are you using Trautonium mode or the other one?

Thanks again to you both!

Gierdrius, yes, the settings I am using make the ribbon return to its center like a pitch bend wheel with a spring – sort of like a guitar neck where you have open strings and fretted strings.

In reference to the manual that resonotter kindly posted, I am using the “Pitch&FixNote” with the “Note/CtrlNr” (referred to in the manual as “Note/Ctrl. Nummer”) set to 0, meaning Note On/Off messages are not generated by the ribbon.

I have tried converting “Controller” (CC) messages via midihub to PB values, but in this case it converts the data to -8191<-0->+8191 (or whatever it is, I don’t think the +/- values are perfectly symmetrical). I’ll have to experiment with other options.

In the meantime, I am still hoping there is some sort of solution here, otherwise I may try my hand at doing a DIY ribbon.

Let’s assume so.

Having skimmed the manual, I’m still not clear in how it behaves in its various modes.



If I use Arturia Keysteps’ two strips as an starting point:

  • they’re both just 7-bit
    (this rarely sounds ‘bitty’ for pitch bend)

  • the PB strip returns to 0 on “touch-off”

  • but the Mod strip remains at the last touched value

I don’t have the Arturias to hand so I can’t say how the PB returns to 0 –whether it tries to emulate a mechanical bender– but my synth’s touch-screen PB does makes no attempt to “ramp down” and just throws in a zero on “touch-off”:

So it would be useful to know exactly what sort of modes R2M is capable of by seeing some Monitor shots…
(use Incoming Filters to strip out irrelevant messages)Screen Shot 2024-11-07 at 19.06.34
…because for every behaviour I can imagine it producing, a Midihub work-around is possibel

Hi rresonotter,

I tried making some adjustments to the R2M’s settings.
So now I have it set to Pitch&FixNote with NoteCtrlNr=36, and with a NoteCtrlNr being anything other than 0, the Ribbon will not reset to 0/“0.”


I’ve attached a screenshot showing a short slide to just show that it’s not trying to return to 0 with these settings. Perhaps this is easier to work with? With these settings, the new problem is whether I can use midihub to force the data to return to 0?

Thanks again!

Regards,
Steven

this looks promising:
in the first instance you can just add a Transform “Replace Note Off 36 → Pitch Bend 0”
this will give immediate “return to zero” like my touchscreen.

If, on listening to this, you decide you want some sort of ramp to zero, that’s doable but just a bit more complicated.

Here are 3 controllers to help see what behaviour you’d be modelling:


The first two (Ch1 Ch2) show a quick flick up on two mechanical PB controls ( a Roland lever & Yamaha wheel)
The last (Ch 7) shows a touch on a Keystep PB strip.

(Note how the “return times” vary a fair bit between devices (c15 -150ms))

My first thought about how to achieve this would be a Rescaled Saw Down One-Shot triggered by the aforementioned Note Off



PS. Note how none of the three have anywhere near the resolution of the Doepfer. To my mind this suggests one doesn’t need to finesse the Ramp → 0