MIDI Target Manufacturer(s): Roland
We have our first board that needs this fix - Roland SPDX-Pro.
Here is a StreamByter output rule that fixes the checksum for this device. I don't have a five byte device to test against, but this returned correct checksums for my test matrix.
In the MD control SysEx format, select one of the current Roland checksum formats to ensure the message has a checksum. Doesn't matter which as this does a complete checksum recalc. We just need the CS position to exist in the message.
Update - original incorrectly had 12 in ID position five - correct value for SPDX Pro is 16
Paste from line below to bottom in StreamByter output rules
# Temporary fix for Roland five byte device ID checksums
# Red Heron Music
# March 8, 2024
# SPDX Pro sample two byte data message
# F0 41 10 00 00 00 00 16 12 20 00 00 41 V1 V0 Cs F7
# 0 1 2 3 4 5 6 7 8 9 A B C D E F 10 (ML = 11)
# Checksum calculation starts at position M0A, goes to ML - 3, checksum in position ML - 2
# i0 - CheckSum
# i1 - Loop variable
# i2 - Last position
If Load
Alias i0 ChkSum
Alias i1 Loop
Alias i2 Last
End
If M0 == F0 41 10 00 # Roland Device
If M4 == 00 00 00 16 # SPDX Pro, replace 16 for other Roland five byte devices
Ass ChkSum = 0
Ass Loop = 9
Mat Last = ML - 2 # Checksum position
While Loop < Last # we get ML - 3 by using < in test
Mat ChkSum = ChkSum + Mi1 # Loop - alias not allowed on indirect
Mat Loop = Loop + 1
End
Mat ChkSum = ChkSum % 80
Mat ChkSum = 80 - ChkSum
Mat ChkSum = ChkSum % 80
Ass Mi2 = ChkSum # Last - Alias not allowed on indirect
End
End