MIDI의 핵심은 음악을 개별 음표 이벤트로 표현한 것입니다. 키보드 악기에서 연주되는 음악을 표현하는 데 적합합니다. 다음을 사용하여 템퍼링 된 음계의 음표에 해당하는 주파수를 MIDI 음표 번호로 변환 할 수 있습니다.
69 + 12 × 로그2에프r e qu e n c y440
MIDI 수신기가 A4 = 440Hz에 대해 보정되었다는 가정하에.
이 표현은 피아노 음악에는 문제가 없지만 문제는 템퍼링 된 음계 (비 서구 음악, 비 음악 사운드)에 매핑되지 않은 피치를 표현하는 방법 및 음이 지속되는 동안 피치 변화를 표현하는 방법 (리산도, 비브라토).
이것은 "피치 벤드 메시지"를 사용하여 MIDI에서 수행됩니다. "피치 벤드 메시지"는 신디사이저가 현재 연주되는 음의 피치를 작은 간격으로 이동하도록 지시합니다. 대부분의 신디사이저는 기본적으로 피치 벤드 메시지 범위 (0 .. 16383) 동안 +/- 2 반음에 대해 보정됩니다. 8192는 피치 벤딩이 없음에 해당합니다. 방출 된 피치는 정확히 음표의 피치입니다. 피치 벤드 값과 주파수 편이 비율 사이의 매핑은 다음과 같습니다.
에프e m i t t e d_ n o t e에프N O t의 E _ m의 E S S g이자형= 2p i t c h b e n d− 81924096 × 12
따라서 다음 공식에서 신디사이저가 연주하는 음표의 주파수를 얻을 수 있습니다.
440 × 2n o t e - 6912.0+ p i t c h b e n d− 81924096 × 12
여기서 note 는 마지막으로 수신 한 Note On 메시지 의 7 비트 MIDI 노트 번호입니다 . 및 피치 벤드는 마지막 수신 된 14 비트 값이다 피치 벤드 메시지. 신디사이저는 피치 벤드 레지스터가 8192로 설정되어 시작되며이 값은 "Reset all controllers"메시지를 수신하는 동안 재설정됩니다.
다음 예제를 보자. MIDI 메시지로 500Hz, 510Hz, 500Hz의 주파수 궤적을 사용하여 플루트 트릴을 표현하려고합니다.
기본 메모 번호는 다음과 같습니다.
r o u n d( 69 + 12 × 로그2( 500 / 440 ) ) = 71
따라서 note #가 71 인 "note on"메시지를 보냅니다. 이는 피치가 다음과 같습니다.
440 × 2( 71 − 69 ) / 12= 493.88
강화 스케일에서 가장 가까운 피치입니다. 피치를 다음과 같이 높이려면 피치 벤드 메시지를 보내야합니다.
500493.88= 1.0124
그리고 당신의 500Hz를 얻으십시오. 해당 피치 벤드 값은 다음과 같습니다.
r o u n d( 8192 + 4096 × 12 × L O g21.0124 ) = 9065
510Hz를 얻으려면 피치 벤드 값은 다음과 같습니다.
r o u n d( 8192 + 4096 × 12 × L O g2510493.88) = 10469
따라서 500, 510, 500 Hz의 MIDI 메시지 시퀀스는 다음과 같습니다.
- 비고 71
- 피치 벤드 9065
- ...
- 피치 벤드 10469
- ...
- 피치 벤드 9065
MIDI 음표 번호를 피치의 "적분"부분으로 생각할 수 있습니다. 피치는 피치의 중복 "분수"부분으로서 구부러진 다.