Converti csv in midi

Converti CSV in MIDI

Converti tabelle di note musicali o file di eventi MIDICSV in Standard MIDI Files modificabili.

Converti i file CSV online

Non abbiamo ancora un convertitore online dedicato per CSV in MIDI, ma puoi convertire i file CSV online in questi e altri formati:

Come convertire csv in midi file

Un foglio di calcolo, un programma di analisi o uno strumento di composizione personalizzato può esportare i dati delle note come CSV, mentre un sequencer, un programma di notazione o un hardware MIDI richiede un Standard MIDI File. La conversione trasforma gli eventi musicali tabellari in una sequenza modificabile invece che in audio.

Cos'è CSV

CSV (comma-separated values) è testo semplice organizzato in righe e colonne. Compositori, ricercatori musicali, utenti di fogli di calcolo, DAW e script personalizzati possono usarlo per altezze, tempi di inizio, durate, velocity, canali, controller o dati di tempo.

CSV non dispone di uno schema musicale universale. Un file può contenere colonne come pitch,start,duration; un altro può usare nomi delle note, secondi, tick o una riga per ogni evento MIDI. Il delimitatore può essere una virgola, un punto e virgola o una tabulazione, e i campi tra virgolette possono contenere delimitatori. Prima della conversione, identifica il significato delle colonne, le unità di tempo, la codifica e la struttura dell'intestazione.

Cos'è MIDI

Un Standard MIDI File (.mid o .midi) memorizza istruzioni musicali temporizzate, inclusi eventi di nota, velocity, canale, program-change, controller, pitch-bend, tempo, metro e tonalità. Non contiene suoni registrati; un sintetizzatore, uno strumento virtuale o un dispositivo hardware genera l'audio.

I file MIDI sono normalmente molto più piccoli dei file audio e consentono di modificare indipendentemente note, temporizzazione, velocity, strumenti, tempo e dati di arrangiamento. Possono essere aperti da MuseScore Studio, Cubase, Logic Pro, Ableton Live, REAPER e sequencer hardware, anche se i suoni della riproduzione dipendono dagli strumenti di destinazione.

Usare MIDICSV per uno schema di eventi MIDI esistente

Le utility open-source MIDICSV sono l'opzione più diretta quando il CSV segue il formato degli eventi MIDICSV. Non sono convertitori generici per fogli di calcolo: midicsv esporta un file MIDI in una rappresentazione CSV definita, mentre csvmidi converte nuovamente tale rappresentazione in un file MIDI.

  1. Installa il pacchetto MIDICSV per il tuo sistema operativo dalla fonte documentata.
  2. Esporta un file MIDI con midicsv input.mid events.csv.
  3. Modifica events.csv senza cambiare i campi obbligatori relativi a traccia, tempo, tipo di evento e parametri. Mantieni gli intervalli numerici e la sintassi obbligatoria dell'intestazione o dell'evento.
  4. Compilalo con csvmidi events.csv output.mid.
  5. Apri output.mid in un editor MIDI e controlla la temporizzazione, gli strumenti, i controller e la struttura delle tracce.

Un foglio di calcolo contenente colonne arbitrarie come start_beat, duration_beat e pitch non è automaticamente compatibile con csvmidi. Usa un parser personalizzato per questo layout.

Convertire un CSV con una nota per riga usando Python

Per una tabella di note, usa Python con la libreria open-source mido. Prepara notes.csv con una nota per riga e queste colonne: start_beat, duration_beat, pitch, velocity e channel. Usa pitch MIDI da 0 a 127, velocity da 1 a 127, canali da 0 a 15 e beat relativi a una semiminima.

  1. Installa la dipendenza con python -m pip install mido.
  2. Salva questo script come csv_to_midi.py accanto 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. Esegui python csv_to_midi.py. Il risultato è notes.mid, con 480 tick per semiminima e un tempo fisso di 120 BPM.
  2. Apri il file in MuseScore Studio tramite File → Open oppure importalo usando il comando di importazione MIDI di una DAW. Aggiungi strumenti, variazioni di tempo, metro, tonalità o altri dati musicali non contenuti nel CSV.

Se i tempi di origine sono espressi in secondi, convertili in beat usando beats = seconds * bpm / 60. Se sono tick MIDI, dividili per il valore ticks-per-beat del file di origine. Secondi, beat e tick non sono intercambiabili. Se il CSV contiene righe di eventi anziché righe di note, scrivi un parser che associ ogni tipo di evento al messaggio MIDI corrispondente invece di usare lo script per la tabella di note.

Limiti di qualità e compatibilità

Il risultato può conservare solo i dati rappresentati dallo schema di origine e dal metodo di conversione. L'esempio conserva pitch, tempo di inizio, durata, velocity e canale, ma non testi, sustain pedal, automazione dei controller, program changes, variazioni di tempo, metro, tonalità, articolazioni o tracce multiple.

Le note sovrapposte sono supportate, ma le note sovrapposte con lo stesso pitch e canale possono risultare ambigue per alcuni strumenti. I numeri di programma MIDI, il comportamento del canale percussioni, l'accordatura, le risposte dei controller e i suoni degli strumenti variano tra applicazioni e hardware. Ispeziona il file importato in un editor piano-roll o degli eventi e ascolta per individuare tempo errato, note mancanti, conflitti tra canali e durate abbreviate.

I servizi online sono adatti solo quando documentano il layout CSV esatto che accettano. I convertitori generici di file non possono determinare se una colonna contiene tick MIDI, secondi, beat, nomi delle note o tipi di evento. Per composizioni personalizzate o materiale privato, la conversione locale con MIDICSV o Python evita il caricamento dei dati e fornisce impostazioni riproducibili.

Confronto formato: CSV vs MIDI

Come i formati CSV e MIDI si confrontano sulle proprietà più importanti per questa conversione.

Confronto dei formati CSV e MIDI
Proprietà .CSV Comma-Separated Values .MIDI MIDI Standard File
Standard aperto Sì Sì
Compressione Non compresso Non compresso
Dimensione tipica del file Piccolo Molto piccolo
Si apre in un browser web Sì, nativamente No
Modifica successiva Facile Facile
Supporto metadata Base Base
Leggibile come testo semplice Sì No
Ideale per Scambio dati Musica
Introdotto — 1983
Sviluppatore — MIDI Manufacturers Association / MIDI Association
Tipo MIME text/csv audio/midi