Converter csv para midi

Converter CSV para MIDI

Converta tabelas de notas musicais ou arquivos de eventos MIDICSV em Standard MIDI Files editáveis.

Converter ficheiros CSV online

Ainda não temos um conversor online dedicado para CSV para MIDI, mas pode converter ficheiros CSV online para estes e outros formatos:

Como converter csv para midi arquivo

Uma planilha, um programa de análise ou uma ferramenta de composição personalizada pode exportar dados de notas como CSV, enquanto um sequenciador, um programa de notação ou um hardware MIDI exige um Standard MIDI File. A conversão transforma eventos musicais tabulares em uma sequência editável, em vez de áudio.

O que é CSV

CSV (valores separados por vírgulas) é texto simples organizado em linhas e colunas. Compositores, pesquisadores de música, usuários de planilhas, DAWs e scripts personalizados podem usá-lo para alturas, tempos de início, durações, velocidades, canais, controladores ou dados de tempo.

CSV não possui um esquema musical universal. Um arquivo pode conter colunas como pitch,start,duration; outro pode usar nomes de notas, segundos, ticks ou uma linha para cada evento MIDI. O delimitador pode ser uma vírgula, um ponto e vírgula ou uma tabulação, e campos entre aspas podem conter delimitadores. Identifique os significados das colunas, as unidades de tempo, a codificação e a estrutura do cabeçalho antes de converter.

O que é MIDI

Um Standard MIDI File (.mid ou .midi) armazena instruções musicais temporizadas, incluindo eventos de nota, velocity, canal, program-change, controller, pitch-bend, tempo, métrica e armadura de clave. Ele não contém som gravado; um sintetizador, instrumento virtual ou dispositivo de hardware gera o áudio.

Os arquivos MIDI normalmente são muito menores que arquivos de áudio e permitem editar notas, tempo, velocity, instrumentos, tempo e dados de arranjo de forma independente. Eles podem ser abertos por MuseScore Studio, Cubase, Logic Pro, Ableton Live, REAPER e sequenciadores de hardware, embora os sons da reprodução dependam dos instrumentos de destino.

Use MIDICSV para um esquema de eventos MIDI existente

Os utilitários de código aberto MIDICSV são a opção mais direta quando o CSV segue o formato de eventos MIDICSV. Eles não são conversores genéricos de planilhas: midicsv exporta um arquivo MIDI para uma representação CSV definida, e csvmidi converte essa representação novamente em um arquivo MIDI.

  1. Instale o pacote MIDICSV para seu sistema operacional a partir da fonte documentada.
  2. Exporte um arquivo MIDI com midicsv input.mid events.csv.
  3. Edite events.csv sem alterar seus campos obrigatórios de faixa, tempo, tipo de evento e parâmetros. Preserve os intervalos numéricos e a sintaxe obrigatória do cabeçalho ou dos eventos.
  4. Compile-o com csvmidi events.csv output.mid.
  5. Abra output.mid em um editor MIDI e verifique o tempo, os instrumentos, os controladores e a estrutura das faixas.

Uma planilha contendo colunas arbitrárias como start_beat, duration_beat e pitch não é automaticamente compatível com csvmidi. Use um parser personalizado para esse layout.

Converta um CSV com uma nota por linha usando Python

Para uma tabela de notas, use Python com a biblioteca de código aberto mido. Prepare notes.csv com uma nota por linha e estas colunas: start_beat, duration_beat, pitch, velocity e channel. Use pitches MIDI de 0 a 127, velocities de 1 a 127, canais de 0 a 15 e beats relativos a uma semínima.

  1. Instale a dependência com python -m pip install mido.
  2. Salve este script como csv_to_midi.py ao lado de 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. Execute python csv_to_midi.py. O resultado é notes.mid, com 480 ticks por semínima e um tempo fixo de 120 BPM.
  2. Abra o arquivo no MuseScore Studio usando File → Open ou importe-o usando o comando de importação MIDI de uma DAW. Adicione instrumentos, mudanças de tempo, métrica, armaduras de clave ou outros dados musicais que o CSV não continha.

Se os tempos de origem estiverem em segundos, converta-os para beats usando beats = seconds * bpm / 60. Se estiverem em MIDI ticks, divida-os pelo valor de ticks-per-beat do arquivo de origem. Segundos, beats e ticks não são intercambiáveis. Se o CSV contiver linhas de eventos em vez de linhas de notas, escreva um parser que mapeie cada tipo de evento para a mensagem MIDI correspondente, em vez de usar o script de tabela de notas.

Limites de qualidade e compatibilidade

O resultado pode preservar apenas os dados representados pelo esquema de origem e pelo método de conversão. O exemplo preserva pitch, tempo de início, duração, velocity e canal, mas não letras, pedal de sustain, automação de controladores, mudanças de programa, mudanças de tempo, métrica, armaduras de clave, articulações ou várias faixas.

Notas sobrepostas são compatíveis, mas notas sobrepostas com o mesmo pitch e canal podem ser ambíguas para alguns instrumentos. Números de programa MIDI, comportamento do canal de percussão, afinação, respostas dos controladores e sons dos instrumentos variam entre aplicativos e hardwares. Inspecione o arquivo importado em um editor de piano roll ou de eventos e verifique se há tempo incorreto, notas ausentes, conflitos de canal e durações encurtadas.

Serviços online são adequados apenas quando documentam o layout exato de CSV que aceitam. Conversores genéricos de arquivos não conseguem inferir se uma coluna contém MIDI ticks, segundos, beats, nomes de notas ou tipos de eventos. Para composições personalizadas ou materiais privados, a conversão local com MIDICSV ou Python evita o upload de dados e fornece configurações reproduzíveis.

Comparação de formato: CSV vs MIDI

Como os formatos CSV e MIDI se comparam nas propriedades mais importantes para esta conversão.

Comparação dos formatos de arquivo CSV e MIDI
Propriedade .CSV Comma-Separated Values .MIDI MIDI Standard File
Padrão aberto Sim Sim
Compressão Sem compressão Sem compressão
Tamanho típico do arquivo Pequeno Muito pequeno
Abre num navegador web Sim, nativamente Não
Edição posterior Fácil Fácil
Suporte a metadados Básico Básico
Legível em texto simples Sim Não
Mais usado para Intercâmbio de dados Música
Introduzido — 1983
Desenvolvedor — MIDI Manufacturers Association / MIDI Association
Tipo MIME text/csv audio/midi