En el núcleo de MIDI hay una representación de la música como eventos de notas discretas, cada una de ellas con un tono estático. Esto es perfecto para representar la música que se toca en los instrumentos de teclado. Puede convertir cualquier frecuencia correspondiente a una nota en la escala templada en un número de nota MIDI, utilizando:
69 + 12 × log2Fr e qu e n c y440
Bajo el supuesto de que el receptor MIDI está calibrado para A4 = 440 Hz.
Esta representación está bien para la música de piano, pero el problema es cómo representar los tonos que no están asignados a la escala templada (música no occidental, sonidos no musicales), y cómo representar las variaciones de tono durante la duración de una nota (glissando, vibrato).
Esto se realiza en MIDI mediante el uso de "mensajes de inflexión de tono" que le indican al sintetizador que cambie el tono de la nota actualmente reproducida en un pequeño intervalo. La mayoría de los sintetizadores están calibrados por defecto para +/- 2 semitonos en el transcurso del rango de mensajes de pitch bend (0 .. 16383). 8192 corresponde a no doblar el tono: el tono emitido es exactamente el del valor de la nota. El mapeo entre el valor de pitch bend y la relación de desplazamiento de frecuencia viene dado por:
Fe m i t t e d_ n o t eFn o t e _ m e s s a gmi= 2p i t c h b e n d- 81924096 × 12
De este modo, puede obtener la frecuencia de una nota tocada por un sintetizador a partir de la siguiente fórmula:
440 × 2n o t e - 6912,0+ p i t c h b e n d- 81924096 × 12
Donde note es el número de nota MIDI de 7 bits del último mensaje Note On recibido ; y pitchbend es el valor de 14 bits del último mensaje Pitch bend recibido . Un sintetizador comienza con su registro de pitch bend establecido en 8192, y este valor también se restablece durante la recepción de un mensaje "Restablecer todos los controladores".
Tomemos el siguiente ejemplo. Desea expresar un trino de flauta con la siguiente trayectoria de frecuencia: 500 Hz, 510 Hz, 500 Hz, como mensajes MIDI.
El número de la nota base es:
r o u n d( 69 + 12 × log2( 500 / 440 ) ) = 71
Entonces envía un mensaje de "nota sobre" con nota # igual a 71. Esto es equivalente a un tono de:
440 × 2( 71 - 69 ) / 12= 493,88
Cuál es el tono más cercano en la escala templada. Debe enviar un mensaje de inflexión de tono para aumentar el tono por un factor de:
500493,88= 1.0124
Y obtén tus 500 Hz. El valor de pitch bend correspondiente es:
r o u n d( 8192 + 4096 × 12 × l o g21.0124 ) = 9065
Para obtener sus 510 Hz, el valor de pitch bend sería:
r o u n d( 8192 + 4096 × 12 × l o g2510493,88) = 10469
Entonces su secuencia de mensajes MIDI para 500, 510, 500 Hz sería:
- NOTA 71
- PENDCH BEND 9065
- ...
- CURVA DE ALCANCE 10469
- ...
- PENDCH BEND 9065
Puede pensar en el número de nota MIDI como la parte "integral" del tono; y el pitch bend como una parte "fraccional" redundante del pitch.
autocorrelate
, que me parece que es la nota MIDI que se emite. Observe lamidi2pitch
matriz en la fórmula? Si tengo razón, eso significa que todavía no tengo elbend
valor o el valor real del tono para estimar el valor de plegado, y tampoco hay forma de obtenerlos a menos que tenga un archivo MIDI. Un caso simple de demasiadas variables y muy pocas ecuaciones. ¿Cómo calculo la curva, el valor de tono real y elvelocity
en este caso?MIDI es un protocolo que permite (principalmente) sintetizadores controlar o ser controlados por otros sintetizadores o computadoras.
Es un protocolo en serie que permite intercambiar mensajes como "tecla C1 arriba", "tecla D4 abajo", "velocidad de la tecla," cambio de sonido ", etc. Muchos controladores tienen una" rueda de tono "que es un joystick o una rueda de modulación. el jugador debe cambiar interactivamente el tono de la nota actual que se está tocando para crear manualmente el vibrato o para "deslizarse" continuamente de una nota a la siguiente. Como esto suele hacer los guitarristas doblando la cuerda con su mano izquierda, a menudo se llama inclinación de tono y de ahí el nombre.
El mensaje MIDI bend bend es una forma de comunicar cuánto cambio de tono se supone que sucederá en un momento dado. Se supone que un sintetizador (software o hardware) que recibe un mensaje de inflexión de tono cambia el tono de todas las notas actuales que se reproducen en la cantidad dada.
El mensaje del controlador tiene un argumento que va de -8192 a 8191 y en los archivos MIDI estándar se supone que cubre el rango de -200 ciento a 200 centavos, donde 1 centavo es 1/100 de semitono, es decir, una relación de 2 ^ ( 1/1200) = 1.000577789506555. Ejemplo: para crear un cambio de tono hacia abajo para llegar al 93% de la frecuencia nominal, el valor del controlador sería
o -5146 en este caso. 0,93 es la relación que deseas, 12 el número de semitonos por octava, 2 el rango máximo de inflexión de tono (200 centavos o 2 semitonos en este caso) y log2 () el logaritmo con base 2.
Sin embargo, en la mayoría de los sintetizadores, el rango es configurable y probablemente no sea una buena idea suponer que todos los sintetizadores se comportan igual.
Aquí hay una tabla de conversión que puede ayudar. http://www.elvenminstrel.com/music/tuning/reference/pitchbends.shtml
fuente