yep acknowledged lee ,good deduc-ing, busy right now, b back later with more decent input. charles ----- Original Message ----- From: "Lee Borrell" <templarser@...> To: <CZsynth@yahoogroups.com> Sent: Tuesday, August 11, 2009 9:22 AM Subject: Re: [CZsynth] Re: help cz101 bytes sysex breakdown Regardless of the nybble arrangement of the CZ - once the data bytes are in place inside a PC/computer the problem is the whereabouts of the bits,which are sometimes placed across nybbles - deriving the actual value of the parameter should be a matter of using Thong's table of values. Charlie and myself are trying to use GFA basic - but I am unfamiliar with this. I have wrote programs to exploit the PSS series SYSx in Commodore basic - which worked admirably - Yamaha didn't make quite such a mess of the Sysx table and the parameters seem easier to derive. I do not believe that we need formulae for time-wise versions of anything - only the actual decimal data from which to derive the parameters - to be edited - before sending them back to the CZ. I already have a Commodore program which creates random data for the CZ - but this is not very effective. I think with the BYTE not over 15 - this is meaning the HALF bytes (nybbles) which of course never exceed 15 within the header and trailer bytes. Any given byte is therefore Nybble(1)=4 bits=15 + Nybble(2)=4 bits =15 - creating a byte of 8bits= 15+15*16 - getting them in the correct order is a must! Deriving the paramters is thence a matter of masking the bits as per Thongs table. --- On Mon, 10/8/09, steve_the_composer <smw-mail@...> wrote: From: steve_the_composer <smw-mail@...> Subject: [CZsynth] Re: help cz101 bytes sysex breakdown To: CZsynth@yahoogroups.com Date: Monday, 10 August, 2009, 8:42 PM 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 [Non-text portions of this message have been removed] ------------------------------------ Yahoo! Groups Links
Message
Re: [CZsynth] Re: help cz101 bytes sysex breakdown
2009-08-11 by charlie from PARRY
Attachments
- No local attachments were found for this message.