trying to make sense of the vz-8m sysex to see if a electra one patch is possible
i learnt from pete cain, the nice chap that made the only modern vz editor i know available that each parameter needs all patch data in each sysex string… which appears to be a little too much information for the electra
tried with one lengthy string and its crashing my electra
i’ve read that long strings are possible, is this one too long and a vz control from the electra is just not possible? or am i doing something very wrong?
I’m currently working on a preset for the Hohner HS-2/E / Casio VZ-10m, which should work with the VZ-8m as well, I guess…
The receiving part of the preset is almost complete and just needs some minor tweaks. So one can already dump Sysex presets into Electra and all controls will update accordingly.
Indeed, putting a whole Sysex patch together is just too complex for Electra’s JSON. Though, it should be possible doing that in Lua.
The concept would be pretty similar to the one of Pete’s VZ editor: all parameters need to be stored in a table and with some bitwise magic, broken into the required nibbles when sending the data to the VZ.
Furthermore, it needs to utilize Electra’s timer library to make sure to not overwhelm VZ’s MIDI buffer.
Pete is sending the patch update only when a control is released. I believe that exact behavior is hard to replicate in Lua, but slowing down the update frequency is certainly doable.
On the JSON side of the preset all controls are of the type virtual. They are not sending any data but are used only to update the HEX table in Lua.
I’d be happy to share the preset with you once the basic functionality is there. Not sure if I get much done before next weekend…
may I enquire where you are in the VZ preset creation ?
I plan on making one for VZ8M if no functioning exist. Else, we may work on top of what you guys already made?
Indeed, no proof is to be found that parameter changes (expect for some) can be send to or received from the VZ-series. So my plan is to use a timer, with a user definable period (first have to check what threshold does not kill the VZ8 traffic), so that if any control is altered to full sysEx is periodically rebuilt and forwarded to the synth. If nothing happens, nothing gets sent obviously.
Good to here. Know what ?
I’ll be adding stuff gradually. You let me know if it still works on Mk1.
If it does, i’ll drop the previous preset.
If it doesn’t anymore, I’ll keep the last version, marking it as ‘useable on MK1’.
In the meantime I’ve also managed to read the names in case you select an op.mem. It’s curious who much user friendly it already becomes.
My next challenge now is to parse per patch all common parameters (not the ones per module). That will be done via a table I called patchData where all received bytes are stored in the internal Casio format, not in the format Sysex transmitted it.
Using that table, I can now interpret it as explained in Casio’s manual.
Just a heads up; still busy with the original voice patch parsing.
It’s a bit crazy, this sysex implementation. For instance it only uses 4 bits out of each sysex bytes but then formats them as 8 bit bytes in the documentation. SO what ouy see in Midi-Ox is not what you see in the manual.
And then, parameters such as KF pitch level run from 0 to 63, but are stored inverse (63 to 0).
Some others, like the envelope rates, are shown as values 0-99 but actually stored as 7 bit values , thus 0-127. And also, I chose to use the full scale , so 0-99 on Casio display, translates in 0-127 in Casio format, in 2* 0-63 in Sysex, and in 127-0 on the E1
The usual patch parsing methods are hard to use here. All is done in lua.
Once the voice patch parsing is done, I’ll do the voice parameter change transmission, which implies reconstructing the sysex format out of the Casio format.
And once I’m there, I’ll continue with the ‘effects’ which is nothing less than the 2nd part of a voice…
So I’m not yet finished with the first 25%
Great work! I haven’t compared manuals yet, but do you think this will work with the VZ-1/VZ-10M? I think they have twice as many voices (16) so maybe not.
Patch parsing is present on the patch, not yet on the ‘effects’. This version does not allow you to change the sound parameters yet. It only shows them!
Changed Pages
Performance: patch browser + global settings (functional!) + name
Pitch Env: Colours for faster readability:
Sustain step colours blue
End step will hide unused steps
An env level, equal to the previous, colours dark
Rates are shown inverted as time
Pitch KF: Pich Envelope Key Follow settings
A level, equal to the previous, colours dark
Monitor: for debugging purposes
All Modules: on/off, amp sens & env depth in one page
Module specific: all module parameters, except the amp envelope
Goods news : I can get the Casio to respond to parameter changes. @oldgearguy helped me resolve the checksum challenge.
So far, I’ve concentrated on the 7bit parameters that are non-module dependent. It does add code to the preset though, I hope not too much for Mk1. Once all non modular parameters can be controlled, I’ll offer a new version.
Version V3 is out. Hopefully this still works on Mk1, because it starts to open up this beautiful instrument
Exciting : we finally get to manipulate voice data . Right now it’s limited to the overall voice parameters and some module parameters you find on page 8 “Alle Modules”.
Page 7, 9 and 10 are still “display only”.
Let me know if it still works. Some optimization in the code was done but I also needed to add a matrix with fixed data to overcome the Casio sysEx quirks in a handy way. That does eat memory, so hopefully not too much for a Mk1
@kiwigrass You have a VZ-10M you could test with? If so, I’ll try to amend the preset so it works for you too.
Apart from the specific colour scheme used on the lines and waveforms, I have a standard that is also applied here (every now and then an exception notwithstanding):
Sweet! I have loaned my VZ-10M to a friend. Should get it back early in the new year and will check out the compatibility then. I agree that since the 10M also has 8 modules the basic functionality should be the same. It is a synth I had kind of given up on because editing sounds was such a pain. I’m looking forward to using the E1 preset!