abl/rb338 -> 777

n303y

Ouwe rot
Lid sinds
1 juli 2007
Berichten
956
Waarschijnlijk onmogelijk maar ik probeer het toch maar:

Is er een manier om abl/rb388 pathes te converteren naar 777 sysex bestanden?
 
Ik heb mij door deze draad laten inspireren om zelf het een en ander uit te vogelen. Ik heb hievoor midi-ox gebruikt en noot voor noot gekeken welke sysex er uit de 777 verstuurd werd. Hels karwij wel maar het lukt wel aardig. Ik kan alleen nog niet achterhalen hoe de checksum wordt bepaald. Ik heb allerlei optellingen geprobeerd maar ik kom er niet uit. Elke pattern/song bank wordt verstuurd in een package (zie bijlage) waarvoor een ckecksum bestaat. Weet iemand hoe ik hieruit de checksum kan herleiden?
 

Attachments

  • package.gif
    package.gif
    15,8 KB · Bekeken: 68
er is een fusion converter Rudo legt het wel uit als je komt hij heeft de converter nooit gebruikt er is een site waar vragen kunnen worden gesteld Fusionzone.
groeten van Rudo
 
er is een fusion converter Rudo legt het wel uit als je komt hij heeft de converter nooit gebruikt er is een site waar vragen kunnen worden gesteld Fusionzone.
groeten van Rudo

Wat heeft fusion hiermee te maken?
 
Jered geeft voor het bepalen van de checksum aan: "Our programmer claims that the checksum is generated by x-oring (exclusive oring)the 597 data bytes."

Als ik iets probeer als onderstaande kom ik nog niet uit op de juiste checksum. Iemand een idee hoe dit werkt?

Foreach byte in array
{
checksum = checksum XOR byte.DecValue
}
 
Oplossing voor de geinteresseerde:

Oplossing voor de geinteresseerde:

Ik heb het probleem gevonden. De sysex specs uit de handleiding bracht mij op het verkeerde spoor. Het encoded datablock is 586 bytes ipv 597 dus het zou moeten zijn:

F0=SYSEX START
07=MFG.ID
01=RECEIVE ID
77=MODEL ID
XX=PACKET COUNT (00-7F)
XX=586 BYTES OF ENCODED DATA
XX=CHECKSUM
F7=SYSEX STOP

waarbij de checksum de XOR is van:

07=MFG.ID
01=RECEIVE ID
77=MODEL ID
XX=PACKET COUNT (00-7F)
XX=586 BYTES OF ENCODED DATA

Daarnaast had ik nog een foutje in mijn lus. De eerste checksum moet namelijk eerst gezet worden met de eerste waarde:

checksum = dataBlock[0]
for(int i = 1; i < dataBlock.Count; i++)
{
checksum = checksum XOR dataBlock
}
 
Back
Top