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.
autocorrelate
, ce qui me semble être la note MIDI qui est sortie. Remarquez lemidi2pitch
tableau dans la formule? Si j'ai raison, cela signifie que je n'ai toujours pas labend
valeur ou la valeur réelle de la hauteur pour estimer la valeur de bend, et aucun moyen de les obtenir non plus, sauf si j'ai un fichier MIDI. Un cas simple de trop de variables et trop peu d'équations. Comment puis-je estimer le virage, la valeur de pas réelle etvelocity
dans ce cas?Le MIDI est un protocole qui permet (principalement) aux synthétiseurs de contrôler ou d'être contrôlés par d'autres synthétiseurs ou ordinateurs.
C'est un protocole série qui permet d'échanger des messages tels que "touche C1 vers le haut" "touche D4 vers le bas" "vitesse des touches," changement de son ", etc. De nombreux contrôleurs ont une" molette de pitch "qui est un joystick ou une molette de modulation am. le joueur pour changer interactivement la hauteur de la note en cours de lecture pour créer manuellement un vibrato ou pour "glisser" en continu d'une note à la suivante. Comme cela est souvent fait par les guitaristes en pliant la corde frettée avec leur main gauche, on l'appelle souvent le pitch bending et donc le nom.
Le message MIDI de pitch bend est un moyen de communiquer la quantité de pitch shift qui est censée se produire à un moment donné. Un synthétiseur (logiciel ou matériel) recevant un message de pitch bend est censé changer la hauteur de toutes les notes actuelles jouées de la quantité donnée.
Le message du contrôleur a un argument qui va de -8192 à 8191 et dans les fichiers MIDI standard, il est censé couvrir la plage de -200 cent à 200 cent, où 1 cent est 1/100 de demi-ton, soit un rapport de 2 ^ ( 1/1200) = 1.000577789506555. Exemple: pour créer un décalage vers le bas pour atteindre 93% de la fréquence nominale, la valeur du contrôleur serait
ou -5146 dans ce cas. 0,93 est le rapport que vous voulez, 12 le nombre de demi-tons par octave, 2 la plage de pitch bend max (200 cent ou 2 demi-tons dans ce cas), et log2 () le logarithme avec la base 2.
Cependant, dans la plupart des synthétiseurs, la plage est configurable et ce n'est probablement pas une bonne idée de supposer que tous les synthétiseurs se comportent de la même manière.
Voici un tableau de conversion qui peut vous aider. http://www.elvenminstrel.com/music/tuning/reference/pitchbends.shtml
la source