미디는 서로 연결된 장비들 사이에 메시지를 보내 기기들을 제어하는 표준 규격이다. 이 메시지들은 MP3 같은 실제 음악이 아니라 음악을 만드는 데 필요한 명령어다. '가온 다음을 전자피아노로 재생하라'처럼 말이다.
각 메시지는 1~16 사이의 채널 숫자와 그 뒤에 따라오는 상태 바이트로 구성된다. 상태 바이트는 음 켜기, 음 끄기 등 메시지의 유형 정보가 담겨있으며 필요한 경우 '재생될 음' 등의 데이터가 따라오기도 한다.
미디 기기는 메시지를 만드는 컨트롤러로 인식되며 미디 신디사이저가 이 메시지를 받는다. 그 결과 음악소리가 나온다. 참고로 필자는 음 지시를 악기가 아닌 크리스마스트리 전구와 파이어볼에 전달하는 프로젝트를 수행했었다.
미디의 기본적 셋업에는 아두이노 같은 마이크로 컨트롤러, 물리적 인터페이스인 미디 실드(20달러, sparkfun.com), 그리고 미디 메시지를 이용해 통신하는 데 필요한 아두이노 미디 라이브러리(무료, arduino.cc)가 반드시 포함돼야 한다.
필자의 경우 사운드의 크기, 지속시간 등을 통제하는 제어변환처럼 간단한 기능의 시현을 위해 몇 줄의 스타터 코드를 작성했다.
'Real Time System Exclusive' 메시지를 쓰면 MIDI 타임 코드, 쇼 컨트롤, 머신 컨트롤 등 미디의 발전된 기능에 힘입어 음악 만드는 작업이 더욱 즐거워진다.
상태 바이트 (status byte) - 입·출력 인터페이스와 관련해 입·출력 기기 또는 입·출력 제어 장치의 기본 동작 상태를 나타내는 8비트 정보.
github.com/vinmarshall/MIDI-Examples에 접속하면 더 자세한 정보를 볼 수 있다.