미디 말하는 법

Dec 04 2022
원래 이 글을 2019년 5월에 썼는데 예전 웹사이트를 더 이상 사용하지 않고 여기로 옮겼습니다. 즐기다! 목차 부록 I: 채널 모드 메시지부록 II: MIDI 피치 차트부록 III: 표준 CC 지정부록 IV: 뱅크 변경 메시지부록 V: 추가 리소스 MIDI는 오래되었지만 매우 유용합니다.

원래 이 글을 2019년 5월에 썼는데 예전 웹사이트를 더 이상 사용하지 않고 여기로 옮겼습니다. 즐기다!

내용물

  1. MIDI가 무엇인가
    1.1 MIDI가 아닌 것
  2. 작동 방식
    2.1 메시지 분리
    2.2 상태 바이트 및 데이터 바이트
  3. 메시지 유형
    3.1 음표 꺼짐/음표 켜짐(0x8n, 0x9n)
    → 3.1.1 MIDI 피치 번호 정보
    3.2 컨트롤 변경(0xBn)
    3.3 피치 벤드(0xEn)
    3.4 폴리포닉 키 압력 및 채널 압력(0xAn, 0xDn)
    3.5 프로그램 변경(0xCn) )
    3.6 시스템(0xFn)
  4. 16진법에 대하여
  5. 적용 예: 베토벤 교향곡 5번
  6. 보너스 레슨: 실행 상태

부록 I: 채널 모드 메시지
부록 II: MIDI 피치 차트
부록 III: 표준 CC 할당
부록 IV: 뱅크 변경 메시지
부록 V: 추가 리소스

MIDI는 오래되었지만 매우 유용합니다. Guitar Center에서 볼 수 있는 키보드를 구동하고 콘서트¹에서 조명 및 불꽃 같은 것을 제어하며 지난 수십 년 동안 거의 모든 영화의 음악을 연주하는 데 사용되었습니다.

현대 음악가라면 MIDI에 대한 실무 지식이 필수적입니다. 이와 같은 블로그 게시물을 읽는 사람이라면 이미 작업한 경험이 있을 확률이 높습니다. 그러나 그것을 사용하는 방법뿐만 아니라 비트 단위로 읽는 방법을 아는 것이 도움이 된다고 생각합니다. 자신의 MIDI 메시지를 번역하고 조립하는 것이 처음에는 어렵게 들릴 수 있지만 실제로는 정말 쉽고 현대 작곡가에게 중요한 기술이라고 생각합니다. 마이크가 녹음 엔지니어로서 어떻게 작동하는지 아는 것과 비슷합니다.

이 기사는 음악 제작에 적용되는 MIDI 메시지에 대한 포괄적인 소개 및 안내 역할을 합니다. 이 안내서는 MIDI 구성에 대한 자습서 또는 DAW에서 MIDI 편집기를 사용하는 방법에 대한 지침서가 아닙니다 . 그러나 이 가이드는 작곡가를 위한 것입니다. MIDI에 대한 기본 지식이 보다 고급(및 복잡한) MIDI 도구를 알아낼 때 많은 도움이 된다는 것을 알게 될 것입니다. 시작하자.

Prophet 600은 MIDI를 지원하는 최초의 신디사이저 중 하나였습니다.

1. 미디란?

나는 처음부터 가르치는 것을 좋아합니다. 그러나 MIDI가 무엇이고 어떤 역할을 하는지 이미 명확하게 알고 있다면 작동 원리 로 건너뛰어 바로 기본 사항을 살펴보겠습니다. 그렇지 않으면 검토해 보겠습니다.

MIDI는 "Musical Instrument Digital Interface"의 약자입니다. 본질적으로 컴퓨터가 음악 공연을 서로에게 설명하고 전송하는 방법입니다. 사실, 방법 입니다 . 80년대 이후에 태어났다면 아마 지금까지 본 모든 키보드나 드럼 머신이 MIDI를 사용하고 있을 것입니다. 수년에 걸쳐 MIDI를 정비하거나 교체하려는 많은 시도가 있었지만 악기 제조업체와 개발자는 실제로 다른 것을 사용하는 데 관심이 없는 것 같습니다.

MIDI를 사용하여 다음을 수행할 수 있습니다.

  • 음악 공연을 녹음하고 정밀하게 편집
  • 거의 또는 전혀 작업하지 않고 모든 악기에 연주를 "패치"
  • 절차에 따라 성능 생성 또는 순서 변경
  • 단일 연결로 앙상블 연주 편곡
  • 기본적인 믹싱을 수행하고 "자동화"를 완료합니다.

그리고 그것은 점수가 수행 되는 경우입니다 . 80년대의 가상 오케스트라는 우스꽝스러울 정도로 가짜로 들렸지만, 현대 악기는 너무 좋아서 일반 청취자들은 그 차이를 구분할 수조차 없습니다. 그리고 그것은 모든 것을 바꿨습니다. 저예산 영화 및 TV 프로그램에서 사운드트랙은 종종 최종 버전에서 MIDI 오케스트라를 사용하며 청중은 전혀 현명하지 않습니다. 놀랍게도 이러한 도구는 거의 모든 소득 수준의 음악가가 사용할 수 있습니다.

1.1 MIDI가 아닌 것

계속하기 전에 신규 이민자들이 때때로 가지고 있는 몇 가지 오해를 풀고 싶습니다. 오래 걸리지 않을 것입니다.

첫째, MIDI는 음악을 만드는 것이 아니라 다른 장치에 음악을 만드는 방법을 알려줄 뿐입니다. 하지만 다른 일도 할 수 있습니다. 예를 들어, 전문 비디오 소프트웨어에서 MIDI 메시지는 애니메이션 매개변수와 같은 것을 제어하는 ​​데 사용됩니다. 많은 스튜디오 컨트롤 표면은 MIDI를 사용하여 믹싱 소프트웨어를 제어하고 이 화려한 플레이어 피아노는 로봇 액추에이터를 트리거하는 데 사용합니다. 제가 말하고자 하는 요점은 MIDI 데이터가 주로 가상 악기를 제어하는 ​​데 사용되지만 실제로는 무엇이든 사용할 수 있으며 그 자체로는 "사운드"가 나지 않는다는 것입니다.

MIDI 작곡가가 사용하는 도구는 컴퓨터 코드를 시각화하기 쉬운 것으로 추상화합니다. (누엔도 8 스크린샷)

둘째, MIDI 데이터는 단순한 "컴퓨터용 악보"가 아니지만 비유가 유용할 수 있습니다. 서양의 악보는 역사상 가장 표현력이 풍부한 음악을 모두 인코딩한 매체이지만 사실은 해석의 여지가 상당히 많으며 컴퓨터는 모호성을 잘 처리하지 못합니다.

대신 MIDI는 프로그래밍 언어로, MIDI 편집기는 시각적 프로그래밍 환경으로 생각하는 것이 가장 좋습니다. MIDI 편집기는 실제 미화된 디지털 지침 대신 피아노 롤의 모양으로 MIDI 명령을 나타냅니다. 모든 프로그래밍 언어와 마찬가지로 MIDI도 모든 종류의 버그와 결함이 있습니다. 예를 들어, "음표 켜짐" 메시지와 "음표 꺼짐" 메시지가 적절하게 짝을 이루지 않으면 음표는 계속해서 계속 재생됩니다. 컴퓨터는 멈추는 상식이 부족하기 때문입니다.

어쨌든, 나는 이 소개를 쓰는 것에 지쳤습니다. 추상화의 모든 레이어를 벗겨내고 기본적인 수준에서 How To Speak MIDI를 배웁니다.

2. 작동 방식

컴퓨터의 거의 모든 것과 마찬가지로 MIDI는 1과 0으로 요약됩니다. 각 숫자는 비트 ("이진수"의 줄임말) 라고 하며 그 중 8개가 바이트를 형성합니다 . 디지털 피아노를 연주하면 MIDI 메시지가 내부적으로 생성되어 악기의 톤 제너레이터로 전송되어 해석되고 가청 사운드로 변환됩니다. 신호를 살짝 들여다보면 생성된 메시지가 다음과 같을 수 있습니다.

이것은 간단한 MIDI 연주의 이진 형식입니다. 베토벤 5번의 처음 네 음입니다. 이 시퀀스를 녹음하고 전달된 그대로 다른 MIDI 악기에 반복하면 결과는 동일한 성능 사본이 됩니다. 타이밍을 어지럽히면 공연의 속도를 바꿀 수 있습니다. 성능에 대한 다른 모든 것은 데이터 자체에 인코딩됩니다.

요즘 작곡가들이 기본적으로 곡을 시간에 맞춰 전달하는 것으로 귀결되는 것을 만들고, 편집하고, 조정하는 데 시간을 보낸다는 사실을 깨닫는 것은 흥미로운 일입니다. 어쨌든, 한 번에 한 단계씩 이 난장판을 해석하는 작업을 분해해 봅시다.

2.1 메시지 분리

MIDI 메시지에 대해 알아야 할 첫 번째 사항은 메시지가 거의 항상 1바이트 이상에 걸쳐 있다는 것입니다. 256개의 고유한 8비트 숫자만 있고 음악 이벤트와 같은 표현력이 있는 것을 설명하려면 그보다 훨씬 더 많은 정보를 인코딩해야 한다는 점을 고려하면 이는 의미가 있습니다.

따라서 여러 개의 작은 패키지로 된 메시지를 한 번에 받는 경우 한 메시지가 어디에서 끝나고 다음 메시지가 시작되는지 어떻게 알 수 있습니까? 현실적으로 메시지당 예상되는 바이트 수를 알고 있고 맨 위에서 시작하는 경우 전송 중에 손실되지 않는 한 메시지를 구분할 수 있어야 합니다. 그러나 MIDI는 모든 메시지를 분석할 수 있는 확실한 방법을 제공합니다. 즉, 모든 바이트의 첫 번째 비트를 원인에 할당하는 것입니다.

규칙 1: MIDI 바이트의 첫 번째 비트가 1 이면 바이트는 MIDI 메시지의 첫 번째 부분을 표시하는 상태 바이트 입니다. 첫 번째 비트가 0 이면 메시지 본문을 형성하는 데이터 바이트 입니다 .

쉬운. 바이트가 1 로 이어질 때마다 우리는 새 메시지의 시작을 읽고 있다는 것을 알고 첫 번째와 함께 다음 바이트를 해석할 수 있습니다. 이 규칙을 사용하여 위의 MIDI 성능을 개별 메시지로 분류해 보겠습니다.

이제 좀 더 질서 있는 것을 살펴보고 있으므로 몇 가지 패턴이 눈에 띄는 것을 볼 수 있습니다. 한 가지는 각 바이트의 고유한 버전이 두 개뿐이라는 것입니다. 이 메시지가 베토벤 교향곡 5번의 처음 네 음표를 나타낸다는 것을 알면 그 의미를 추측할 수 있습니까?

2.2 상태 바이트 및 데이터 바이트

MIDI 메시지의 상태 바이트는 헤더 역할을 하며 가장 중요한 부분입니다. 메시지의 기능과 다음 데이터 바이트를 해석하는 방법을 알려줍니다. 데이터 바이트가 인코딩하는 내용은 메시지에 따라 다르지만 일반적으로 메시지를 수행하는 데 중요한 정보를 제공합니다. 상태 바이트가 "점프"라고 표시되면 데이터 바이트가 얼마나 높은지 알려줄 수 있습니다.

모든 바이트의 첫 번째 비트는 두 바이트 유형을 구분하기 위해 예약되어 있기 때문에 둘 중 하나에서 사용할 수 있는 비트는 7개뿐입니다. 사용 방법은 다음과 같습니다.

규칙 2: 상태 바이트의 비트 2, 3, 4메시지 유형을 식별합니다 . 비트 5-8은 주소 지정 중인 MIDI 채널을 식별합니다 . 데이터 바이트는 메시지 유형에 따라 다른 기능을 수행합니다.

메시지 유형을 결정하기 위한 3비트와 채널 번호를 위한 4비트는 8개의 개별 메시지 유형과 16개의 가능한 채널이 있음을 의미합니다. 데이터 바이트는 0 에서 127 까지 의 값을 포함할 수 있습니다 . 대부분의 메시지는 2개의 데이터 바이트를 사용하지만 이 숫자는 실제로 메시지의 필요에 따라 다를 수 있습니다. 예를 들어 "프로그램 변경" 메시지는 1데이터 바이트만 필요하고 "시스템 전용" 메시지는 임의의 숫자를 가질 수 있습니다.

이전에 MIDI로 작업한 적이 있다면 이미 MIDI 채널에 익숙할 것입니다. 그렇지 않은 경우를 대비하여 모든 MIDI 연결은 최대 16개의 보이스를 명령할 수 있습니다. 상태 바이트는 4개의 최하위 비트에서 메시지가 주소를 지정하는 채널을 지정합니다.³

3. 메시지 유형

다음 표는 다양한 MIDI 메시지 유형과 데이터 바이트를 사용하는 방법을 식별합니다. 다음 하위 섹션에서 각 항목을 살펴보겠습니다.

3.1 음표 끄기 / 음표 켜기(0x8n, 0x9n)

이들은 MIDI 메시지 중 가장 기초적이며 가장 이해하기 쉽습니다. 음을 연주하고 싶을 때 "음표 켜기" 메시지를 보내고, 끝내고 싶을 때 "음표 끄기" 메시지를 보내십시오. 이러한 메시지는 두 개의 데이터 바이트를 사용합니다. 첫 번째는 제어하려는 피치를 식별하고 두 번째는 속도를 식별합니다. ⁴ 속도가 0인 "음표 켜짐"은 소리가 나지 않으며 "음표 꺼짐" 메시지와 같습니다.

고려 사항:

  • 제로 벨로시티 "노트 온" 메시지의 존재는 "노트 오프" 메시지가 완전히 불필요하다는 것을 의미합니다. MIDI 표준은 구체적으로 "노트 오프" 및 제로 벨로시티 "노트 온" 메시지가 동등하며 동일하게 취급되어야 한다고 명시합니다. 결과적으로 한 장치가 다른 장치와 다르게 노트를 트리거하지 않을 수 있습니다.
  • 송신기는 음을 트리거하지 않는 한 가지 방법만 사용하면 되지만 수신기는 두 가지를 모두 처리할 수 있어야 합니다.
  • 벨로시티 값은 "노트 오프" 메시지에서 별 의미가 없지만 여전히 메시지의 일부이며 전송되어야 합니다. 값은 사용되지 않으며 폐기됩니다.

피치 번호는 기본적으로 일대일로 피아노 건반에 매핑됩니다. 그러나 128개의 가능한 값과 88개의 피아노 키만 있기 때문에 MIDI는 실제로 피아노에서 찾을 수 없는 40개의 반음을 지원합니다. 그 중 19개는 가장 높은 음인 C7 위에 위치하고 나머지 21개는 가장 낮은 음인 A-1 아래에 있습니다. MIDI 피치 범위는 음표 번호 60인 중간 C를 중심으로 합니다.

제조업체가 모두 옥타브 수에 동의하는 것은 아닙니다. 아날로그 음악가들이 사용하는 과학적인 음정 표기법은 피아노에서 가장 낮은 C를 C1 로 식별하여 중간 C를 C4 로 만듭니다 . 반면에 프로그래머는 종종 0부터 세기 시작하므로 가장 낮은 C는 C0 이고 중간 C는 C3 입니다 . 이것이 제가 일반적으로 사용하는 표기법입니다. 제 모든 MIDI 도구에서 사용하기 때문입니다. 그러나 어떤 시스템을 사용하든 Middle C는 항상 음표 번호 60입니다.

부록 II 에서 MIDI 피치 번호로 변환하는 차트를 제공합니다.

3.2 컨트롤 변경(0xBn)

"컨트롤 변경" 메시지는 채널의 연속 컨트롤러를 수정하는 데 사용됩니다 . 연속 컨트롤러는 자동화 레인과 유사합니다. 이를 통해 채널 성능의 다양한 측면을 지속적으로 제어할 수 있습니다.

첫 번째 데이터 바이트는 CC 번호 (0–119) 를 식별 하고 두 번째 데이터 바이트는 값 (0–127) 을 지정합니다 .

고려 사항:

  • 이름에서 알 수 있듯이 연속 컨트롤러 데이터는 연속적이지 않습니다. 자동화가 수행하는 방식으로 값 사이를 매끄럽게 보간하는 대신 CC 레인의 현재 값은 불연속 단계로만 변경할 수 있습니다. 다른 값으로 원활하게 이동하려면 많은 수의 "제어 변경" 메시지를 전송하여 제어된 속도로 값을 늘리거나 줄여야 합니다.
  • MIDI 사양은 대부분의 120 CC가 사용하도록 의도된 용도를 정의하지만 소수 이상의 장치를 관찰하는 장치는 거의 없습니다. 부록 III 에 모든 CC의 표를 제공합니다 .
  • 마지막 8개의 CC 번호 (120–127)는 실제로 CC를 전혀 나타내지 않습니다. 대신 채널 모드 메시지라고 하는 메시지의 특수 범주를 나타냅니다. 채널 모드 메시지는 메시지를 수신하는 전체 장치에 영향을 주는 특수 명령입니다. 실제로는 이에 대해 너무 걱정할 필요가 없지만 부록 I 에서 이에 대한 자세한 정보를 제공합니다 .
  • CC 번호 032는 패치 선택 목적으로 많은 장치에서 사용됩니다. 자세한 내용은 부록 IV를 참조하십시오 .

피치를 위 또는 아래로 구부립니다. 이런.

피치 벤드는 CC처럼 동작합니다. 실제로 대부분의 MIDI 편집기는 Pitch Bend를 다른 CC처럼 취급합니다. 그러나 128개의 가능한 값이 있는 7비트 CC 값은 피치 벤드 효과를 판매하기에 충분한 해상도를 제공하지 않습니다. 우리의 귀는 피치 높이를 해결하는 데 탁월하기 때문에 한 번에 1/128씩 새로운 피치에 접근해도 매끄럽고 유기적으로 들리지 않습니다.

보다 정밀한 해상도를 얻기 위해 "피치 벤드" 메시지는 2개의 데이터 바이트를 사용하여 하나의 큰 값을 전송합니다. 기본적으로 한 메시지의 7비트와 다른 메시지의 7비트를 함께 압축하면 단일 14비트 값을 조합하여 해상도를 2⁷ 또는 128배 증가시킬 수 있습니다.

이제 피치 벤드에 사용할 수 있는 128개의 값 대신 무려 16,384개의 값이 있습니다. 이는 부드러운 피치 벤드 효과를 만들기에 충분한 단계입니다. 오른쪽 절반은 첫 번째 데이터 바이트(최하위 바이트 또는 LSB)에서 제공하고 왼쪽 절반은 두 번째 데이터 바이트(최하위 바이트 또는 MSB)에서 제공합니다.

고려 사항:

  • 피치 벤드의 강도(최대한 피치 벤드가 나타내는 반음의 위 또는 아래)는 악기마다 다릅니다. 종종 구성 가능합니다.
  • 피치 벤드는 8192 에서 "중앙에 위치"합니다 (피치 변화가 없는 경우).
  • 피치 벤드는 CC와 마찬가지로 채널의 모든 재생 음에 영향을 미칩니다.
  • MSB 및 LSB를 사용한 프로그래밍은 비트 연산자를 사용하는 것이 가장 좋습니다. 여기에서는 다루지 않겠지만 더 자세히 알아보려면 부록 V 에서 몇 가지 리소스를 제공했습니다.

Akai MPK225 와 같은 일부 MIDI 컨트롤러에는 애프터터치 라는 기능이 있습니다 . 애프터터치 컨트롤러는 각 키를 누르는 속도뿐만 아니라 키를 누르는 압력에도 지속적으로 민감합니다.

애프터터치는 채널 애프터터치폴리포닉 애프터터치의 두 가지 종류가 있습니다 . 모노 압력 이라고도 하는 채널 애프터터치는 전체 키보드의 압력을 측정하는 반면 폴리포닉 애프터터치는 모든 키에 대한 압력을 독립적으로 측정합니다. 하드웨어 비용이 낮기 때문에 채널 애프터터치가 둘 중 더 일반적입니다. 채널 압력 메시지는 전체 압력 수준을 나타내는 하나의 데이터 바이트만 사용합니다. 다성 키 압력 메시지는 두 가지를 사용합니다. 첫 번째는 피치(표준 피치 번호 사용)를 보고하고 두 번째는 압력을 보고합니다.

고려 사항:

  • 폴리포닉 애프터터치는 각 피치에 대해 독립적으로 설정할 수 있는 유일한 컨트롤입니다. 다른 모든 컨트롤(음표 켜짐 또는 꺼짐 제외)은 전체 채널에 영향을 미칩니다.
  • "MIDI Polyphonic Expression"(MPE)이라고 하는 MIDI의 확장은 CC 및 피치 벤드를 다성적으로 적용할 수 있도록 설계되었습니다. MPE는 그다지 일반적이지 않지만 ROLI Seaboard 와 같은 장치에 의해 대중화되었습니다 . 부록 V 에서 이를 다루는 리소스에 대한 링크를 제공했습니다 .

외부 MIDI 하드웨어를 많이 사용하지 않는 경우 이 메시지 유형을 너무 자주 사용하지 않을 것입니다. "프로그램 변경" 메시지는 장치에 새 프로그램(새 패치 또는 사전 설정)을 로드하도록 명령합니다. 패치의 인덱스를 지정하는 하나의 데이터 바이트만 사용합니다.

이 메시지 유형은 외부 MIDI 장치로 작곡할 때 매우 유용합니다. 하드웨어가 사전 설정을 지원하는 한 프로젝트 또는 세션에서 사전 설정 선택 및 로드를 처리할 수 있습니다. 시작할 때 적절한 "프로그램 변경" 메시지를 순서대로 나열하기만 하면 됩니다.

고려 사항:

  • 128개 이상의 사전 설정이 있는 악기는 일반적으로 여러 뱅크 에 패치를 저장합니다 . 다른 뱅크에 저장된 프로그램을 호출하기 위해 CC의 032는 "뱅크 선택" 메시지로 용도가 변경됩니다. 부록 IV 에서 이것이 어떻게 작동하는지 설명합니다.
  • 프로그램 변경 메시지의 영리한 스케줄링을 통해 단일 장치가 동시에 재생되지 않는 한 하나의 조각에 16개 이상의 서로 다른 패치를 사용할 수 있습니다. 사실이긴 하지만 단일 장치에서 많은 음성을 추출해야 하는 경우 캡처를 별도의 캡처로 분할해야 합니다.
  • Cubase 및 Nuendo는 MIDI 트랙 검사기에서 프로그램 변경 메시지에 대한 기본 지원을 제공합니다. 얼마나 많은 다른 DAW가 이것을 지원하는지 잘 모르겠습니다.

시스템 메시지는 여기에서 다루지 않을 고급 주제입니다. 그들은 정말로 그들 자신의 기사를 받을 자격이 있습니다. 그것들은 모든 종류의 것들에 사용됩니다. 거대한 데이터 전송(" 덤프 "라고 함), 클럭 동기화, 타임코드 전송 등.

앞으로는 시스템 메시지에 대한 가이드를 작성할 수 있지만 지금은 걱정하지 마십시오. 그것들이 존재하며 일반적으로 MIDI 구성에 사용되지 않는다는 점에 유의하십시오.

4. 16진수에 대하여

계속하기 전에 이전 섹션에서 사용한 모든 0x 에 대해 이야기해야 합니다. 접두사 0x는 숫자가 16진수임을 나타냅니다.⁵ 고급 MIDI 도구 및 장치 설명서를 살펴보면 MIDI 메시지가 거의 항상 2진법이나 10진수 대신 16진수로 표시된다는 것을 알 수 있습니다. 처음에는 직관적이지 않은 것처럼 보일 수 있습니다. 이진수를 변환하려는 경우 사람이 읽을 수 있는 10진수로 변환하지 않는 이유는 무엇입니까?

대답은 그것이 더 실용적이라는 것입니다. 바이너리가 MIDI 학습을 시작하는 가장 좋은 방법이라고 생각하지만 실제로 작업하기에는 꽤 번거롭습니다. 8자리에 걸쳐 모든 바이트를 분산하면 읽기와 쓰기가 번거롭고 이진법의 모든 것은 1과 0에 불과하기 때문에 긴 시퀀스를 읽을 때 자리를 잃기 쉽습니다.

이진수에서 비트를 뒤집는 것은 16진수 표현의 한 자리에만 영향을 미칠 수 있습니다.

따라서 비트 프로그래머는 일반적으로 16진수로 작업합니다. 모든 바이트를 두 자리로 줄이고 16은 2의 거듭제곱이므로 변경하는 각 비트는 16진수에서 한 자리에만 영향을 미칩니다. 이를 통해 각 16진수를 고유한 4비트 숫자로 생각할 수 있습니다. 10진수 표현에서 비트 단위로 작업하려면 전체 바이트를 2진수로 변환했다가 다시 역변환해야 합니다.

16진법에서 MIDI로 작업할 때 염두에 두어야 할 몇 가지 사항이 있습니다.

  • 비트가 16진수로 그룹화되는 방식 때문에 오른쪽 16진수만 보고 상태 바이트가 주소 지정하는 MIDI 채널을 알 수 있습니다.
  • 바이트의 왼쪽 숫자가 이하이면 데이터 바이트이고 마찬가지로 이상 0x7으로 시작하는 바이트가 상태 바이트임을 알 수 있습니다 .0x8
  • 최대 데이터 바이트 값인 127은 0x7F 16진수입니다.

5. 적용예: 베토벤 교향곡 5번

이 예제를 마지막으로 중단했을 때 원시 바이너리를 개별 메시지로 분해했습니다. 그것은 다음과 같이 보였다:

랭글링하기 쉽도록 16진수로 변환해 보겠습니다. 상태 바이트는 빨간색으로, 데이터 바이트는 파란색으로 두겠습니다.

지금 우리가 알고 있는 것을 알면 상태 바이트 앞에 있는 0x9와 0x8이 메시지를 각각 "note on"과 "note off"로 식별한다는 것을 인식합니다. 바이트의 오른쪽 숫자는 MIDI 채널 1을 대상으로 하고 있음을 알려줍니다.⁶

변환된 상태 바이트의 성능은 다음과 같습니다.

"note on" 및 "note off" 메시지 유형에서 첫 번째 데이터 바이트는 피치를 인코딩하고 두 번째 데이터 바이트는 벨로시티를 인코딩합니다. 속도 값은 숫자일 뿐입니다. 피치를 파악하려면 MIDI 노트 테이블을 참조해야 합니다 . 그리고 "note off" 벨로시티는 사용되지 않는다는 것을 기억하십시오.

번역을 마치겠습니다.

그게 다야! 이것들은 베토벤 5번의 처음 4개 음을 ​​인코딩하는 변환된 MIDI 명령어입니다. 덤덤덤덤!

지금 알고 있는 것을 알면 일반적인 MIDI 메시지를 손으로 만들고 해독할 수 있습니다. 이제 MIDI 변환기 및 논리 편집기와 같은 고급 도구를 사용할 수 있습니다. 그러나 항상 배울 것이 더 많습니다. 지식에 대한 대식가라면 부록 V 에서 MIDI를 더 공부하는 데 사용할 수 있는 몇 가지 리소스를 제공했습니다 .

6. 보너스 레슨: 실행 상태

일을 단순하게 유지하기 위해 지금까지 언급하지 않은 편리한 바로 가기 MIDI 제안이 있습니다. 작동 방식은 다음과 같습니다. 상태 바이트를 한 번 보내면 마지막 것과 다를 때까지 다른 것을 보낼 필요가 없습니다. 수신된 마지막 상태 바이트는 "켜짐" 상태로 유지되며 뒤따를 모든 데이터 바이트를 해석하는 데 사용됩니다. 이를 실행 상태 라고 합니다 .

다음 바이트 문자열을 고려하십시오.

지금 보고 있는 것은 적용된 예에서 번역한 베토벤 5번과 정확히 동일한 연주이지만 거의 모든 상태 바이트가 누락되었습니다. 그러나 Running Status로 인해 이 성능은 첫 번째와 동일하게 유효합니다. 상태 바이트를 보내면 0x90실행 상태가 되고 뒤따르는 모든 바이트 쌍은 앞에 " 0x90"가 있는 것처럼 처리할 수 있습니다.

이를 통해 반복되는 상태 바이트를 많이 잘라낼 수 있으므로 MIDI 스트림이 크게 단축될 수 있습니다. 컴퓨터가 더 느리고 전송 속도가 더 제한적일 때 이것은 매우 유용했습니다. 그러나 오늘날 컴퓨터는 너무 빨라서 실행 상태를 사용해도 성능이 눈에 띄게 향상되지 않습니다. 그러나 MIDI 프로그래밍을 하고 있는 자신을 발견하면 여기저기서 상태 바이트가 생략되는 것을 볼 준비가 되어 있어야 합니다.

속도가 0인 "음표 켜짐"이 "음표 꺼짐"으로 간주되기 때문에 실행 상태를 중단하지 않고 음표를 시작하고 끝낼 수 있습니다. 적어도 제어 변경이나 메시지를 다른 채널로 보내야 할 때까지는 말입니다.

  1. 이것은 MIDI Show Control이라는 MIDI 확장으로 수행됩니다.
  2. "당신이 보는 것은 당신이 얻는 것입니다".
  3. MIDI 채널 번호는 1부터 시작하지만 여기에서 해당 표현은 0부터 시작합니다. 값 0은 채널 1을 의미하고 값 15는 채널 16을 의미합니다.
  4. 벨로시티는 음을 얼마나 "세게" 치느냐로 생각할 수 있습니다.
  5. 또 다른 일반적인 표기법은 "78H"와 같이 숫자 뒤에 대문자 "H"를 붙이는 것입니다.
  6. 메시지의 숫자가 0이더라도 숫자는 0부터, 채널은 1부터 세기 때문에 채널 1에 해당합니다.

부록 I: 채널 모드 메시지

"채널 모드" 메시지는 MIDI 모드 를 변경하여 전체 장치의 동작을 변경하는 특수 명령입니다 . 음, 일종의.

실제로 "채널 모드" 메시지는 특정 기능을 켜거나 끄고 특정 명령을 보내는 데 사용됩니다. MIDI가 "모드"로 열거하는 것은 본질적으로 Omni 및 Poly 토글의 다른 구성일 뿐입니다. 솔직히 말해서 "모드"는 이러한 명령에 대해 생각하는 매우 적절한 방법이라고 생각하지 않습니다. 하지만 적어도 명령이 무엇을 하는지 설명하겠습니다.

채널 모드 메시지에는 자체 메시지 유형이 없습니다. 대신 마지막 8개의 연속 컨트롤러 번호(CC의 120–127)가 용도 변경되었습니다. 채널 모드 메시지는 다음과 같습니다.

장치가 채널 모드 메시지에 응답하려면 기본 채널 에서 메시지를 수신해야 합니다 . 장치의 기본 채널은 채널 모드 메시지가 유효한 것으로 간주되는 유일한 MIDI 채널입니다. 많은 장치의 경우 이 채널을 구성할 수 있습니다. 이렇게 하면 채널 모드 메시지가 데이지 체인 내의 특정 장치를 대상으로 할 수 있습니다.

다음은 각 채널 모드 메시지에 대한 간략한 요약입니다. 부록 V 에는 추가 학습을 위한 리소스가 포함되어 있습니다.

  • 모든 사운드 끄기("CC" 120): 음 감쇄 및 리버브 효과를 포함하여 악기가 현재 내는 모든 사운드를 차단합니다.
  • 모든 컨트롤러 재설정("CC" 121): 모든 CC, 스위치 컨트롤러, 피치 벤드 및 애프터터치 효과를 기본값으로 설정합니다. 각 컨트롤러가 반환하는 값은 컨트롤러에 따라 다르며 MIDI 사양에 정의되어 있습니다.
  • 로컬 컨트롤("CC" 122): 톤 제너레이터에서 신디사이저의 건반을 분리합니다. 이를 통해 신디사이저를 MIDI 컨트롤러로 사용하는 동시에 시퀀싱할 수 있습니다. 0x00로컬 컨트롤을 끄고 0x7F다시 켜려면 로 설정하십시오 .
  • All Notes Off("CC" 123): "패닉 버튼"입니다. All Notes Off는 모든 채널의 모든 피치에 대해 "note off" 메시지를 보내는 것과 같습니다. 붙어있는 메모를 해결하는 데 편리합니다. 로컬로 트리거된 메모는 영향을 받지 않습니다.
  • 옴니 모드 꺼짐/켜짐("CC's" 124, 125): 옴니 모드가 켜져 있으면 어떤 채널이 상태 바이트에 표시되는지에 관계없이 모든 채널이 모든 인바운드 메시지에 응답합니다.
  • 모노 모드 / 폴리 모드("CC's" 126, 127): 음성을 강제로 단일 음성 동작 또는 다성 동작으로 만듭니다. "모노 모드 켜기" 값을 로 설정하면 0x00기본 채널과 그 위의 모든 채널이 모노 모드로 설정됩니다. 다른 n 값의 경우 n 에서 n+m-1 까지의 채널은 모노 모드로 설정됩니다(여기서 m 은 두 번째 데이터 바이트의 값임). "폴리 모드 켜짐" 메시지는 모든 채널을 다시 폴리 모드로 설정합니다.

부록 III: 표준 참조 할당

MIDI 사양은 여기에서 복사한 CC의 표준화된 사용을 정의합니다. 3, 9, 14, 15, 20–31, 85–90102–119 를 제외한 모든 CC 번호가 정의됩니다 . 가장 널리 지원되는 CC는 Modulation( 0x01), Foot Controller( 0x04), Channel Volume( 0x07), Pan( 0x0A), Expression( 0x0B) 및 Sustain( 0x40)입니다.

이러한 CC에 대해 자세히 알아보려면 부록 V 의 리소스를 확인하십시오 .

부록 IV: 은행 변경 메시지

최신 신디사이저는 단일 프로그램 변경 메시지로 처리할 수 있는 것보다 훨씬 더 많은 사전 설정을 저장하고 호출할 수 있습니다. 이 문제를 해결하기 위해 제조업체는 종종 프로그램을 뱅크 로 분류합니다 . 각 뱅크에는 최대 128개의 사전 설정과 고유한 7비트 또는 14비트 주소가 있습니다.

다른 뱅크에서 패치를 불러오려면 먼저 해당 주소와 함께 "뱅크 선택" 메시지를 보내야 합니다. 그런 다음 평소와 같이 프로그램 변경 메시지를 보내면 로드된 패치가 새 뱅크에서 나옵니다.

아시다시피 이것은 실제로 CC의 032 에 대한 "제어 변경" 메시지입니다 . 7비트 주소의 경우 CC 0 만 사용됩니다. 14비트 주소의 경우 CC 0은 MSB를 나타내고 32는 LSB를 나타냅니다. MSB 및 LSB에 대한 입문서가 필요한 경우 기본 기사의 피치 벤드 섹션 에 있습니다 .

장치가 7비트 또는 14비트 주소를 사용하는지 여부는 일종의 임의적이며 장치와 통신할 때 사용할 주소를 확인하려면 설명서를 확인해야 합니다.

부록 V: 추가 리소스

  • MIDI 협회 : MIDI 협회는 MIDI 기술에 관한 또는 관련된 정보의 주요 저장소입니다. 등록은 무료이며 일단 등록하면 완전한 MIDI 1.0 상세 사양을 여기에서 다운로드할 수 있습니다 .
  • Bitwise Operation (Wikipedia) : 알고 있습니다. Wikipedia는 좋은 기본 리소스가 아니지만 이 기사는 언어 중립적이고 광고가 없기 때문에 마음에 듭니다. MSB 및 LSB로 작업할 때 유용한 산술 비트 이동 및 비트별 OR에 대해 자세히 알아보세요.
  • MPE란 무엇입니까? : Seaboard 제품과 같은 다차원 컨트롤러에서 사용되는 MIDI Polyphonic Expression에 대한 ROLI 지원 데이터베이스의 기사입니다. MPE는 2018년 1월에 MIDI 제조업체 협회에서 공식적으로 채택했으며 사양에 대한 다운로드 링크는 여기에서 사용할 수 있습니다 .
  • MIDI 모드 (Electronic Music Interactive v2, University of Oregon): 이 페이지는 4가지 표준 MIDI 모드에 대한 훌륭하고 간결한 개요를 제공합니다. 전자 음악에 대한 더 긴 온라인 과정의 일부입니다.
  • MIDI CC 목록(Nick Fever) : 더 자세한 설명이 포함된 표준 CC 목록입니다. Nick의 목록을 살펴본 후에도 더 많은 정보가 필요하면 여기에서 다운로드할 수 있는 The Complete MIDI 1.0 Detailed Specification을 참조하십시오 .
  • MIDI 시스템 일반 메시지 , MIDI 시스템 실시간 메시지 및 MIDI 시스템 전용 메시지 (RecordingBlogs Wiki): 각 종류의 시스템 메시지에 대한 훌륭한 소개입니다.
  • MIDI Registered Parameter Number (RecordingBlogs Wiki): CC의 확장으로 생각할 수 있는 Registered Parameter Numbers의 개요입니다. RPN을 이해하면 NRPN(Non-Registered Parameter Numbers)에도 액세스할 수 있습니다.