Yahoo Groups archive

Casio CZ/ VZ/ FZ - Pro Series

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

Message

Re: [CZsynth] Re: help cz101 bytes sysex breakdown

2009-08-10 by charlie from PARRY

hi steve , somebody off the list has already made me aware that these 256
bytes i get from the cz101 need merged to form 128 bytes  which form larger
numbers .. i am always gung -ho  to embark on my programming

what i what to do is find how the data is split , from 128 bytes into 256 ..
thongs memo said  that 5f  is sent 0x0f 0x05 but  this now means i have to
shift my area of focus from deciphering sys ex into writijng an algo that
splits hex numbers from alpha representation ..

any sence yet?

charles

----- Original Message -----
From: "steve_the_composer" <smw-mail@...>
To: <CZsynth@yahoogroups.com>
Sent: Monday, August 10, 2009 12:42 PM
Subject: [CZsynth] Re: help cz101 bytes sysex breakdown


> 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
>
>
>
> ------------------------------------
>
> Yahoo! Groups Links
>
>
>
>

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.