Different values for Steinberg VST

3 posts / 0 new
Last post
gabbernutter's picture
Different values for Steinberg VST

Hello all,


I was wondering if you could help me out. 


Having looked through the BD implementation pdf, royce craven's "secret BC" pdf and  the BC manager pdf, I seemed to have hit a wall in respects to my programming of my BCR. I am relatively new to programming/coding so please bare with me.


I have Steinbergs Cubase (6.5) and I am using the BCR to control it's transport functions using a template I found online. 


I also use a built in VST called padshop. Some parameters go from 0 - 1000 (0% - 100.0% @ 0.1% at a time) and some -200% to + 200% (400 increments altogether) and so on...

They work with CC however, I can only change them in midi values(0 - 127). So When I turn a knob the BCR sends 1 and on a parameter which has 1000 as it's max value, it then changes  1.6% up until it reaches 1000%. These jumps are quite noticeable. 


I have looked into writing a custom code for the value that the BCR sends out.


for example.


$encoder 33

  .showvalue on

  .mode 1dot

  .resolution 96

  .default 500

  .minmax 0 1000

  .tx $B0 118 val0.6 val7.13


Also when I try to program an encoder using BC manager, even when I use a max/min of 0 - 1000, once the encoders turns to 127 it resets and the knob on the VST starts back at 0! 


I actually don't know what to do. I would expect that the VST can accept smaller values because when I use the mouse jog wheel, the parameter moves at 0.1% at a time! So why can't this be done using the BCR? I hope I have explained myself, it is all very confusing to me.


Any help would be appreciated.





Mark van den Berg
Mark van den Berg's picture

Hi Paul,

Irrespective of the capabilities of your Padshop plugin, your .tx $B0 118 val0.6 val7.13 statement will never work correctly, because it generates an invalid sequence of MIDI messages: every MIDI Control Change message must contain exactly two data bytes (so not three), the first being the controller number, the second the data value.
Consequently, a single MIDI Control Change message can only send a value from 0 to 127.
This is why the plugin returns to 0 after 127: only val0.6 is interpreted correctly. val7.13 is interpreted incorrectly; in fact, because of MIDI's so-called "running status" protocol (by which a status byte (here $B0) can be omitted if it's equal to the previous status byte), val7.13 gets interpreted as the controller number of a second $B0 message (and a further data byte is expected).

So how can you send MIDI control change values larger than 127?
The MIDI standard specifies that MIDI controllers 0-31 can form pairs with controllers 32-63, the former being the MSB (val7.13 in BCR parlance), the latter the LSB (val0.6).
But of course it's up to the receiving device (such as your Cubase plugin) whether it actually understands this. If it does, a definition like .tx $B0 3 val7.13 $B0 35 val0.6 could work (or even, under the running status protocol, .tx $B0 3 val7.13 35 val0.6, i.e. without the second $B0).
However, from your definition I gather that your plugin (at least in this case) uses controller #118, for which no "partner" exists, so it may simply be impossible to achieve the plugin's full granularity via MIDI.
In my experience it's quite common for VST plugins to have an incomplete MIDI implementation (in the sense that not all features accessible via the plugin's GUI can be accessed via MIDI), and your Padshop plugin may suffer from this too.

Hope this helps,


gabbernutter's picture

Shit, i realised I thought that I had replied to this !

Thanks for the input Mark. Still never got it figured out, I reckon you were right about the GUI, I just use my mouse scroll wheel and use the BCR for less accurate parameters.

Thanks again for your time,