midi에서의 음표의 길이 판단
음표의 길이 판단.
1) Time divison
Time divison의 수치는 4분음표(한박자)의 길이 표현하는 수치입니다.
예를 들어 Time divion이 480인 midi가 존재한다면
온음표 = 4분음표 * 4 = 1920
2분음표 = 4분음표 * 2 = 960
4분음표 = 4분음표 * 1 = 480
8분음표 = 4분음표 / 2 = 240
2) 음 시작 및 종료 이벤트
아래의 표와 같이 음의 시작 이벤트는 총 4바이트로 이루어져 있으며 2번째 바이트의 9x(x : Channel Num)로 표현되며 종료 이벤트는 8x로 표현 됩니다.
1byte |
2byte |
3byte |
4byte |
비 고 |
|
Delta Time |
9 |
Channel Num |
Note Num |
Velocity |
Note ON |
Delta Time |
8 |
Channel Num |
Note Num |
Velocity |
Note OFF |
*중복 데이터 생략
Note ON이 발생 후 Note Off가 발생해야 하며 주로 Note ON 발생 후 바로 Note Off가 발생할 일이 빈번한데 Note Off의 2번째 바이트를 생략함으로 8바이트로 표현되는 것을 7바이트로 표현.
ex)
기 존 |
|||
Delta Time |
9 / Channel Num |
Note Num |
Velocity |
Delta Time |
8 / Channel Num |
Note Num |
Velocity |
생 략 |
|||
Delta Time |
9 / Channel Num |
Note Num |
Velocity |
Delta Time |
Note Num |
Velocity |
3) 음 길이 판단
Delta Time |
9 |
Channel Num |
Note Num |
Velocity |
Delta Time |
8 |
Channel Num |
Note Num |
Velocity |
Delta Time |
other MIDI Channel Events |
Delta Time은 이전 이벤트와의 간격을 tick으로 표현함으로써 위의 표에서의 2번째 줄 Delta time은 음 발생과 음 종료시간을 나타내는 음 지속시간이고 3번째 줄은 다음 음의 발생과의 간격이므로 2번째 Delta Time과 3번째 Delta Time을 더해 표현 하여야 함.