Au cœur du MIDI se trouve une représentation de la musique comme des événements de notes discrètes, chacune ayant une hauteur statique. C'est parfait pour représenter la musique jouée sur des instruments à clavier. Vous pouvez convertir n'importe quelle fréquence correspondant à une note sur l'échelle tempérée en un numéro de note MIDI, en utilisant:
69 + 12 × log2Fr e qu e n c y440
Dans l'hypothèse où le récepteur MIDI est calibré pour A4 = 440 Hz.
Cette représentation est correcte pour la musique de piano, mais le problème est de savoir comment représenter des hauteurs qui ne sont pas mappées à l'échelle tempérée (musique non occidentale, sons non musicaux), et comment représenter les variations de hauteur sur la durée d'une note (glissando, vibrato).
Cela se fait en MIDI en utilisant des "messages de pitch bend" qui demandent au synthétiseur de décaler la hauteur de la note actuellement jouée d'un petit intervalle. La plupart des synthétiseurs sont calibrés par défaut pour +/- 2 demi-tons au cours de la plage de messages de pitch bend (0 .. 16383). 8192 correspond à aucun pitch bending - la hauteur émise est exactement celle de la valeur de note. La correspondance entre la valeur de pitch bend et le rapport de décalage de fréquence est donnée par:
Fe m i t t e d_ N o t eFn o t e _ m e s s a ge= 2p i t c h b e n d- 81924096 × 12
Vous pouvez ainsi obtenir la fréquence d'une note jouée par un synthétiseur à partir de la formule suivante:
440 × 2n o t e - 6912,0+ p i t c h b e n d- 81924096 × 12
Où note est le numéro de note MIDI 7 bits du dernier message Note On reçu ; et pitchbend est la valeur de 14 bits du dernier message Pitch bend reçu . Un synthétiseur démarre avec son registre de pitch bend réglé sur 8192, et cette valeur est également réinitialisée lors de la réception d'un message "Réinitialiser tous les contrôleurs".
Prenons l'exemple suivant. Vous voulez exprimer un trille de flûte avec la trajectoire de fréquence suivante: 500 Hz, 510 Hz, 500 Hz, sous forme de messages MIDI.
Le numéro de note de base est:
r o u n d( 69 + 12 × log2( 500 / 440 ) ) = 71
Vous envoyez donc un message "note sur" avec une note # égale à 71. Cela équivaut à une hauteur de:
440 × 2( 71 - 69 ) / 12= 493,88
Quelle est la hauteur la plus proche sur l'échelle tempérée. Vous devez envoyer un message de pitch bend pour augmenter la hauteur d'un facteur de:
500493,88= 1,0124
Et obtenez votre 500 Hz. La valeur de pitch bend correspondante est:
r o u n d( 8192 + 4096 × 12 × l o g21.0124 ) = 9065
Pour obtenir votre 510 Hz, la valeur du pitch bend serait:
r o u n d( 8192 + 4096 × 12 × l o g2510493,88) = 10469
Votre séquence de messages MIDI pour 500, 510, 500 Hz serait donc:
- NOTE 71
- PITCH BEND 9065
- ...
- PITCH BEND 10469
- ...
- PITCH BEND 9065
Vous pouvez considérer le numéro de note MIDI comme la partie «intégrale» de la hauteur; et le pitch bend en tant que partie "fractionnelle" redondante du pitch.