In my DDJ-1000 mapping I send the needle angle as a 14-bit message.
In several windows machines this works fine.
In macs, some "ghosts" appear, as shown in this video:
These hapenned in multiple macs already.
The angles very stronlgy suggest that the 14-bit messages are interpreted as 7-bit messages,
as they are on the transition of the most MSB of the 14-bit message:
- 0 degress
- 128 degress
- 256 degress
This is where the LSB would be = 0.
Not looking at hard answers here, but only some oppinions how to improve this.
14 bit CC's are indeed sent as 2 7 bit messages where MSB is the lower CC number and 32 CC's less than the LSB. (IE 0=LSB and 32 is MSB for what is 14 bit CC0)
It is possible that your software is expecting them in a different order. I think the MIDI spec is to send MSB first then LSB. So for CC0 it would be CC0 and CC32 in that order.
In your case, it would be CC20 and 52 in that order.
Not all software follows this convention so it is possible you will need to reverse the order of CC's sent by using a translator to raw MIDI to send in the reverse order that MT Pro sends 14 bit CC's. You would need to use rules assemble the total value into a global variable on incoming and then on outgoing use rules to break them apart in the order your software expects.
Thanks, that is clear.
The documentation is not deep enough to tell if the order of the messages is relevant.
When I rent a mac again I will easily send these 14-bit messages wth MSB/LSB reversed, to see if it fixes the issue.
Another idea is to remove all other traffic, to lower the mesage rate.
I know for a fact that the DDJ-1000 mac driver chokes if I send too many messages.
In windows this is not the case. I can send messages as fast as I can generate them.
Another idea is to to capture the USB data to see if the driver swaps the order by some reason.
update feb 2021:
contrary to what I said, this also happens in windows (besides mac).
I was able to take a screenshoot on one of my videos:
Maybe you can put in a translator to ensure the LSB bit 0 is always a 1 if the problem only occurs if it is set to a 1?
Should be easy enough to do in rules.