Yahoo Groups archive

Casio CZ/ VZ/ FZ - Pro Series

Index last updated: 2026-04-28 22:42 UTC

Message

Re: help cz101 bytes sysex breakdown

2009-08-10 by steve_the_composer

Back up a bit:  What are you trying to do? Are you trying to derive a mathematical formula that correlates the time and internal values?

So far as I can tell from the Casio manual, PVDLD is just the Vibrato Delay Display (the scaled rate in hex from 0 to 99 [0x00 to 0x63]) and the PVDLV is the corresponding timing value.

Note: It may be possible to send preset via sysex with values other than what's in the PVDLV columns. I know you can put non-standard data into the CZ, but I haven't specifically tested these parameters.

> there is no byte valued over 15(DEC) or 0f(hex)

HUH?  Don't you mean 127 or 0x7F? Is it possible you are splitting the already nybblized data a second time? Your sysex routine should get 0xF0 at the start, 0xF7 at the end, and numbers from 0x00 and 0x7F, inclusive, in between. If you are not getting the 0xF0 and 0xF7, then your routine is not correct. If you are getting 0x0F and 0x00 as your first two bytes with 0x0F and 0x07 as your last two bytes, you are spliting them in half.

What language are you programming in?



> This is the vibrato delay time, transmitted in three bytes.
> 
> Delay   Bytes           Delay   Bytes           Delay   Bytes
> 25      19 00 19        50      32 00 4B        75      4B 00 DF

25 = decimal
19 = display value of 25 in hex
00 19 = the internal vibrato delay time.

> For delays in the range 0..31, just transmit 00..1F, 00, 00..1F eg for delay
> of 12, send 0C 00 0C. This is convenient since it saves me typing in another
> column of boring numbers ;-)

Have you figured out a way to trasmit only part of a preset to a CZ?  I thought it was impossible.

> 6) PVSD,PVSV
> 
> Again, here comes another table for conversions. The first column (0..24) is
> omitted since the only difficult thing needed is to add 01 00 20 to each
> entry
> ( The first few go 00 00 20, 01 00 40, 02 00 60, ... 06 00 E0, 07 01 00, ..)
> 
> Rate    Bytes           Rate    Bytes           Rate    Bytes
> 25      19 03 40        50      32 09 E0        75      4B 1C E0

Again:
25 is the decimal number that shows in the display.
19 is the hex number for 25
03 40 is the internal value that represents the Vibrato Rate when the display reads 25.


> 7) PVDD,PVDV
 
> These are again encoded as three bytes in a most obscure way. 

What are you trying to figure out? There is no mystery. There are probably only two possibilities (maybe with some variations):
(1) There is a mathematical formula to scale the Vibrato Rate (in this case) over the span of 100 numbers (0 -> 99).
(2) There is a table that the CZ uses.
I would infer (1) with the assumption being that the scale is non-linear. (Or rather, the scale is linear, but the rates are not.) If you want, why not test to see if a displayed rate of 80 is eight times the rate when 10 is displayed?

Below 32, the
> encoding is 00..1F, 00, 01..20 eg for depth 13, send 0D 00 0E.
> 
> Depth   Bytes           Depth   Bytes           Depth   Bytes
> 25      19 00 1A        50      32 00 4F        75      4B 00 E7

> --------
> maybe the bit formation is true in this table (i never checked!)
>  but  63(hex) or 99(dec) does never show up in the contents of a sysex dump
> from a cz101...
> therefore why should it go out to the cz101?

Do me a favor: create a CZ patch has the following values set to 99 in the display:
--Vibrato Delay Rate
--Vibrato Rate
--Vibrato Depth
Download it as a sysex file and upload it to the file section. I want to see this for myself.  I'd do it, but I don't have my CZ set up.

> anybody  able to correct me  and leed me in right direction?
> i am very certain when 99 is parameter
> it shows up in the sysex as  3,6,15,7,2

LOL!!!

You are splitting them up and reversing the order of the split up nybbles!!!!!!

03, 06 is really 0x63
15 is the 0x0F that goes with the 7 to make 0x7F
2 is really the 0x02 in the middle!!!!

Gee, this is more fun than doing a jigsaw puzzle!!!

In short, for a Vibrato Delay Time that corresponds to the display value of 99, 0x63 is the hex representation of the displayed value (PVDLD), 0x02 is the MSB of the PVDLV data and 0x7F is the LSB of the PVDLV.

That's exactly what's in the table!!!!!!

I think you have been staring at either your code or the table too long.

BTW, maybe you can use the DCA, DCW, and DCO conversion "formulas" in the Casio "Guidebook for MIDI" to generate the vibrato formulas.  I suggest using a speadsheet, with one column for the display value (in decimal) and another column for the internal value (converted to decimal). Then create a third column for the difference between each of the values in column. You might see that there is a "curve" that looks like several line segments due to rounding of a non-linear progression. (From 1 to 31 the delta is 1; from 31 to 47, the delta is 2, from 47 to 63, the delta is 3; from 63 to 79, the delta is 8; from 79 to 95, the delta is 16; from 95 to 99, the delta is 32.

Hope this helps.

--Steve

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.