Bc2000 (for the BCF2000 & BCR2000) group photo

Yahoo Groups archive

Bc2000 (for the BCF2000 & BCR2000)

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

Thread

Is there a way to send 127-val?

Is there a way to send 127-val?

2011-07-23 by Steve

I'm trying to cook up my first preset.  I'll explain what it's for later, when it's more impressive and I'm ready to share. :-)

One of the things I would like to do is a cross fade, where as one value varies from 0-127, the other value starts at 127 and goes down to 0; with both destinations being set from the same encoder.  Both targets are sysex messages.  (To a Roland JV-1080, but I doubt that makes a difference.)

I don't see a way to do this.  I'm guessing it's not there, but thought I'd ask in case I'm missing something.

Thanks!

--> Steve

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

2011-07-24 by Royce

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

Hi Steve

> One of the things I would like to do is a cross fade, where as one value
varies from 0-127, the other value starts at 127 and goes down to 0; with both
destinations being set from the same encoder. Both targets are sysex messages.
(To a Roland JV-1080, but I doubt that makes a difference.)

There is a way, but rather than bore the pants off everyone I'll give you the
code and if anyone wants an explanation let me know.

For encoder 49 - bottom left
Cross fade between Channel 1 and 2

$encoder 49
.showvalue on
.mode 1dot
.default 127
.minmax 127 16256
.tx $80 7 val
.tx $81 7 val7.13
.resolution 12193



All the best

Royce

Another "Is it possilbe to ..." (was Re: Is there a way to send 127-val?)

2011-07-25 by Steve

Royce,

Thank you very much!  And I get how it works!  (I take it 96 "pulses" per rotation is the actual resolution of the controllers, so you add 0x7f to the value for each "pulse".)

So, given one thing I thought wasn't possible actually is, I guess I should ask about other things I don't see a way to do.  Here's two other things I thought it'd be nice to be able to do, that I don't know how to:

1. (I think these are often called Radio Buttons in GUI terms.)  If I've got three (or more) buttons in a group set up to send sysex strings, can I get the light to turn on for the last button of the group pressed, and the other lights off?  As a specific example, I've got three buttons selecting a sawtooth, pulse, or triangle wave.  I've been imagining it might be possible to use an .easypar with an unused controller, but each button would have to respond to a different value for "on".

2. Can I affect the range of one encoder based on the setting of another?  (Particular case: I Change the octave of oscillator A, and want the range of oscillator B to be +/- 24 from the value I set for A.)   This one I am extremely doubtful can be accomplished...

I might as well explain the application.  

A full blown editor for a JV-1080 is too large for me to tackle at this point.  But:  A freeware Windows editor for the JV/XP family, called ChangeIt by Jurgen Mossgraber, has a tool called the Virtual Synth.  This tool sends a patch to the synth that is configured a lot like a two-oscillator analog synth, and has on screen controls for the various things you'd typically find in an analog synth (Oscillator wave and ocatve/tuning, ADSR for amp and filter, filter cutoff and resonance, LFO rate, shape, destination, etc).  Of course it sends sys-ex strings for each control.

I've mostly succeeded in putting all those on-screen controls into the BCR.  26 buttons and 28 encoder's worth of control.  It's rather fun. :-)

Anyway, thanks again, to Royce, and to whoever else might reply to this message, plus to all those who bothered to document the BCR/BCF sysex format.

--> Steve

--- In bc2000@yahoogroups.com, "Royce" <rpcfender@...> wrote:
Show quoted textHide quoted text
>
> Re: Is there a way to send 127-val?
> 
> Hi Steve
> 
> > One of the things I would like to do is a cross fade, where as one value
> varies from 0-127, the other value starts at 127 and goes down to 0; with both
> destinations being set from the same encoder. Both targets are sysex messages.
> (To a Roland JV-1080, but I doubt that makes a difference.)
> 
> There is a way, but rather than bore the pants off everyone I'll give you the
> code and if anyone wants an explanation let me know.
> 
> For encoder 49 - bottom left
> Cross fade between Channel 1 and 2
> 
> $encoder 49
> .showvalue on
> .mode 1dot
> .default 127
> .minmax 127 16256
> .tx $80 7 val
> .tx $81 7 val7.13
> .resolution 12193
> 
> 
> 
> All the best
> 
> Royce
>

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

2012-05-02 by Gil Brand

Hi Royce,

I'm excited that such a cross fade can be done.
However, I can't figure out the way you did it.
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]

Thank you very much indeed!
Gil
:::

$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



--- In bc2000@yahoogroups.com, "Royce" wrote:
>
> Re: Is there a way to send 127-val?
>
> Hi Steve
>
> > One of the things I would like to do is a cross fade, where as one value
> varies from 0-127, the other value starts at 127 and goes down to 0; with both
> destinations being set from the same encoder. Both targets are sysex messages.
> (To a Roland JV-1080, but I doubt that makes a difference.)
>
> There is a way, but rather than bore the pants off everyone I'll give you the
> code and if anyone wants an explanation let me know.
>
> For encoder 49 - bottom left
> Cross fade between Channel 1 and 2
>
> $encoder 49
> .showvalue on
> .mode 1dot
> .default 127
> .minmax 127 16256
> .tx $80 7 val
> .tx $81 7 val7.13
> .resolution 12193
>
>
>
> All the best
>
> Royce
>

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

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

2012-05-06 by Gil Brand

Thank you Royce!
I'm using a Yamaha A4000 sampler.
I don't know why is the value split but all "data" within a SysEx message should be "nibblized"...
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.

What was your idea of a work-around?

Thanks again,
Have a nice weekend,
Gil




--- In bc2000@yahoogroups.com, "Royce" <rpcfender@...> wrote:
Show quoted textHide quoted text
>
> 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
>

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

2012-05-07 by Royce

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
Show quoted textHide quoted text
> 
> 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
> >
>

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:
Show quoted textHide quoted text
>
> 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
> > >
> >
>

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.