Hello everyone,
I'm trying to understand the checksum algorithm for a Nord Lead 3 sysex patch, but I'm having trouble interpreting the documentation.
The documentation states that the patch data is viewed as a bit stream, and that the different parameters use as many bits as necessary for their actual format.
It also says that an 8-bit checksum is calculated over the entire data block, and stored as the last 8 bits of the file.
The documentation goes on to say that the checksum is calculated by adding all data bytes together, and that the bit stream is 8 to 7 bit converted to fit the MIDI format.
Has anyone here worked with Nord Lead 3 sysex before, and can explain the checksum algorithm in more detail? I would really appreciate any help or guidance on this.
Thanks!
Need help with Nord Lead 3 patch checksum calculation
-
- Posts: 2
- Joined: 16 Nov 2022, 13:32
- 2
- Your Nord Gear #1: Nord Lead 3
- Been thanked: 1 time
Need help with Nord Lead 3 patch checksum calculation
- These users thanked the author Renderrocks for the post:
- Mr. Marko
-
- Posts: 517
- Joined: 27 Nov 2018, 18:58
- 5
- Your Nord Gear #1: Nord Stage 3
- Your Nord Gear #2: Nord Lead 3
- Has thanked: 60 times
- Been thanked: 196 times
Re: Need help with Nord Lead 3 patch checksum calculation
Yes, I've decoded and written it successfully using custom parsers in Swift, and Go. It's exactly how it's described: in the sysex dump you get a string of bytes, all with the high bit 0. Take the lower 7 bits of each byte and concatenate them sequentially into a new string of bytes, with the first byte having 7 bits from the first sysex byte and 1 bit from the second, the second byte having 6 bits from the second sysex byte and 2 from the third, etc. The unpacked bytestream is now the actual NL3 patch data, in compact (struct-ish) form.
As for checksum, it's just a running sum into a uint8 (allowing overflow) of each byte in the patch payload. If you can read go, here's a full parser/decoder implemented here, with checksum: https://github.com/malacalypse/go-nordlead3
Out of curiosity, what are you trying to do with it, and for what project? As a MIDI/sysex hacker with an NL3, I'm always interested in seeing what others are doing.
As for checksum, it's just a running sum into a uint8 (allowing overflow) of each byte in the patch payload. If you can read go, here's a full parser/decoder implemented here, with checksum: https://github.com/malacalypse/go-nordlead3
Out of curiosity, what are you trying to do with it, and for what project? As a MIDI/sysex hacker with an NL3, I'm always interested in seeing what others are doing.
Last edited by 23skidoo on 17 Dec 2022, 19:50, edited 2 times in total.
-
- Posts: 2
- Joined: 16 Nov 2022, 13:32
- 2
- Your Nord Gear #1: Nord Lead 3
- Been thanked: 1 time
Re: Need help with Nord Lead 3 patch checksum calculation
I am developing a patch editor and manager in Ctrlr
Thank you for your answer. I will definitely check it out.
Thank you for your answer. I will definitely check it out.
-
- Posts: 190
- Joined: 08 Mar 2009, 19:15
- 15
- Your Nord Gear #1: Nord Stage 3
- Your Nord Gear #2: Nord Modular
- Has thanked: 8 times
- Been thanked: 46 times
Re: Need help with Nord Lead 3 patch checksum calculation
excellent news
NS4 / NS3 / NS-EX / Modular G1 / G2 / G2X / NL3
Basically Too Many Nords to Haul to a Gig
Basically Too Many Nords to Haul to a Gig