일렉트릭기타 마이너 갤러리
MIDI에 대해 Araboza
0. Musical Instrument Digital Interface.
1. 역사
music V software가 신시사이저의 초석을 다져주긴 했는데, 얘는 분류상 악기라기보다 컴퓨터 언어에 가깝고
최초로 전자악기를 개발한건 로버트 아서 모그라고 이야기함. 트레민이 이보다 좀더 빠르긴 했지만.... 사소한건 넘어가자구해당 앨범 발매 이후 작곡가를 성정환을 했고
죽은 줄 알고 글썼는데 다시 알아보니 살아있어서 내가 글을 다시 쓰고 있다. ㅅㅂ
이후 Arturia에서 소프트웨어로 시뮬레이션하거나 앱스토어에서 복각되면서 나도 핸드폰에 미니무그, 무그55 깔려있는데 쓰는법이 너무 어렵더라같은 시기에 멜로트론같은 샘플러도 나오고, 무그같은 모듈러도 나오면서 전자악기의 시장이 열린게 1960년대의 일이다.
당시 전자악기 경쟁사들도 쟁쟁한데
최초의 디지털딜레이를 개발한 일본 Roland, Korg, AKAI, Yamaha, 최초의 디지털 샘플러를 개발한 Kurzweil (알다시피 미국 기업이지만 영창이 인수했고, 이후 다시 현대에게 인수되었다.) 같은 곳들이 이 시장에 뛰어들었다.미디는 개발 당시에는 Universal Synthesizer Interface라는 이름으로 개발을 시작했으나 이후 프로젝트명을 미디로 바꾸고 미디규격 발표에서부터 현재까지 해당 이름을 유지하고 있다.
그러나 같은해 8월 공식적으로 MIDI 1.0을 발표한 이후에는 그 오명을 씻고 오늘날까지 전자악기와 컴퓨터를 연결하여 미디 시퀀서에서 널리 쓰이고 있으며 심지어 PC뿐만 아니라 공연에 쓰이는 영상, 미디어 기기 연결에도 쓰인다. 그리고 MIDI 2.0이 발표되기까지 37년 걸렸다. 미친놈들
미디가 37년이 지나도록 업데이트 한번 없이 아직도 쓰일 수 있는 이유는 규격을 천편일률적으로 획일화시키지 않고 느슨하고 개방적으로 열어두었기 때문이다. 즉, 업데이트는 하지 않았으나 MMA나 구 JMSC, 현 AMEI 또는 전자악기 개발사들의 협의에 의해 규격이 일부 보완되거나, 데이터 체계의 빈 공간을 자유롭게 사용할 수 있었던 것이다.
또한 미디 규격은 건반악기를 겨냥해 최초 설계되었기 때문에 키보드를 이용한 연결 및 연주가 일반적이다.
2. 미디포트
우선 미디는 직렬Serial 방식이며, Universal Serial Bus와는 달리 단방향 통신이다. 이 말은 데이터를 순차적으로 한 번에 한 비트씩 전송하며, 데이터를 전송하는 기기와 전송된 데이터를 받는 기기 사이에 방향이 존재한다는 뜻이다. 웬만한 디지털 정보통신규격은 대부분 직렬버스고 서버나 가끔 비디오분야에서 쓰이는 SCSI가 내가 아는 유일한 병렬버스 통신규격임
MIDI 연결을 위해서는 사실 핀이 3개만 있으면 연결이 가능하다. 위 그림에서 실질적으로 4번 핀과 5번 핀을 통해서만 데이터가 전송되고 2번 핀은 MIDI Out, MIDI Thru 쪽에 꽂을 때만 케이블의 쉴드와 접지를 연결하는데 쓰이는게 고작이다. 1번 3번핀은 케이블이 단선되거나 심지어 핀이 부러져도 상관없음
케이블은 동축 케이블을 사용하며, Y 케이블은 사용할 수 없다.
연결하고자 하는 장비의 개수가 하나보다 많을 때엔 반드시 MIDI Thru 포트를 이용해 데이지 체인으로 연결해야만 한다. 그마저도 4개째 연결하면 연결끊김. 호엥? 케이블 길이도 이론상 약 15m를 넘기지 않도록 한다.물론 휴대가 가능한 하드웨어가 아니었기 때문에 카페에는 못 들고 간다. 아타리가 없으면 맥북을 먹으면 되잖아?
그 당시의 미디 시퀀서들은 지금과 다르게 미디 정보를 피아노롤이나 악보로 보여주는게 아니라 어떤 음을 몇마디부터 몇마디까지 연주할 것인지 표로 편집하는 형식이었는데 (엑셀로 작곡한다고 생각하면됨) Creator는 Notator로 이름을 바꾸면서 세계최초로 미디 정보를 악보처럼 음표를 그려서 보여주기 시작했다. (Note + creator, note는 영어로 음표라는 뜻이다) 이 혁명 덕분에 Notator는 엄청난 속도로 시장을 지배하기 시작했고 C-Lab의 Notator 개발자는 회사를 나와 Emagic을 설립했다가 C-Lab과의 상표권 분쟁으로 우리가 아는 Logic이라는 이름이 되었다. Logic 5까지는 맥용, 윈도우용도 개발했었으나 애플이 Emagic을 인수하고 Logic 6부터는 윈도우 버전을 단종시켰다.
여기에 Opcode의 Vision, Twelvetone의 Cakewalk (여기저기 인수되면서 난리도 아니다),
MOTU의 Digital Perfomer까지 (현업은 잘 안쓰고 거의 버클리 음대에서만 사용했는데도 점유율이 높았다) 이렇게 DAW 5개가 한때 시장을 나눠먹던 때가 있었다.이 글에서는 DAW라는 용어와 미디 시퀀서라는 용어를 혼용해서 사용하고는 있지만
3. 속도
미디 규격에서 1바이트를 전송하는데에는 대략 320 마이크로초, 약 0.000320초가 소요되며 초당 31.25kb를 전송할 수 있다. 그렇다. 터무니없이 느리다.
이론적으로, 널리 보급된 USB 2.0의 대역폭이 480Mbps, USB 3.0은 5Gbps이며
아까 잠깐 언급한 SCSI가 최대 6Gbps, 오늘날 세계에서 가장 빠른 규격이 된 썬더볼트는 40Gbps라는걸 감안하면
31.25kbps라는 속도는 단위에서부터 이미 아득한 차이를 실감할 수 있다.
이런걸로는 영화 한편 옮기다가 날밤을 까도 모자랄터이다. MIDI Thru 단자를 통한 데이지 체인이 4대를 넘어가게되면 끊겨버리는 이유가 이거다.다만, MIDI 정보는 그리 많은 용량을 차지하지 않는다.
왜냐하면 MIDI는 '악기의 소리'를 전송하지 않기 때문이다.
구체적으로 MIDI가 어떤 정보가 포함되어 있는지 곧 소개할테지만 미디 메시지 하나하나는 고작 2~3바이트에 불과하기 때문에 세션파일이나 프로젝트파일 하나에 모든 미디 정보를 모두 수록하는게 가능하다.DAW를 써봤으면 알겠지만 녹음된 마이크나 기타소리가 들어있는 폴더가 있고 그 상위폴더에 프로그램으로 열어야하는 파일 하나가 있는데 그안에 몽땅 들어가있어도 문제되지 않을정도로 가볍다.
그럼에도 31.25kbps라는 대역폭이 거슬린다면
앞서 주저리주저리 떠든 midi port를 쓰지않고 USB로 연결하는 미디 컨트롤러 (신시사이저든 마스터키보드든 런치패드든)를 쓰면 된다. 그딴건 구시대의 산물이다. 쓸모없는걸 굳이 뭐하러 설명했냐면... 아는척하고싶었기 때문이다.미디는 연결 단자조차도 개방적이다. 그덕에 좀 더 넓은 대역폭을 가진 USB로도 연결할 수 있었다.
참고로 와이파이나 랜선을 통해서도 연결할 수 있는데
공유기에 인터넷을 연결하지 않고 ip주소, MAC주소, 게이트웨이 등을 일일히 넣어줘야한다. 몹시 귀찮
4. 메시지
미디 데이터의 가장 작은 단위는 Message다. Message는 Status byte와 Data byte로 구성되며 Status byte는 1로 시작하고 Data byte는 0으로 시작한다. 이렇게 맨 앞의 비트가 1인지 0인지를 통해 Status byte와 Data byte를 구분하고 이에 뒤이어 따라오는 7개의 비트를 통해 0부터 127까지 (2^7) 값을 표현한다.
Message는 Channel Voice Message, Channel Mode Message, System Common Message, System real-time Message, System Exclusive Message로 구분된다. 어휴 영어많다
하나씩 살펴보자.
5. Channel Voice Message
사용자가 마스터키보드 등으로 연주하는 음악적인 부분에 대한 정보들이다. 건반을 누르면 Note On Message, 건반을 떼면 Note On Message가 입력된다. 이 둘은 서로 짝지어지는게 일반적인데, 현악기나 타악기와 달리 건반악기는 건반을 누르는 동작이 있으면 반드시 같은 건반을 떼는 동작이 존재하기 때문이다. 악기론은 넘어가자.
노트온과 노트오프 메시지는 스테이터스 바이트 이후 뒤따라오는 데이터 바이트가 2개 존재한다. 그중 첫번째 데이터 바이트는 Note Number, 두번째 데이터 바이트는 Velocity의 값을 표현한다.
Note Number는 쉽게 말해 음정이다. middle C(가온다)를 기준으로 60으로 설정하며 여기서부터 1씩 높아지거나 낮아질때마다 1 semitone씩 변화한다. 일반적으로 음악계에서 가온다는 C4지만 MIDI 분야에서는 C4가 아닌 C3를 사용한다. 야마하 영향이다.
왜 C3를 쓰냐면 미디로 연주하고자 했던 건반악기가 실은 피아노가 아니라 오르간이었기 때문이다.
감압센서는 꽤 비싸다. 심지어 그걸 각 건반마다 달아야한다. 건반의 개수는 최대 88개, 게다가 이걸 누르는 센서와 떼는 센서를 따로 달아야해서 176개를 달아야하는데 그러려면 키보드의 가격이 아주아주 비싸지기 때문에 경제적이지 못하다. 감압센서를 사용하는 경우는 나중에 설명할 것이다.
Note off velocity는 감지하지 못하는 컨트롤러가 많고, 사용하지 않는 경우도 많다. 이런 경우는 중간 값인 64를 사용한다. Note on velocity는 반드시 1 이상이어야 연주가 시작되는 것으로 인식하기 때문에 Note on velocity가 0이라면 Note off velocity가 64인 것으로 간주한다.
Control Number는 0부터 127까지가 아니라 0부터 121까지로 제한이 걸려있는데
초기 규격에서는 122 이상의 컨트롤체인지 메시지를 채널모드 메시지로 간주한다.각 브랜드마다 지정한 컨트롤 넘버가 상이한 탓에 다른 브랜드의 컨트롤러는 미디로 연결할 경우 원활한 정보전달이 이루어지지 않았다. 이것도 미디의 개방성 때문이다.
현재는 General MIDI를 통해 대체적인 틀이 제조사 사이에 공유되고 있기 때문에 이러한 사태가 거의 일어나지 않는다.
단, 이것은 강제 규정이 아니기 때문에 제조사에 따라 얼마든지 같은 일이 발생할 수 있다. 그니까 컨트롤러는 그냥 유명한거 써라.Control Value는 휠, 노브, 페이더 등 연속적인 값을 가지는 경우 0~127의 값을 사용하고 스위치, 버튼, 페달같은 불연속적인 값을 가지는 경우 0(0~63=off)과 127(64~127=on)만으로 처리하도록 규정한다. 연속적 컨트롤을 처리하는 경우 7bit가 아닌 14bit의 해상도로 값을 표현할 수 있도록 규격을 개방해놓았지만 거의 사용하지 않는다.
참고로 모듈레이션 휠은 여기에 포함되지만
피치 휠은 아예 다른 메시지로 규정되어 있다. 그래서 여기에 포함되지 않는다.이름이 Musical Instrument 어쩌고인만큼 피아노가 아닌, 건반악기가 아닌 다른 악기들도 연주하고자 하는 경우
Velocity만으로 음의 세기를 표현하는데 어려움이 크다.
부품 가격으로 보나 활용도로 보나 효율성으로 보나 Channel Pressure Message를 사용하는 빈도가 훨씬 높다.
Program Change Message, 얘는 각 0~127의 값에 기록된 프리셋으로 변경하도록 명령을 내린다. 데이터 바이트는 이거 하나인데, 프리셋이 128개보다 많을 경우에는 컨트롤 체인지 메시지를 응용하는 등의 방법으로 해결한다. 대충 뭐냐면 아까 연속적 컨트롤의 Value를 14bit로 사용할 수 있도록 개방해놓았지만 사용하지 않았던 영역을
점유해서 사용하는 방식이다.
물론 음악계에서 Pitch는 cent 단위로 구분한다. 1 semitone = 100 cent Hz로 구분한다고 하더라도 인간은 2^14만큼의 해상도로 Hz 차이를 구분할 수 없다. 피치 휠 메시지는 단지 '피치 휠이 얼만큼 움직였는가'를 측정할 뿐이고 피치가 얼마나 올라가고 내려가는지는 관여하지 못한다.
이것은 미디채널이 입력된 프로그램, 예를 들면 가상악기VSTi, 샘플러, 디지털 신시사이저의 DSP 등에서 연산하며 동일한 메시지 값이라고 하더라도 프로그램에 따라 피치의 변화가 달라진다.
여기까지 설명한 7가지 메시지들이 모두 Channel Voice Message의 일종이다.
6. Channel Mode Message
7. System Common Message
여기에 포함된 메시지는 뭐 연주곡이 바뀌었다는 거, 튜닝 정보 이런것도 있고 (A4=몇Hz로 간주하고 연주하고 있는지의 정보)
중요한건 후술할 System Exclusive Message의 종료를 선언하는 명령이 여기에 포함되어 있다.이게 왜필요한지 이따 설명함
8. System Real-time Message
얘네는 스테이터스바이트가 존재하지 않는다. 따라서 데이터바이트만으로 존재하고 다른메시지 중간에 삽입될 수 있음. ㅗㅜㅑ 대표적으로 트랜스포트 (재생, 일시정지, 정지 등), 그리고 Timing Clock
Pulser Per Quater Note라는게 있는데 4분음표 하나를 해당하는 값만큼 나눠서 그 시간을 가장 짧은 시간 단위로 맞추는 거다. 미디는 악기를 겨냥한 규격이기 때문에 실제 시간에 비례해서 동작하지 않는다. 연주하는 위치가 악보에서 몇마디인지 세어서 동작하고 BPM에 의해 실제 연주 시간이 결정된다.
24PPQN이 지나갈때마다 타이밍 클럭이 1회, 4분 음표가 하나 연주되는 동안 총 40회 전송된다.
시스템 커먼 메시지에서 종료선언 명령이 필요한 이유가 이 때문이다.
종료를 선언하지 않으면 현재 전송되는 데이터 바이트를 모두 하나의 메시지로 간주할 수 밖에 없으니까
한 바이트짜리 ID 번호 중 기타 지역 다음에 3개의 ID 번호가 별개로 지정되어 있는데
이를 Universal System Exclusive Message라고 분류한다.
Non-real-time Universal System Exclusive Message의 경우 일단 SDS이라는게 있다. Sample Dump Standard라는 뜻인데 디지털 오디오데이터, 즉 오디오파일을 전송하는 규격이다.
앞서 말했듯이 미디 규격의 전송속도는 어이가 없을정도로 느리다.
때문에 SCSI로 보조기억장치에 접근하거나 MIDI over Ethernet, 즉 랜선으로 전송한다.이더넷으로 오디오파일을 전송하는 방식은 여러가지가 있는데, macOS의 경우는 Operating System 자체에 해당 기능이 이미 내장되어 있다.
다음으로 MIDI Tuning, 미디 장비 간에 튜닝 정보를 전송하는 규격이고 데이터 바이트 2개를 사용해 0.0061cent 단위로 튜닝 정보를 전송한다. (100/2^14=100/16384=0.00610352)
Real-time Universal System Exclusive Message에는 MTC, MMC, MSC가 있다.
이걸 미디 장비에 적용시킨 형태이다.
한가지 차이점은 MIDI Sync가 마디, 음표 단위로 표현하던 것과 달리
SMPTE는 시:분:초:프레임이라는 실제 시간을 기준으로 표현한다. 니가 본적있는 영화시계다MMC, MIDI Machine Control은 레코더, 플레이어같은걸 조작하는 메시지고 MSC, MIDI Show Control은 무대에서 쓰이는 조명, 음향, 영상, 무대기기, 영사기, 특수효과, 불꽃장치를 조작하는 메시지다.
10. 파일 포맷
확장자는 전통적인 FAT 제어에서의 룰에 따라서 .mid 또는 이에 구애받지 않고 .midi 로 표기하며 Format 0부터 Format 2까지 3가지 포맷이 존재한다.
Format 0은 단일 트랙으로 미디 정보를 묶고 트랙 안에 16개의 미디 채널로 분할한다. Format 1은 여러 트랙으로 구분한다. Format 2는 단일 트랙안에 데이터 블록을 분리한다.
11. 실제 DAW에서 미디 시퀀싱 하는법