BCR2000 / Sending Negative Values

3 posts / 0 new
Last post
twdatc
twdatc's picture
BCR2000 / Sending Negative Values

Hi!

I have a question regarding negative values in custom outputs.

I am sending sysex to a Roland S760.

To control TVF Freq:

$F0 $41 $00 $34 $12 $00 $08 $01 $18 val4.7 val0.3 cks-1 6 $F7

Works fine, with Value 1 set to 0 and Value 2 set to 127, as the S760 expects to see values from 0-127.

However for selecting the TVF type (01 16), the S760 needs to see values:

-1 Off

0 LPF

1 BPF

2 HPF

What are some methods users are applying to send these values?

In addition, parameters such as TVF Velocity Curvy Ratio (01 1E) have ranges from -63 to +63, how is anybody handling this?!

MIDI Implementation is here on the left side of Page 7:

https://static.roland.com/assets/media/pdf/S-760_MI.pdf

Thanks in advance for any advice!

 

ATC

Royce
Royce's picture

Hi I have written before about negative numbers on the BRC.
It is about using minmax range values much greater than you think and mask out the bits you don't need.

The 8bit numbers you need ...
(Roland takes 4 bits, bits 0 to 3, of two numbers and make them into one 8 bit number.
In binary...
0000 aaaa and 0000 bbbb becomes aaaa bbbb

The 8bit numbers numbers for your example are $FF $00 $01 $02
Number A B
FF 0F 0F -1
00 00 00 0
01 00 01 1
02 00 02 2

Using a range $FF or bigger than 8 bits you can roll over the $0FF to $100, $101, $102.
As you can see the right hand side of the numbers are just what you want.
So make
Min = $0FF
Max = $102
and send say $F0 val4.7 val0.3 $F7

...
.minmax $0FF $103
.tx $F0 val4.7 val0.3 $F7

this will give you
F0 0F 0F F7
F0 00 00 F7
F0 00 01 F7
F0 00 02 F7

This should also help with your other problems as .minmax values can be $0000 to $FFFF
In the above example you could use
.minmax $0FFF $1003
(there are lots af values that would work)

Hope this helps
Royce

twdatc
twdatc's picture

Thank you Royce

Yes that is immensely helpful thank you.

I have used:

  .minmax 255 258
  .tx $F0 $41 $00 $34 $12 $00 $08 $01 $16 val4.7 val0.3 cks-1 6 $F7

In this instance (converting the hex to decimal for input in BC Manager's 'Value' knobs), however your explanation using hex made the reason why it works much more logical to understand.

Thank you!