Roland GS/SysEx
최근 수정 시각 : 2022-10-06 23:24:15
목차
1. 개요
2. SysEx에 대해
2.1. 직접 해보기
3. Sound Canvas의 SysEx
3.1. 기본 구조
3.2. 체크섬 계산 방법
4. 기본 기능
5. 심화
6. 인서션 이펙트(EFX)
1. 개요
2. SysEx에 대해
2.1. 직접 해보기
3. Sound Canvas의 SysEx
3.1. 기본 구조
3.2. 체크섬 계산 방법
4. 기본 기능
5. 심화
6. 인서션 이펙트(EFX)
1. 개요 ✎ ⊖
GS 포맷의 SysEx 사용 방법을 기재합니다.
※ 이 문서는 16진수를 적극적으로 다룹니다. 문서 이해를 위해서는 관련 지식이 있어야 합니다.
※ SC-8850을 기준으로 합니다. 일부 다른 내용이 있을 수 있습니다.
※ 이 문서는 16진수를 적극적으로 다룹니다. 문서 이해를 위해서는 관련 지식이 있어야 합니다.
※ SC-8850을 기준으로 합니다. 일부 다른 내용이 있을 수 있습니다.
2. SysEx에 대해 ✎ ⊖
MIDI System Exclusive Message
SysEx는 MIDI 규격 메시지 중 하나로 장치 간의 데이터 송수신에 사용됩니다.
데이터의 규격은 제조사, 기기에 따라 다릅니다.
SysEx는 F0으로 시작하고, F7로 끝납니다. 중간에는 데이터 자체가 들어갑니다.
기기에 따라 다를 수 있으나, 데이터 내의 바이트는 7Fh를 넘지 않는 경우가 일반적입니다.
범위가 00h ~ 7Fh라는 점에서 ASCII 코드와 공통점을 갖습니다.
SysEx는 MIDI 규격 메시지 중 하나로 장치 간의 데이터 송수신에 사용됩니다.
데이터의 규격은 제조사, 기기에 따라 다릅니다.
| F0 | DATA | F7 |
SysEx는 F0으로 시작하고, F7로 끝납니다. 중간에는 데이터 자체가 들어갑니다.
기기에 따라 다를 수 있으나, 데이터 내의 바이트는 7Fh를 넘지 않는 경우가 일반적입니다.
범위가 00h ~ 7Fh라는 점에서 ASCII 코드와 공통점을 갖습니다.
2.1. 직접 해보기 ✎ ⊖
| F0 | 41 | 10 | 42 | 12 | 40 | 00 | 7F | 00 | 41 | F7 |
이 메시지는 GS Reset SysEx로, 임의의 악기가 설정되어 있는 상태에서 해당 메시지를 보내면 모두 Piano 1(PC 1, MSB 0, LSB 0)로 초기화됩니다.
SC-8820과 같은 디스플레이가 없는 모델에서는 1번 채널의 악기를 임의로 바꾼 다음 불륨 버튼을 눌러보며 시도하시면 됩니다.
3. Sound Canvas의 SysEx ✎ ⊖
3.1. 기본 구조 ✎ ⊖
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| F0 | 41 | 10 | 42 | 12 | 40 | 01 | 30 | 03 | 0C | F7 |
위는 예시 SysEx로, 리버브 매크로를 Hall 1으로 바꾸는 메시지입니다.
각 바이트는 아래와 같은 속성을 가집니다.
| 번호 | 설명 |
| 1 | SysEx가 시작됨을 표시하는 인디케이터 바이트입니다. |
| 2 | 제조사 ID, Roland이므로 41h입니다. |
| 3 | 기기 ID, 보통 10h입니다. |
| 4 | 모델 ID, 보통 42h이며, LCD를 제어하는 경우 45h입니다. |
| 5 | 커맨드 ID, 송신하는 경우 12h(DT1), 수신을 요청하는 경우 11h(RQ1)입니다. |
| 6~8 | 어드레스, 조작할 설정 데이터의 위치를 의미합니다. |
| 9 | 데이터, 조작할 설정 값을 가집니다. EFX 매크로 지정 등의 상황에서는 데이터가 2바이트 또는 그 이상일 수 있습니다. |
| 10 | 체크섬, 계산 방법은 후술합니다. |
| 11 | SysEx가 끝남을 표시하는 인디케이터 바이트(EOX)입니다. |
3.2. 체크섬 계산 방법 ✎ ⊖
연결 환경에 따라 다르겠지만, SysEx는 대개 상당히 잘 깨집니다. 그래서 잘못된 데이터가 들어오지 않도록 SysEx 데이터 끝자락에 체크섬이 존재합니다.
이 메시지는 11번 트랙을 드럼 파트 2로 설정하는 SysEx입니다.
여기서 SUM이 체크섬에 해당됩니다.
위의 메시지를 토대로 SUM을 계산해 보겠습니다.
Excel 또는 호환 스프레드시트 수식
PowerShell
Python
| 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))
4. 기본 기능 ✎ ⊖
5. 심화 ✎ ⊖
6. 인서션 이펙트(EFX) ✎ ⊖
※ SC-88Pro (LSB 3) 부터 지원됩니다.
자세한 사항은 문서를 참조해 주세요.
자세한 사항은 문서를 참조해 주세요.






