Envío de notas MIDI microafinadas a software de audio

Conozco la posibilidad de microafinar softwares como Logic o Pianoteq, conectar un teclado midi normal y poder tocar escalas microafinadas.

Mi pregunta, sin embargo, es si conecto un Teclado Oriental que ya tiene las escalas microafinadas a un software como Reason, ¿saldrían los mensajes midi microafinados automáticamente?

Respuestas (2)

Existe una disposición en el estándar MIDI para enviar y recibir microsintonización, tanto como volcados de datos completos como algunas modificaciones en tiempo real, utilizando mensajes SysEx.

7EH 08 nn es el estándar de afinación MIDI (no en tiempo real) y
7FH 08 nn es el estándar de afinación MIDI (tiempo real)

Personalmente, nunca he usado ninguno de estos, aunque sabía de su existencia, por lo que es posible que se requiera más investigación para ver exactamente cómo se implementan.

La especificación Raw está disponible en MIDI Association: Universal System Exclusive Messages y hay un artículo de Wikipedia al respecto: MIDI Tuning Standard


Más investigaciones parecerían mostrar que algunos instrumentos, específicamente Yamaha, ahí es donde solía trabajar, por lo que todavía tengo personas a las que puedo preguntar, pero una búsqueda en Google muestra que algunos dispositivos Roland también son capaces de usar el ajuste de afinación de escala/octava del GM2 General . Especificaciones MIDI 2 .
Este es capaz de ajustar cada una de las 12 notas en cualquier octava por centésimas, pero se repite lo mismo para cada octava.

Encontré esta guía de datos de un manual de Roland

❍Scale/Octave Tuning Adjust

Status  Data byte                                       Status  
F0H     7EH, 7FH, 08H, 08H, ffH, ggH, hhH, ssH...       F7H

Byte    Explanation
F0H     Exclusive status
7EH     ID number (Universal Non-realtime Message) 
7FH     Device ID (Broadcast)
08H     Sub ID#1 (MIDI Tuning Standard)
08H     Sub ID#2 (scale/octave tuning 1-byte form) 
ffH     Channel/Option byte 1
        bits 0 to 1 = channel 15 to 16
        bit 2 to 6 = Undefined 
ggH     Channel byte 2
        bits 0 to 6 = channel 8 to 14 
hhH     Channel byte 3
        bits 0 to 6 = channel 1 to 7
ssH     12 byte tuning offset of 12 semitones from C to B
        00H = -64 [cents]
        40H = 0 [cents] (equal temperament) 7FH = +63 [cents]
F7H     EOX (End Of Exclusive)

Mirando esa especificación, también parecería ser un subconjunto o una definición más estricta del estándar de sintonización MIDI mencionado anteriormente.

Me las arreglé para encontrar un enlace a toda la especificación de MIDI Tuning Standard en Microtonal Synthesis com , pero, francamente, estoy muy por encima de mi nivel de pago en la totalidad de la estructura.

Lo reproduciré aquí en caso de una futura web-rot

Formatear esto fue una pesadilla y ni siquiera voy a intentar codificarlo correctamente, pero siéntase libre de modificar/arreglar cualquier error encontrado

El estándar de afinación MIDI

El estándar de afinación MIDI fue ratificado por la Asociación de fabricantes de MIDI en enero de 1992. Se debe dar crédito a Robert Rich y Carter Scholz, quienes escribieron y presionaron para esta adición a la especificación MIDI. Los fabricantes tienen la opción de admitir el estándar de afinación parcial o totalmente. Aparece en algunos instrumentos Emu y Ensoniq. Actualmente implementan solo las características que no son en tiempo real del estándar.

Mensajes que no son en tiempo real

Solicite un volcado de afinación masivo de su sintetizador enviando los siguientes códigos:

F0 7E id 08 00 tt F7
donde

F0 7E = Id. de cabecera SysEx universal no en tiempo real
= Id. de dispositivo de destino
08 = Id. secundaria n.° 1 (estándar de sintonización MIDI)
00 = Id. secundaria n.° 2 (solicitud de volcado masivo)
tt = número de programa de afinación 0 a 127 en hexadecimal
F7 = fin del mensaje SysEx

por ejemplo, solicite un volcado masivo del programa de ajuste 16 del dispositivo 1 con el siguiente mensaje:

F0 7E 01 08 00 10 F7

El sintetizador envía el volcado de afinación masivo en el siguiente formato:

F0 7E id 08 01 tt x16 x128 ck F7
donde

F0 7E = Id. de cabecera SysEx universal no en tiempo real
= Id. del dispositivo de destino 08 = Id. secundaria n.º 1 (estándar de sintonización MIDI)
01 = Id. secundaria n.º 2 (respuesta de volcado masivo)
tt = número de programa de afinación 0 a 127 en hexadecimal
tn = nombre de la afinación (16 caracteres ASCII)
xx yy zz = datos de frecuencia para una nota (repetida 128 veces) consulte el formato a continuación
ck = suma de comprobación
F7 = fin del mensaje SysEx

Mensajes en tiempo real

El siguiente mensaje cambia la afinación de una o más notas en tiempo real. El método "preferido" según la especificación es cambiar la afinación inmediatamente para cualquier nota que suene actualmente. El método opcional es cambiar la afinación solo para las notas nuevas que siguen al mensaje de afinación. En realidad, el método preferido depende de lo que el compositor esté tratando de lograr y este autor recomienda un parámetro global en el sintetizador para seleccionar entre la afinación inmediata y la nota nueva solamente.

F0 7F id 08 02 tt ll [kk xx yy zz]x(ll) F7
donde

F0 7F = ID de encabezado SysEx universal en tiempo real
= ID del dispositivo de destino
08 = sub-id #1 (estándar de sintonización MIDI)
02 = sub-id #2 (cambio de nota)
tt = número de programa de afinación de 0 a 127
ll = número de notas a cambiarse (conjuntos de [kk xx yy zz])
[kk xx yy zz] = número de nota MIDI, seguido de datos de frecuencia para la nota
F7 = fin del mensaje SysEx

Programa de afinación y cambios de banco

Los programas de afinación y los bancos se cambian utilizando mensajes de controlador de número de parámetro registrados.

Cambio de programa de afinación

Bn 64 00 65 03 06 tt (entrada de datos)
Bn 64 00 65 03 60 7F (incremento de datos)
Bn 64 00 65 03 61 7F (decremento de datos)
n = número de canal básico
tt = número de programa de sintonización de 1 a 128

Cambio de banco de afinación

Bn 64 00 65 04 06 tt (entrada de datos)
Bn 64 00 65 04 60 7F (incremento de datos)
Bn 64 00 65 04 61 7F (decremento de datos)

n = número de canal básico
tt = número de banco de sintonización de 1 a 128

Formato de datos de frecuencia (todos los bytes en hexadecimal)

xx = semitono (número de nota MIDI para volver a sintonizar, la unidad es 100 centésimas)
yy = MSB de parte fraccionaria (1/128 semitono = 100/128 centésimas = 0,78125 unidades de centésimas)
zz = LSB de parte fraccionaria (1/16384 semitono = 100/16384 centavos = 0,0061 centavos)

7F 7F 7F está reservado para no cambiar la afinación de nota existente

También descubrí que Yamaha crea una aplicación gratuita para iPhone/Pad, Scale Tuner , para ajustar esto sobre la marcha para teclados compatibles. Puede funcionar en otros dispositivos que admitan las mismas especificaciones. Parece que requiere una compra de hardware de conector Lightning/30 pines a MIDI, aunque no rastreé uno de esos específicamente.
Espero que eso no se considere spam incluso si solía trabajar allí. No lo he probado, solo brindo información para los interesados.

Muy interesante. Entonces, el resultado es si uno tiene un controlador de teclado que enviará estos mensajes y un generador de tonos que los interpretará según lo previsto.
@ToddWilcox En gran medida el caso, creo. Lo interesante podría ser averiguar si al menos algunos teclados árabes/asiáticos con afinaciones no occidentales realmente tienen su afinación implementada de esta manera, es decir, transmisible, o si es puramente una característica interna del hardware. Hay alguien a quien puedo preguntar sobre eso. Dejaré otro comentario o agregaré a la respuesta si puedo averiguarlo ...
@Tetsujin Realmente interesante. Sin duda sería muy beneficioso saberlo.
en nakhle & @ToddWilcox: logré encontrar una especificación completa (escrita por personas mucho más inteligentes que yo;) y también una aplicación iOS que puede manejar la estructura de ajuste, agregada para responder.
¡Guau! Eh. Bueno, todavía no he comprado un dispositivo o leído un manual para uno que incluso mencione esto en su tabla de implementación MIDI, mucho menos lo admita, pero nuevamente me he centrado en ciertos tipos de dispositivos compatibles con MIDI, así que quizás algunos de los más los costosos teclados tipo estación de trabajo hacen esto. O, más al punto del autor de la pregunta, quizás los teclados "orientales" hagan esto. Loca. Oh, creo que acabo de recibir tu nombre. Hombre de hierro , ¿verdad? Sí, un poco fuera de tema al azar. Volver a la música.
sobre el tema por un segundo: estaría tentado a decir [sin confirmación, pero sé cómo piensan los ingenieros de hardware, trabajé con ellos durante 10 años] tendría más sentido tener una pieza de hardware con diferentes ajustes predeterminados de firmware por 'mercado tonal' que hacer 2 diseños de hardware, por lo que supongo que se hará con esa especificación, incluso para las cosas baratas. Fuera de tema: sí, ese es mi antiguo apodo japonés, de cuando trabajaba allí, en el Centro de Investigación y Desarrollo, allá por los años 90;)
Roland también tiene una aplicación para iOS, User Scale . ¿Alguien probó estas aplicaciones de ajuste de escala en teclados Yamaha o Roland?

Hasta ahora, según mi experiencia, las afinaciones alternativas son una característica del módulo de sonido, no del controlador MIDI. Tetsujin (ver la otra respuesta) descubrió que hay una especificación para esto, pero que yo sepa, a menudo no es compatible. Puede determinar si un teclado admite esto buscando el manual y buscando el "Cuadro de implementación MIDI", como el vinculado en la otra respuesta. Querría verificar que tanto el teclado que pretende usar pueda enviar estos mensajes como que el generador de tonos/software que desea usar los reciba y reproduzca en la afinación alterada.

Salvo eso, podemos continuar con el texto original de mi respuesta, que ya está en progreso:


Los mensajes MIDI NOTE ON(que son los mensajes que se envían desde un teclado a un generador de sonido para tocar una nota) normalmente solo envían dos valores, la velocidad (qué tan fuerte debe ser la nota) y el número de nota, que es solo de 0 a 127 y no contiene ninguna información de ajuste.

Depende del generador de sonido reaccionar a los números de nota entrantes de la manera adecuada. La respuesta más común de un generador de tonos a un número de nota es tocar una nota de temperamento igual con el timbre apropiado correspondiente al número de nota. Por ejemplo, si su teclado envía un NOTE ONmensaje con la nota número 36, la mayoría de los generadores de tonos reproducirán un C2 temperado.

Es fácil ver cómo los números de nota MIDI en realidad no especifican notas o afinación cuando se usa un módulo de batería que cumple con General MIDI. Si envía exactamente el mismo NOTE ONmensaje con la nota número 36 a un módulo de batería GM, el módulo normalmente reproducirá un sonido de batería de medio tom en lugar de una nota C2. El número de nota es solo un número del 0 al 127. Ni siquiera se usa siempre para tocar notas o sonidos. Muchas personas han programado software como Ableton Live para responder a los números de nota activando bucles o realizando otros cambios en la música que están creando.

Entonces, las afinaciones y las escalas alternativas son creadas por módulos de sonido, no por teclados u otros controladores MIDI.

Hay una forma de hacer que un módulo de sonido temperado reproduzca una afinación alternativa con un controlador MIDI, pero nunca he oído hablar de uno que haga esto. Si hubiera un controlador que le permitiera programarlo para enviar un PITCH BENDnúmero de CC al mismo tiempo que envía un NOTE ONcon los ajustes de afinación apropiados hechos por el PITCH BENDvalor, podría falsificar una afinación alterada.

Hay tantos problemas con esto que no es de extrañar que nadie haya hecho un teclado que lo haga. Primero, la configuración del rango de inflexión de tono en el módulo receptor tendría que establecerse en la cantidad correcta o, de lo contrario, la afinación alterada no sonaría bien. Además, solo puede tocar de forma monofónica, sin acordes, porque el valor de inflexión de tono afecta a todos los tonos simultáneamente.

No estoy seguro de cómo funcionan los teclados orientales, pero ¿y si ellos mismos dividen los tonos aplicando pitch bend? ¿No se enviaría entonces el pitch bend junto con el mensaje "NOTE ON"? Sabemos que esto funciona con ruedas de inflexión de tono, así que ¿por qué no con cuartos de tono? No estoy familiarizado con el mecanismo de los teclados orientales, pero si lo anterior no fuera el caso, vale la pena investigar si los modelos más nuevos han resuelto esto aplicando el cuarto de tono usando la inflexión de tono.
Pitch bend es un mensaje MIDI CC que es un mensaje totalmente separado de NOTE ON. La diferencia con los teclados orientales es que el generador de tonos/módulo de sonido admite afinaciones alternativas, no el controlador del teclado.
El reciente estándar MPE permite a los controladores enviar información de controlador por nota, incluida la inflexión de tono.