¿Cómo fusionar múltiples archivos MIDI en uno?

Estoy trabajando con Redes Neuronales Artificiales, en una tarea de generación de música.

Dado: una colección de archivos MIDI (convertidos de Guitar Pro 6) donde SOLO se usan tres pistas (por archivo MIDI): a saber, guitarra, bajo, batería. Por ejemplo, convertí 5 canciones de AC/DC de su archivo Guitar Pro en 5 archivos MIDI separados que contenían solo una pista de guitarra, una pista de bajo y la pista de batería.

Se busca : UN archivo MIDI (con las mismas tres pistas) que se combine con todos los demás archivos MIDI. Para ser más claro, en el ejemplo anterior mencioné tener 5 archivos MIDI de 5 canciones diferentes de AC/DC. ¿Cómo puedo convertirlos en UN archivo MIDI que contenga todas esas 5 canciones, reproducidas consecutivamente? Por ejemplo, si reproduzco este archivo ONE MIDI, produciría el sonido de una canción hasta el final, luego la siguiente canción, y así sucesivamente hasta la última canción.

En última instancia, para acceder a la información MIDI en Matlab, convierto los archivos MIDI en archivos csv. Si es más fácil fusionar archivos csv (mientras se asegura de que las canciones se reproduzcan una tras otra), ayúdenme con la fusión de csv.

El formato csv se obtiene de https://stackoverflow.com/questions/4747834/import-csv-file-with-mixed-data-types

formato csv

¿Cuál es el formato exacto de estos archivos CSV?
acaba de editarlo. Incluyo la imagen y la fuente.
Ese formato usa marcas de tiempo absolutas, por lo que tendría que agregar la longitud de todos los archivos anteriores a todas las horas en el siguiente archivo.
Tengo la impresión de que los archivos .mid son un formato binario, no 'legible por humanos', por lo que asumo que la salida .csv que se muestra arriba es el resultado del procesamiento posterior, ¿verdad? En cualquier caso, si tiene archivos csv como estos, si el encabezado es consistente (es decir, las notas siempre comienzan en la línea 7 y el tempo, etc. no cambia), entonces concatenarlos en matlab es muy fácil; es simplemente un caso de recopilar el csv como una matriz de celdas, descartar los primeros 6 elementos de todas las matrices de celdas excepto la primera y luego concatenarlas juntas (por ejemplo, con la catfunción).
alternativamente, puede usar uno de los muchos convertidores de midi a xml existentes y analizar el xml a su gusto usando las herramientas de análisis de xml de matlab y algunas declaraciones if simples
pero el problema es que, si lo hago a tu manera, las canciones no se fusionarán a través del tiempo. MIDI usa tiempo absoluto, y para que pueda fusionar, digamos, dos archivos MIDI en uno, necesito agregar el último tiempo del primer MIDI a todos los intervalos de tiempo del segundo MIDI. Es por eso que usar un DAW es más fácil y rápido.

Respuestas (1)

Yo mismo encontré una solución: usar un DAW, en mi caso, Cubase.

Esto permitirá reproducir y manipular fácilmente archivos MIDI.

Fuente: https://sound.stackexchange.com/questions/24055/combine-midi-files?newreg=8269c5b81e61461a9ede73e3880b6884