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-10 by Gil Brand

Thank you very much Royce!!!
Gil


--- In bc2000@yahoogroups.com, "Royce" <rpcfender@...> wrote:
>
> Hi Gil
> 
> > There are several data types (short/long, signed/unsigned), and the data I'm dealing with here is an unsigned 1-byte long - i.e, two nibbles.
> 
> You might think it depends on what the range of values (within the byte) you need.
> Both byte ranges must be the same.
> If you are using 0 to $3F or less in both bytes it would work.
> 
> If it is 0 to 256 you might think that you can use 
> 
> val0.3 the low 4 bits
> val4.7 the high 4 bits and set the resolution to 96 * 256
> val8.11 the low 4 bits byte 2
> val12.13 high 2 bits
> 
> $encoder 17
>   .showvalue on
>   .mode 1dot 
>   .minmax 0 $3FFF
>   .default 0
>   .resolution 22479
>   .tx...val0.3
>   .tx...val4.7
>   .tx...val8.11
>   .tx...val12.13
> 
> BC values can only be 14bits wide and so you are trying to go from 0 to $3F in the high byte but $FF to 0 in the low byte and so the numbers get scrambled half way round.
> 
> Sorry, I don't think you can do what you want to do.
> 
> I have a feeling that inside the BC all the calcs are done in 16bit numbers. 
> If you modified the firmware to allow for 16bit max numbers (eg .minmax 0 $FFFF) you would still be in trouble as the high byte would just loop around halfway around the dial. 
> 
> This would be a great mod, as you could then fudge positive and negative ranges, something that it really needed for hardware synths.
> 
> You really need to add either val12.15 and max number of $FFFF or all of val4.6, val7.10 and val11.13 to be added.
> 
> 
> All the best
> Royce
> 
> 
> > 
> > What was your idea of a work-around?
> > 
> > Thanks again,
> > Have a nice weekend,
> > Gil
> > 
> > 
> > 
> > 
> > --- In bc2000@yahoogroups.com, "Royce" <rpcfender@> wrote:
> > >
> > > 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.