Roland GS/SysEx/체크섬
최근 수정 시각 : 2022-10-07 11:59:27
연결 환경에 따라 다르겠지만, SysEx는 대개 상당히 잘 깨집니다. 그래서 잘못된 데이터가 들어오지 않도록 SysEx 데이터 끝자락에 체크섬이 존재합니다.
| F0 | 41 | 10 | 42 | 12 | 40 | 1A | 15 | 02 | SUM | F7 |
이 메시지는 11번 트랙을 드럼 파트 2로 설정하는 SysEx입니다.
여기서 SUM이 체크섬에 해당됩니다.
위의 메시지를 토대로 SUM을 계산해 보겠습니다.
- 1. Address 값(노란색), Value 값(녹색)을 모두 더합니다.
40h + 1Ah + 15h + 02h = 71h - 2. 이 값을 80h(128)로 나누어 나머지를 구합니다.
71h % 80h = 71h - 3. 그 다음 80h(128)에서 뺍니다.
80h - 71h = 0Fh
Excel 또는 호환 스프레드시트 수식
=DEC2HEX(128-MOD(☆,128)) 여기서 ☆은 Address와 Value 값을 모두 더한 값입니다.
PowerShell
PS > '{0:X}' -f (128 - (☆ % 128)) 여기서 ☆은 Address와 Value 값을 모두 더한 값입니다.
Python
def get_sum(carry): ''' carry는 Address와 Value 값을 리스트로 받습니다. 예시 : [0x40, 0x01, 0x30, 0x03] 반환값은 str로 출력됩니다. ''' return hex(128 - (sum(carry) % 128))






