Convertir midi a midi

JavierE
#1 por JavierE el 12/03/2020
El título parece absurdo, pero me está costando encontrar la respuesta y agradeceré cualquier pista que podáis ofrecerme.
Hay aparatos midi que en algún punto no siguen el protocolo General Midi, sino que utilizan un sistema exclusivo, y generan archivos midi que otros aparatos pueden no reconocer.
Yo utilizo “MidiYodi” para reproducir archivos midi. Este programa tiene un editor de eventos midi (adjunto dos ventanas que corresponden a dos archivos midi distintos) donde se puede observar la diferencia a la que me referiré.
En las dos ventanas el evento activar nota es (“Note on”) [utilizaré el paréntesis para mostrar más claro que es una instrucción]. Sin embargo, el evento desactivar nota en un caso es (“Note off”) y en el otro caso es (“Note on” con valor 0).
Las ventanas muestran dos listas de eventos de dos archivos midi distintos; uno con (“note off”) y el otro con (“Note on” con valor 0).
Muchos ficheros midi bajados de internet son del tipo (“Note on” con valor 0) y funcionan sin problema en muchos dispositivos, pero yo necesito que el archivo midi sea del tipo que la nota se desactiva con (“Note off”), porque me viene exigido por un dispositivo que utilizo.
En este dispositivo particular, las notas se activan con el (“Note on”), pero no se apagan porque el (“Note on”) no encuentra después el correspondiente (“Note off”); la reproducción se queda colgada y suena sin parar: los sonidos se acumulan unos encima de otros; porque las notas se activan, pero no se desactivan.
Mi pregunta es ¿cómo se puede pasar un archivo midi del tipo (“Note on” con valor 0) al tipo midi en el que la nota se desactiva con la instrucción (“Note off”)? Es decir, necesito convertir los (“Note on” con valor 0) en (“note off”).
He conseguido hacer esa conversión abriendo el midi en un DAW y volviendo a guardar; también lo he conseguido abriendo el midi en un editor de partituras (Finale) y volviendo a guardar, pero aparte de lo trabajoso que resulta, arrastra algunas deficiencias que, si no hay más remedio, podrían ser tolerables.
Me he alargado un poco, pero he procurado explicarme bien. Gracias de antemano por vuestro interés.
Archivos adjuntos ( para descargar)
Doc4.docx
Subir
pablofcid mod
#2 por pablofcid el 13/03/2020
Eso que haces es lo más sencillo y económico. Lo de note on con velocidad 0 forma parte del estándar MIDI desde el principio. El fallo es de quien no atiende esa parte de la especificación y no hace caso al note on vel 0 como equivalente del note off.
¿Puedes indicarnos qué equipo es? Sería interesante. Quizá haya un upgrade oficial o extraoficial.
Si a toda costa quieres resolverlo por hardware en tiempo real hay alguna posibilidad pero es coste y complicaciones, como Bome Box si la programas adecuadamente. Y seguramente haya alguna utilidad lista para resolverlo.
Danos alguna pista más detallada por si podemos ayudar mejor.
Subir
RaulMX
#3 por RaulMX el 13/03/2020
Si ya usaste la opcion del DAW o editor de partituras, entonces necesitaras un instrumento autónomo que soporte memorias USB/SD, cargar el midi en memoria, modificar el midi directamente en el aparato y guardarlo con la modificación, la mas fácil aun que creas que es difícil es la del programa de ordenador, los teclados y sintetizadores con estas funciones tienen editores midi básicos que muchas veces es mas trabajoso lograr los resultados que esperas con midis importados y no creados directamente en el instrumento.
Subir
JavierE
#4 por JavierE el 14/03/2020
#2
Muchas gracias pablocid, me ha resultado muy clarificador. Mi error estaba en considerar algo excepcional la instrucción “note on con velocidad 0”. Ahora entiendo que cualquier dispositivo midi debe leer el “note on con velocidad 0”; porque, en caso contrario, tiene una deficiencia de diseño.
Interesante pregunta: “¿Puedes indicarnos qué equipo es?” No se trata de una marca comercial, sino que es un proyecto ajeno, al que he tenido acceso, que incluye también un midi. Por tanto, la solución a mi pregunta pasa porque el desarrollador de este proyecto corrija el diseño e incluya la lectura de la instrucción “note on con velocidad 0” como sinónimo de “Note Off”, y ya no existirá el problema.
¿Te parece que lo entendido?
Subir
JavierE
#5 por JavierE el 14/03/2020
#3
Gracias, RaulMX, por este punto de vista, complementario del que me ofreció pablocid. Tu idea me resulta también aprovechable para no hacer experimentos por esos caminos que todavía no había probado.
Subir
pablofcid mod
#6 por pablofcid el 14/03/2020
#4

Correcto, lo has entendido bien, sí. Es algo que olvidan muchas personas que programan por vez primera algo relacionado con MIDI.
Tiene su origen en el 'running status' : para ahorrar bytes y hacer más rápida la comunicación el byte de status no necesita enviarse en cada mensaje individual si es del mismo tipo que el último que se ha enviado. Usar note on vel 0 reemplazando un note off permite que encender y apagar notas no requiera enviar tantos bytes, siempre que no aparezcan otros tipos de mensajes que no sean note on. Que se miren bien eso, porque es otra fuente de errores en los recién llegados.
Subir
JavierE
#7 por JavierE el 14/03/2020
#6
Muchísimas gracias. Fíjate que desde un primer momento pensé que podía tratarse de ahorro de información.
Subir
Hilos similares
Nuevo post

Regístrate o para poder postear en este hilo