Controlling hardware settings via MIDI - Part 2 of 2
Since on the previous page we figured out how to monitor the data and what is sent, we can now document how it works, and build a reference chart. First, let us re-cap how to build a EWI USB system exclusive message.
Before any sysex is sent to the EWI USB the Aria software seems to send the following NRPN:
63 01 62 04 06 20
I think that's some sort of "unlocking" mechanism to allow sysex to actually write to the EWI, maybe it's a "stop playing while we change values" or perhaps a pointer reset of some sort, or a combination of all the above. After all sysex is sent they send this NRPN...
63 01 62 04 06 10
All EWI USB sysex start with a standard System Exclusive header:
F0 // Start Sysex 47 // Vendor ID 7F // Device ID (this is 00 if being sent FROM the EWI) 6D // Model ID
Likewise all sysex messages end with
F7 // End of Sysex
It's the stuff between those that we need to dig into.
The next word appears to be the starting address - pretty much the same thing as the MSB and LSB on our NRPN chart.
00 // MSB 00 // LSB
Our next byte seems to indicate the amount of data that follows...
06 // Six bytes follow
Then our data starts, in the case of the "setup" Sysex, that goes something like:
40 // Breath Gain 40 // Bite Gain 40 // Bite AC Gain 40 // Pitch Bend Gain 08 // Key Delay 7F // Unknown ???
Which builds our complete messages... Which for "setup controls", aka MSB 00
F0 47 7F 6D 00 00 06 40 40 40 40 08 7F F7
or in the case of the larger "performance/controller settings" MSB 02
F0 F7 7F 6D 02 00 0B 00 00 40 20 02 00 00 7F 00 7C 7D F7
As we determined on the previous page, if we were to send both of those back to back to the EWI, we'd want to use those header and footer NRPN's so a complete SYSex send to the unit is thus:
// sysex enable 63 01 62 04 06 20 // sysex message F0 47 7F 6D 00 00 06 40 40 40 40 08 7F F7 // sysex enable 63 01 62 04 06 20 // sysex message F0 F7 7F 6D 02 00 0B 00 00 40 20 02 00 00 7F 00 7C 7D F7 // sysex done 63 01 62 04 06 10
Which means we just need to know what all those parameters are - after sending data from Aria and monitoring it, I've come up with the following values.
|00||02||Bite AC Gain||00..7F||40|
|00||03||Pitch Bend Gain||00..7F||40|
|02||00||Midi Channel||00..0F||00 (midi channel 1)|
|04 EVI Valve 1|
|05 EVI Valve 2|
|02||02||Transpose*||00..7F||40 (middle C)|
|02||04||Breath CC1||00..7F||02 (CC2/Breath)|
|02||05||Breath CC2||00..7F||00 (Off)|
|02||07||Bite CC1||00..7F||7F (Pitch bend down/up)|
|02||08||Bite CC2||00..7F||00 (Off)|
|02||09||PitchBend UP control||00..7F||7C (Pitch bend up)|
|02||0A||PitchBend Down control||00..7F||7D (Pitch bend down)|
* Care should be taken using transpose, as it's possible to set it to values that could confuse the EWI by making the lowest note playable below 0, or the highest note above 127... It appears to "wrap" at the top and bottom, but given we don't know what it's doing with the "carry" I suggest restricting the value range to 22...5D.
I have made a simplified version of this information available as a pdf.
The unknown values are real head scratchers. They appear to remain unchanged regardless of what you set in Aria... I included them in this chart because that byte value does exist in the system exclusive. I may try sending some random values to that to see what/if it does anything... hopefully I won't brick it in the process.
But if someone else is willing to help with that or wants to tackle it and wants help, feel free to give a holler via our contact form.
-- Jason M. Knight (aka Deathshadow)