Search
Duplicate
🕔

MIDI Data

최종 업데이트
8/2/2021, 11:55:00 AM
Tags
midi data
일시
2021/08/03
작성자
윤현근
포스팅 종류
Empty
✅ main

MIDI란?

악기 디지털 인터페이스(Musical Instrument Digital Interface)는 전자 악기끼리 디지털 신호를 주고 받기 위해 각 신호를 규칙화한 일종의 규약이다. 다시 말해 악기와 컴퓨터, 악기와 악기끼리 주고받을 수 있는 언어와 통로의 신호 체계 표준이라 할 수 있다.(출처: 위키피디아)

MIDI 파일의 구조

MIDI는 크게 1개의 헤더 청크와 n 개의 트랙 청크로 이루어져 있다.
트랙 청크는 연주 되어야하는 음표가 담겨있는 오선지와 같은 역할을 한다. 하나의 곡에서도 악보를 보면 악기, 음자리표 등에 따라 많은 오선지가 필요하다. 따라서 트랙 청크는 n개로 이루어져 있다.
그리고 이러한 트랙 청크의 개수라든지 곡에 대한 설명과 같은 정보가 있는 헤더 청크가 하나 필요하다.
MIDI파일은 가장 앞에 헤더 청크가 있고 그 뒤에 트랙 청크가 배치되는 구조를 가지고 있다.
Chunk Type
헤더 청크 : MThd
트랙 청크 : MTrk
Length
데이터의 길이를 표시
헤더 청크는 데이터가 6 bytes로 고정(format, tracks, division)
트랙 청크는 데이터 길이가 가변
Data
헤더 청크
format : 트랙을 어떻게 해석할지 말해준다. 0, 1, 2 셋중 하나인데 0은 트랙 청크가 하나, 1은 트랙 청크가 둘 이상이고 각 트랙이 동시 연주, 2는 트랙 청크가 둘 이상이고 각 트랙이 독립적임을 의미한다.
tracks : 트랙 청크의 개수를 뜻한다.
트랙 청크
delta_time : 이전 이벤트에서 이 이벤트까지의 경과 시간을 지정하는 값이다.
event : 메타 이벤트, 미디 이벤트, 시스템 이벤트 중 하나로 구성되어 있다.
메타 이벤트 : 0xFF로 시작된다. 악보에 대한 정보만 나타냄으로 컴퓨터가 이해하는 명령이다.
시스템 이벤트 : 0xF0 ~ 0xFE
미디 이벤트 : 0x00~0xEF, 악기 선택, 악보 연주 등에 필요한 것으로 기계로 보내는 명령이다.