Bc2000 (for the BCF2000 & BCR2000) group photo

Yahoo Groups archive

Bc2000 (for the BCF2000 & BCR2000)

Index last updated: 2026-04-28 23:16 UTC

Message

Re: Is there a way to send 127-val?

2012-05-03 by Royce

Hi Gil
> However, I can't figure out the way you did it.

The BC encoders have 96 'notches' per rotation.
If you set the resolution to 96 all output values are sent.
If you set the resolution for 96 x 2 = 192 then depending on where you started (default 1 or 0) it would output only odd or even values.

Imagine you had a circle with 128 marks around it. If you counted up to 128 you would be back to where you started.
If you set the resolution for 96 x 128 = 12288 then it would keep repeating the default number for every one of its 96 'notches'.

The BC value (val...) is 14 bits wide. Two 7bit bytes because Midi data is always less than $80, so we have 2 7bit values we can use.

If you set the resolution for 96 x 127 = 12192 then it would be just 1 short and val (bits 0 to 6 of our 14 bit value)would creep back.

The number of the high byte increases when the low byte goes over 127.
So if the low byte starts at $7f it only needs 1 to increase the high byte, but if we give it 127 then the high byte goes up by 1 and the low byte goes down by 1 to $7e


Unfortunately you have a problem in that you want to break up the value bytes into nibbles.

val0.3   bits 0 to 3    4 bits
val4.7   bits 4 to 7    4 bits we are in trouble here because bit 7 belongs to the high byte of out 14 bit value
val8.11  bits 8 to 11   4 bits
val12.13 bits 12 and 13 2 bits

What you need is 
val0.3   bits 0 to 3    4 bits
val4.6   bits 4 to 6    3 bits 
val7.10  bits 7 to 10   4 bits
val11.13 bits 11 to 13  3 bits
but the BC can't do that. 


> Can you please relate to the following passage that I'm actually using
> in my setup?
> 
> First .tx command selects a certain sample.
> Second .tx command changes Out2 from 0 to 127.
> I would like to add a third .tx command (in red) that changes Out1 from
> 127 to 0.
> [Default is Out1=127, Out2=0]
> [Data is one Byte ordered as MSB,LSB - see in blue]
> 
> $encoder 17
>   .minmax 0 127
>   .default 0
>   .tx $F0 $43 $11 $58 $00 $5F $4E $65 $77 $53 $61 $6D $70 $6C $65 $20 $20
> $20 $20 $20 $20 $10 $F7
>   .tx $F0 $43 $11 $58 $01 $02 $52 $00 $00 $00 $00 val4.7 val0.3 $F7
>   .tx $F0 $43 $11 $58 $01 $02 $50 $00 $00 $00 $00 val4.7 val0.3 $F7
>   .resolution 96 96 96 96
>   .showvalue on
>   .mode bar
 

Normally it should be something like ...
$encoder 17
  .showvalue on
  .mode 1dot 
  .minmax 127 16256
  .default 127
  .resolution 12193
  .tx $F0 $43 $11 $58 $00 $5F $4E $65 $77 $53 $61 $6D $70 $6C $65 $20 $20 $20 $20 $20 $20 $10 $F7
  .tx $F0 $43 $11 $58 $01 $02 $52 $00 $00 $00 $00 val7.13 $F7 ; out 1 going up
  .tx $F0 $43 $11 $58 $01 $02 $50 $00 $00 $00 $00 val $F7 ; out 2 going down
 

Why is the value split?
If you can give more details of the sysex there might be a work around.


All the best
Royce

Attachments

Move to quarantaine

This moves the raw source file on disk only. The archive index is not changed automatically, so you still need to run a manual refresh afterward.