Hi, my DN2 sends CCs 0-127 but Pro-800 parameters use 0-999 range, so I only get 128 coarse steps. Need simple Midihub patch to convert any DN2 CC (cutoff CC87, reso CC88 etc.) to full Pro-800 resolution. How could I do? Please help a rookie. thank you!
Hey @mxft, there are two parts to the problem you’re trying to solve
how Pro-800 receives 0-999 range values
Have you looked into this? I couldn’t find reference to NRPNs
It might be that Behringer use a 14-bit input (think full pitch-bend accuracy) and use that to scale to 10/11bit.
or they might have opted for some kind of in-house form of Sysex (System Exclusive) data protocol.
If it’s Sysex, Midihub won’t be able to help as it (at present anyway) only filters Sysex, it doesn’t create or modify it.
how to produce 0-999 range values
The problem is that, to get a higher resoltion range using CCs, you need to have two interlinked CCs.
Take this demo:
mxft_slow14bitLFO.mhp
- when we run the LFO as a standard (7-bit = 128 value) LFO you get an output like this:
slowly cycling through just 8-values on CC3
\ - but running at 14-bit…
…see how for every one CC3 value, CC35 cycles through the whole range.
This shows one way two MIDI CCs can be used to give fine resolution control.
Some MIDI controllers with endless encoders have this capability, but many synth controls are limited to independent 128-value control.
So the question on the Digitone then becomes, can it produce two interlinked MIDI messages?
If not, you would need to find another way…
.
Hi thank you for your reply.
Digitone cannot produce interlinked MIDI messages, nor NRPN.
What I was trying to achieve: multiply somehow – still don’t know how – the CC range from 0-127 to 0-999
Then the closest you can get (if the 800 accepts NRPN) is to send just the “coarse” steps;
it’s a bit like a metre rule where you can only jump in steps of 1cm and the mm aren’t available.
That’s if you’re working across the whole range:
If you have scenarios where you’re happy with a restricted range…
(say resonance between 500 and 750)
…then it might be possible to use some DN CC to give a better resolution.
If you can point to some definitive docs on how Pro-800 messages are implemented, I’ll take a look.
(same then applies to “multiply somehow”
)
Found some spare time to check better.
If I use CC#15 on DN2 – instead of CC#87 – now I’m able to sweep full VCF range on PRO800.
Yes,
the lower CCnumbers are the Coarse params.
PRO-800_MIDI_CC.pdf.zip
You should find the CC87 covers about 1/8 of the range when swept 0 → 127.
(at least, according to the Retrokits script posted on Elektronaut)
Btw, if you set the VCF with CC15, does CC87 then adjust that setting, I wonder, or does it jump to some other setting close by?
Just tested: CC#87 begin where CC#15 is: CC#87 sweeps only 62/999 steps, so is a fine adjustment
Interesting.
So, assuming you were doing a “Fine Increase” adjustment how does one do a “Fine Decrease”.
presumably, if you have CC87 starting on say value = 64, one could adjust either way?
(I’m starting to think that the Pro-800’s Fine CCs are not absolute as LSB vs MSB are designed, but calculated internally as “relative from where you were”)
Gimme a moment & I’ll write you a preset to produce both Coarse & Fine from and incoming Coarse Only
Try this test if you get a moment, @mxft
mxft_Coarse_Fine_test0.mhp
Its aim is to test whether it gives smooth higher-resolution changes over a restricted range.
(If not, it would be interesting to find out whether/how this could be done
)
How it works
-
CCTable is set to produce a CC (here CC#0) from a mapping:
(Change the mapping to your incoming CC– probably CC#15 itself)* -
Transform1 converts this to a Pitchbend’s MSB value. All the LSB values are just set to 0.
This Pitchbend is then scaled by Equalizer (here 25%) to ‘squeeze’ the pitchbend values – thereby creating inbetween non-zero LSB values.
(in this example, I use 25% to create a “quarter-range” with (hopefully!) 4x the resolution) -
As the Equalizer scales around the mid-point 0-value, I use an extra trick to shift this “quarter-range” to where it is useful.
To this end Transform2 takes the PB MSB and converts to a NoteOn
…so the Transpose pipe can then shift it…
…before the adjusted Coarse value is transformed into CC#15
-
Finally, Transform4 replaces the PB LSB into CC87 for the fine values:
PS. Hey @Giedrius: in monitoring each stage of the pipeline,
This will be fixed in the next Editor’s update. ![]()










