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 > > > > > >
Message
Re: Is there a way to send 127-val?
2012-05-10 by Gil Brand
Attachments
- No local attachments were found for this message.