For example, let’s consider Transpose, Tune and Freq. offset here. Korg seems to expect applying two’s complement at 8 bits always, since they equate -12 to F4, -50 to CE and -100 to 9C (offset moves by 0.1hz so there are 100 divisions). If I am able to get two’s complement at 8 bits, then I can apply the value format logic given above, split it into two bytes and send it across.
But, Electra seems to deal with two’s complement only to up to the number of bits needed to represent the negative number. For example, two’s complement of -12 needs 5 digits (at least). And so, E1 seems to convert -12 as just 10100. In this case, Korg actually needs 11110110.
Is there any clever way in which I can manage to derive what Korg wants from what E1 gives? Or does this need an enhancement to E1’s two’s complement logic to also ‘ask’ for a number of bits property?
I am hoping there is a way or else I am probably gonna have to give up on my Korg EXB MOSS for the time being since it deals with ton of modulation properties which all have negative and positive values.
@shankar your explanation is perfectly clear, Also, your observation is correct. Up to firmware 1.5 Electra calculated the sign bit position dymamically based on the range. It worked with the devices I worked with. @jigdagod later reported the same issue as you have with the Hydrasynth.
I added the bitWidth attribute that tells Electra where sign bit should be placed. This attribute is available in the upcoming firmware release. You can either test it with the beta release available at New ElectraOne console / Testing needed or wait couple of days. As mentioned in some other thread the new firmware goes out soon.
I tested the bitWidth feature with the beta release and beta editor. I definitely see the behavior change, but it looks like the bitWidth logic is internally capped at 7 bits. For example, I get 1001110 for -50 and 1110100 for -12 even if I set bitWidth to 8 or 9. Could you please check if you see this as well?
I checked bitWidth in 1.5.11 as well. Same issue as I mentioned in the post above. It seems like the value is capped at 7 bits. So, where I expect CE, I get 4E and where I expect F4, I get 74 etc. When you get a chance, please take a look .
The data midi bytes (as opposite of status bytes) are limited to to 7bits (0 … 127) In your example, the CEh cannot be transferred as a data byte. so while electra has the value CEh you need to use rules to split it into two bytes LSB: 4Eh and MSB: 01h and place them to correct positions of the sysex messages. I hope you catch my drift.
Works like a charm! Time to finish sysex for all the remaining controls . Gonna bother you again about the patch reading issue. If that’s taken care of as well, I think I will have a fully functional MOSS preset