Convertir csv a midi

Convertir CSV a MIDI

Convierte tablas de notas musicales o archivos de eventos MIDICSV en Standard MIDI Files editables.

Convierte archivos CSV en línea

Todavía no tenemos un conversor en línea específico para CSV a MIDI, pero puedes convertir archivos CSV en línea a estos y otros formatos:

Cómo convertir un archivo csv a midi

Una hoja de cálculo, un programa de análisis o una herramienta de composición personalizada puede exportar datos de notas como CSV, mientras que un secuenciador, un programa de notación o un dispositivo MIDI requiere un Standard MIDI File. La conversión transforma eventos musicales tabulares en una secuencia editable en lugar de audio.

Qué es CSV

CSV (comma-separated values) es texto sin formato organizado en filas y columnas. Compositores, investigadores musicales, usuarios de hojas de cálculo, DAW y scripts personalizados pueden usarlo para datos de tonos, tiempos de inicio, duraciones, velocidades, canales, controladores o tempo.

CSV no tiene un esquema musical universal. Un archivo puede contener columnas como pitch,start,duration; otro puede usar nombres de notas, segundos, ticks o una fila para cada evento MIDI. El delimitador puede ser una coma, un punto y coma o una tabulación, y los campos entre comillas pueden contener delimitadores. Identifica los significados de las columnas, las unidades de tiempo, la codificación y la estructura de los encabezados antes de realizar la conversión.

Qué es MIDI

Un Standard MIDI File (.mid o .midi) almacena instrucciones musicales sincronizadas, incluidos eventos de nota, velocidad, canal, cambio de programa, controlador, pitch-bend, tempo, compás y armadura. No contiene sonido grabado; un sintetizador, instrumento virtual o dispositivo de hardware genera el audio.

Los archivos MIDI normalmente son mucho más pequeños que los archivos de audio y permiten editar de forma independiente las notas, la sincronización, la velocidad, los instrumentos, el tempo y los datos de arreglo. Pueden abrirse con MuseScore Studio, Cubase, Logic Pro, Ableton Live, REAPER y secuenciadores de hardware, aunque los sonidos de reproducción dependen de los instrumentos de destino.

Usar MIDICSV para un esquema de eventos MIDI existente

Las utilidades de código abierto MIDICSV son la opción más directa cuando el CSV sigue el formato de eventos MIDICSV. No son convertidores genéricos de hojas de cálculo: midicsv exporta un archivo MIDI a una representación CSV definida, y csvmidi convierte esa representación de nuevo en un archivo MIDI.

  1. Instala el paquete MIDICSV para tu sistema operativo desde su fuente documentada.
  2. Exporta un archivo MIDI con midicsv input.mid events.csv.
  3. Edita events.csv sin cambiar sus campos obligatorios de pista, tiempo, tipo de evento y parámetros. Conserva los rangos numéricos y la sintaxis requerida de encabezado o evento.
  4. Compílalo con csvmidi events.csv output.mid.
  5. Abre output.mid en un editor MIDI y comprueba la sincronización, los instrumentos, los controladores y la estructura de las pistas.

Una hoja de cálculo que contenga columnas arbitrarias como start_beat, duration_beat y pitch no es automáticamente compatible con csvmidi. Usa un parser personalizado para ese diseño.

Convertir un CSV con una nota por fila usando Python

Para una tabla de notas, usa Python con la biblioteca de código abierto mido. Prepara notes.csv con una nota por fila y estas columnas: start_beat, duration_beat, pitch, velocity y channel. Usa pitches MIDI de 0 a 127, velocidades de 1 a 127, canales de 0 a 15 y beats relativos a una negra.

  1. Instala la dependencia con python -m pip install mido.
  2. Guarda este script como csv_to_midi.py junto a notes.csv:
import csv
from mido import MidiFile, MidiTrack, Message, MetaMessage, bpm2tempo

bpm = 120
midi = MidiFile(ticks_per_beat=480)
track = MidiTrack()
midi.tracks.append(track)
events = [(0, 0, MetaMessage('set_tempo', tempo=bpm2tempo(bpm)))]

with open('notes.csv', newline='', encoding='utf-8-sig') as f:
    for row in csv.DictReader(f):
        start = float(row['start_beat'])
        duration = float(row['duration_beat'])
        pitch = int(row['pitch'])
        velocity = max(1, min(127, int(row.get('velocity') or 80)))
        channel = int(row.get('channel') or 0)
        if duration < 0 or not 0 <= pitch <= 127 or not 0 <= channel <= 15:
            raise ValueError('invalid duration, pitch, or channel')
        start_tick = round(start * midi.ticks_per_beat)
        end_tick = round((start + duration) * midi.ticks_per_beat)
        events.append((start_tick, 1, Message('note_on', note=pitch, velocity=velocity, channel=channel)))
        events.append((end_tick, 0, Message('note_off', note=pitch, velocity=0, channel=channel)))

events.sort(key=lambda item: (item[0], item[1]))
previous = 0
for tick, _, message in events:
    message.time = tick - previous
    track.append(message)
    previous = tick
midi.save('notes.mid')
  1. Ejecuta python csv_to_midi.py. El resultado es notes.mid, con 480 ticks por negra y un tempo fijo de 120 BPM.
  2. Abre el archivo en MuseScore Studio mediante File → Open, o impórtalo usando el comando de importación MIDI de un DAW. Añade los instrumentos, cambios de tempo, compás, armaduras u otros datos musicales que no estuvieran incluidos en el CSV.

Si los tiempos de origen están en segundos, conviértelos a beats usando beats = seconds * bpm / 60. Si están expresados en MIDI ticks, divídelos por el valor de ticks-per-beat del archivo de origen. Los segundos, beats y ticks no son intercambiables. Si el CSV contiene filas de eventos en lugar de filas de notas, escribe un parser que asigne cada tipo de evento al mensaje MIDI correspondiente en lugar de usar el script para tablas de notas.

Límites de calidad y compatibilidad

El resultado solo puede conservar los datos representados por el esquema de origen y el método de conversión. El ejemplo conserva el pitch, el tiempo de inicio, la duración, la velocidad y el canal, pero no las letras, el pedal de sustain, la automatización de controladores, los cambios de programa, los cambios de tempo, el compás, las armaduras, las articulaciones ni varias pistas.

Las notas superpuestas son compatibles, pero las notas superpuestas con el mismo pitch y canal pueden resultar ambiguas para algunos instrumentos. Los números de programa MIDI, el comportamiento del canal de batería, la afinación, las respuestas de los controladores y los sonidos de los instrumentos varían entre aplicaciones y dispositivos de hardware. Inspecciona el archivo importado en un editor de piano-roll o de eventos y escucha si hay un tempo incorrecto, notas faltantes, colisiones de canales y duraciones acortadas.

Los servicios en línea solo son adecuados cuando documentan el diseño exacto de CSV que aceptan. Los convertidores de archivos genéricos no pueden determinar si una columna contiene MIDI ticks, segundos, beats, nombres de notas o tipos de eventos. Para composiciones personalizadas o material privado, la conversión local con MIDICSV o Python evita cargar datos y proporciona configuraciones reproducibles.

CSV vs MIDI: comparación de formatos

Cómo se comparan los formatos CSV y MIDI en las propiedades que más importan para esta conversión.

Comparación de los formatos de archivo CSV y MIDI
Propiedad .CSV Comma-Separated Values .MIDI MIDI Standard File
Estándar abierto Sí Sí
Compresión Sin compresión Sin compresión
Tamaño de archivo típico Pequeño Muy pequeño
Se abre en un navegador web Sí, de forma nativa No
Edición posterior Fácil Fácil
Compatibilidad con metadata Básico Básico
Legible como texto plano Sí No
Más adecuado para Intercambio de datos Música
Introducido — 1983
Desarrollador — MIDI Manufacturers Association / MIDI Association
Tipo MIME text/csv audio/midi