I’ve just successfully added Patch Request rules to my Yamaha TX81Z preset. It was very time consuming to add it, but it really doubles the usefulness of the Electra One and sets it above other hardware controllers. What’s on the Electra One screen is now in sync with the synthesiser, giving full bi-directional control.
I’ve written an ExtendScript program that runs in Photoshop to format the code that can be pasted into the preset file. I know that’s an unusual use for Photoshop, but it’s a dev environment I frequently work in as a graphic designer, and it’s a way of easily accessing the computer file system. Perhaps another developer can adapt it to something more universal like a browser or Node.js for those who don’t have a copy of Photoshop.
The first step was to receive bulk data messages from the synth to test if the SysEx voice bulk dump request was correct. I added a pad to an Electra one preset with the following:
["43", "22", "7E", "4C", "4D", "20", "20", "38", "39", "37", "36", "41", "45"]
This instructs the synth to return the VCED and ACED (Yamaha’s groupings of parameters, short for VoiCe EDit buffer and Additional voiCe EDit buffer) on Midi channel 3. On my MacBook I used SysEx Librarian to record the response.
The TX81Z returns 2 responses to this request, one for the VCED and another for the ACED. The ACED header is:
["43", "02", "7E", "00", "21", "4C", "4D", "20", "20", "38", "39", "37", "36", "41", "45"]
I then took all the HEX codes in the response and pasted them onto a spreadsheet, and labelled the parameters, being sure to include the bit size of each, and the parameter IDs I’d used in my Electra One template.
I discovered that the original manual has many errors which added a lot of confusion! I found a helpful tip on another forum that the manual for the Yamaha V50, a descendent of the DX and TX synths, has more accurate documentation of the TX81Z. I was able to confirm this after recording more tests in SysEx Librarian.
Once the spreadsheet was complete, I exported it as a CSV file, and ran ‘ElectraPatchRequestFormat.jsx’ from Photoshop. This exports JSON files of the response rules in the same location, which looks like this:
"rules": [
{
"bPos": 0,
"byte": 18,
"id": 18,
"msg": "sysex",
"pPos": 0,
"size": 3
},
{
"bPos": 0,
"byte": 8,
"id": 19,
"msg": "sysex",
"pPos": 0,
"size": 3
},
Next is to assemble all the pieces in the preset file in a text editor. In the preset file look for the “devices” node, and paste in the request, response header and rules data:
"devices": [ { "patch": [ {
"request": [-->paste SysEx request here<--],
"responses": [ {
"header" : [-->paste SysEx response header here<--],
"rules": [
{-->paste rule 1 here<--},
{-->paste rule 2 here<--},
{-->paste rule 3 here<--},
{-->paste rule 4 here<--}
]
} ]
} ] } ]
Here’s what some of the TX81Z preset file looks like:
{
"request": ["43", "22", "7E", "4C", "4D", "20", "20", "38", "39", "37", "36", "41", "45"],
"responses": [
{
"header": ["43", "02", "7E", "00", "21", "4C", "4D", "20", "20", "38", "39", "37", "36", "41", "45"],
"rules": [
{"bPos": 0,"byte": 18,"id": 18,"msg": "sysex","pPos": 0,"size": 3},
{"bPos": 0,"byte": 8,"id": 19,"msg": "sysex","pPos": 0,"size": 3}
I’ve included the TX81Z spreadsheets and JSX script in this file:
https://www.urbanspaceman.net/shared/ElectraPatchRequestFormat.zip
Other users can use my spreadsheets and JSX file to help with the data wrangling.