사용자 설명서
MIDI 구문
OnSong은 MIDI 명령을 표현하기 위해 텍스트 기반 구문을 사용합니다. 메타데이터 편집기에서 MIDI 이벤트를 사용할 수 있지만, 텍스트에서 MIDI 명령을 직접 표현할 수도 있습니다.
구분된 값
먼저 여러 MIDI 명령은 다음과 같은 여러 문자로 구분할 수 있습니다: 탭 문자, 쉼표, 세미콜론, 수직 파이프 또는 줄바꿈. 쉼표가 가장 일반적인 구분자입니다. 예를 들어:
1.2:0@0, PC1.2:3@0, N67@1, START, SS8
채널
각 항목에는 @ 기호가 포함될 수 있습니다. 기호 뒤의 숫자 값은 명령이 전송될 채널입니다. MIDI의 채널은 0부터 시작하므로 채널 1은 0(0)이고 채널 2는 1(1)입니다.
@ 기호가 사용되지 않으면 명령은 모든 채널에서 전송되거나 수신됩니다.
접두사
목록의 각 항목에는 접두사가 포함됩니다. 이 접두사는 전송할 MIDI 명령의 유형을 결정합니다. 여기에는 다음이 포함됩니다:
- PC 또는 접두사 없음은 프로그램 변경 이벤트입니다.
- N은 노트 이벤트입니다.
- CC는 컨트롤 변경 이벤트입니다.
- NRPN은 등록되지 않은 매개변수 번호입니다.
- SS는 곡 선택 이벤트입니다.
- START는 시작 명령입니다.
- STOP은 중지 명령입니다.
- CONTINUE는 계속 명령입니다.
- WAIT는 더 많은 이벤트를 전송하기 전에 특정 시간을 기다립니다.
- F0은 SysEx 메시지를 접두사합니다.
- @는 MIDI 전역 태그를 접두사합니다.
값
명령의 값은 @ 기호 바로 앞 또는 @ 기호가 없으면 항목의 끝에 나타납니다. 이것은 접두사를 기반으로 프로그램 변경, 컨트롤 변경, 노트 또는 곡 선택의 값입니다. SysEx 항목의 경우, SysEx의 16진수 값이 모든 SysEx 명령의 헤더로 사용되는 F0 접두사 바로 뒤에 제공됩니다.
부분값
일부 경우에는 추가 정보가 MIDI 명령에 부분값으로 전달됩니다. 예를 들어 MSB 및 LSB, 그리고 컨트롤 값의 속도입니다. 이것은 값 부분에 콜론을 추가하여 표현됩니다. 부분값은 전송되는 MIDI 명령의 유형에 따라 다른 컨텍스트를 갖습니다:
- 프로그램 변경은 프로그램 변경의 MSB/LSB에 맞춰진 부분값을 갖습니다. 이 값들은 마침표로 구분되며 왼쪽에 MSB가 있고 오른쪽에 LSB가 있습니다.
- 컨트롤 변경은 이것을 사용하여 설정된 컨트롤의 값을 갖습니다. 숫자는 0~127 사이일 수 있습니다. 생략하면 127 값이 추론됩니다. 하이픈으로 여러 값을 구분하여 값을 단계별로 진행할 수도 있습니다. 예를 들어 127-0은 127의 값을 켜짐 및 꺼짐 상태 사이에서 래치합니다.
- 노트 이벤트는 노트를 재생할 속도와 관련된 부분값을 갖습니다. 이것을 0~127 사이의 숫자 값으로 설정할 수 있습니다. 하이픈으로 분리하여 여러 노트 속도를 단계별로 진행할 수 있습니다.
예제
간단한 프로그램 변경부터 시작해봅시다. 이 시나리오에서는 채널 1에서 MSB 4 및 LSB 2도 전송하는 프로그램 변경 8을 사용합니다. 예제는 이 변형의 가장 복잡한 버전부터 시작하고 은행 선택 및 채널을 제거하여 더 광범위해집니다:
PC3.1:7@0, 3.1:7@0, 3:7@0, 3:7, 7@0, 7
컨트롤 변경은 구문의 왼쪽이 컨트롤 변경 번호이고 오른쪽이 선택적 값이라는 점을 제외하고는 유사합니다. 값이 제공되지 않으면 127이 대신 전송됩니다. 채널 3에서 컨트롤 변경 106을 값 64로 전송합니다.
CC105:63@2, CC105:63. CC105@2, CC105
이제 노트 이벤트를 살펴봅시다. OnSong이 MIDI C0을 MIDI 음표 눈금에서 0으로 계산하기 시작하므로 채널 8에서 C4를 75% 속도로 재생하려면 다음을 입력합니다:
N60:95@7, N60@7, N60:95, N60
다시 한 번 강조하지만, MIDI 구문에서 값이 제거될수록 MIDI 문은 더 광범위해지고 덜 구체적이 된다는 것을 기억하는 것이 중요합니다. 예를 들어 노트 이벤트의 마지막 버전은 C4를 모든 채널에서 100% 속도로 전송합니다.
WAIT 명령을 추가하여 MIDI를 지연시킬 수도 있습니다. 다음은 MIDI를 2초 및 500ms(반 초)만큼 지연시킵니다. 초는 1~10초 또는 밀리초로 지정할 수 있습니다.
WAIT2, WAIT500
마지막으로 미리 구성된 MIDI 이벤트 목록인 MIDI 전역을 참조할 수 있습니다. "on"을 태그로 하는 MIDI 전역이 있으면(따옴표 없음) 다음을 사용하여 해당 전역을 참조할 수 있습니다:
@on