Free online CSV to MIDI converter
Convert musical note tables or MIDICSV event files into editable Standard MIDI Files.
Convert CSV to MIDI online - free
Your file is processed instantly and deleted as soon as you download it.
Import a file from a URL
Paste a direct link to the file. We download it to our server and it is converted exactly like an upload.
How it works
-
1/3
Upload your .csv file
Click to browse to select your file you want to convert or simply drag & drop your file into selected area.
-
2/3
Perform .csv to .midi conversion
After successful file upload, click to convert when you are ready.
-
3/3
Download converted .midi file
Conversion result is ready to download.
Conversion statistics: CSV to MIDI
Updated November 15, 2026, from conversions on 101convert.com
How to convert csv to midi file
- Music composition
- No ratings yet.
A spreadsheet, analysis program, or custom composition tool may export note data as CSV while a sequencer, notation program, or MIDI hardware requires a Standard MIDI File. Conversion turns tabular musical events into an editable sequence instead of audio.
What CSV is
CSV (comma-separated values) is plain text organized into rows and columns. Composers, music researchers, spreadsheet users, DAWs, and custom scripts may use it for pitches, start times, durations, velocities, channels, controllers, or tempo data.
CSV has no universal musical schema. One file may contain columns such as pitch,start,duration; another may use note names, seconds, ticks, or one row for each MIDI event. The delimiter may be a comma, semicolon, or tab, and quoted fields may contain delimiters. Identify the column meanings, time units, encoding, and header structure before converting.
What MIDI is
A Standard MIDI File (.mid or .midi) stores timed musical instructions, including note, velocity, channel, program-change, controller, pitch-bend, tempo, meter, and key-signature events. It does not contain recorded sound; a synthesizer, virtual instrument, or hardware device generates the audio.
MIDI files are normally much smaller than audio files and allow notes, timing, velocity, instruments, tempo, and arrangement data to be edited independently. They can be opened by MuseScore Studio, Cubase, Logic Pro, Ableton Live, REAPER, and hardware sequencers, although playback sounds depend on the destination instruments.
Use MIDICSV for an existing MIDI event schema
The open-source MIDICSV utilities are the most direct option when the CSV follows the MIDICSV event format. They are not generic spreadsheet converters: midicsv exports a MIDI file into a defined CSV representation, and csvmidi converts that representation back into a MIDI file.
- Install the MIDICSV package for your operating system from its documented source.
- Export a MIDI file with
midicsv input.mid events.csv. - Edit
events.csvwithout changing its required track, time, event-type, and parameter fields. Preserve numeric ranges and the required header or event syntax. - Compile it with
csvmidi events.csv output.mid. - Open
output.midin a MIDI editor and check timing, instruments, controllers, and track structure.
A spreadsheet containing arbitrary columns such as start_beat, duration_beat, and pitch is not automatically compatible with csvmidi. Use a custom parser for that layout.
Convert a note-per-row CSV with Python
For a note table, use Python with the open-source mido library. Prepare notes.csv with one note per row and these columns: start_beat, duration_beat, pitch, velocity, and channel. Use MIDI pitches from 0 to 127, velocities from 1 to 127, channels from 0 to 15, and beats relative to a quarter note.
- Install the dependency with
python -m pip install mido. - Save this script as
csv_to_midi.pybesidenotes.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')
- Run
python csv_to_midi.py. The result isnotes.mid, with 480 ticks per quarter note and a fixed tempo of 120 BPM. - Open the file in MuseScore Studio through File → Open, or import it using a DAW's MIDI import command. Add instruments, tempo changes, meter, key signatures, or other musical data that the CSV did not contain.
If the source times are in seconds, convert them to beats using beats = seconds * bpm / 60. If they are MIDI ticks, divide by the source file's ticks-per-beat value. Seconds, beats, and ticks are not interchangeable. If the CSV contains event rows rather than note rows, write a parser that maps each event type to the corresponding MIDI message instead of using the note-table script.
Quality and compatibility limits
The result can preserve only data represented by the source schema and conversion method. The example preserves pitch, start time, duration, velocity, and channel, but not lyrics, sustain pedal, controller automation, program changes, tempo changes, meter, key signatures, articulations, or multiple tracks.
Overlapping notes are supported, but overlapping notes with the same pitch and channel can be ambiguous for some instruments. MIDI program numbers, drum-channel behavior, tuning, controller responses, and instrument sounds vary between applications and hardware. Inspect the imported file in a piano-roll or event editor and listen for incorrect tempo, missing notes, channel collisions, and shortened durations.
Online services are suitable only when they document the exact CSV layout they accept. Generic file converters cannot infer whether a column contains MIDI ticks, seconds, beats, note names, or event types. For custom compositions or private material, local conversion with MIDICSV or Python avoids uploading data and provides reproducible settings.
CSV vs MIDI: format comparison
How the CSV and MIDI formats compare on the properties that matter most for this conversion.
| Property | .CSV Comma-Separated Values | .MIDI MIDI Standard File |
|---|---|---|
| Open standard | Yes | Yes |
| Compression | Uncompressed | Uncompressed |
| Typical file size | Small | Very small |
| Opens in a web browser | Yes, natively | No |
| Further editing | Easy | Easy |
| Metadata support | Basic | Basic |
| Plain-text readable | Yes | No |
| Best used for | Data exchange | Music |
| Introduced | — | 1983 |
| Developer | — | MIDI Manufacturers Association / MIDI Association |
| MIME type | text/csv | audio/midi |
Information about file extensions and file types is provided by File-Extensions.org
Suggested software and links: csv to midi converters
Frequently asked questions
Is the CSV to MIDI converter free?
Yes, converting CSV to MIDI on 101convert.com is completely free. No registration, email address or installation is required. If you need a higher file size limit or want to convert more files at once, see our plans.
How large can my CSV file be?
You can upload CSV files up to 3 MB and convert up to 3 files at once in a single batch. With a paid plan the limit is up to 20 MB per file and 20 files at once, see our plans.
What happens to my uploaded files?
Files are processed automatically and deleted from our servers within a few minutes after conversion. We never view or share your files.
Do I need to install any software to convert CSV to MIDI?
No. The CSV to MIDI conversion runs entirely online in your browser and works on Windows, Mac, Linux, Android and iPhone.
Did the conversion fail?
In most cases, the cause is an incorrect file format. Please upload a valid CSV file for this CSV to MIDI conversion. Occasionally, the issue may be on our side. We analyze recurring conversion failures and disable or fix the converter if we detect a defect.
Can any CSV file be converted to MIDI?
No, the CSV must contain musical note data or a recognized MIDICSV event structure. Ordinary spreadsheet rows, text, or audio-related data cannot be turned into meaningful MIDI notes without the required timing, pitch, and channel information.
Will my CSV notes stay editable after converting to MIDI?
Yes, the result contains editable MIDI events such as notes, timing, velocity, channels, and supported controller data rather than recorded audio. The exact information preserved depends on which musical columns and event types the CSV provides.
Why do my notes play at the wrong time or pitch after CSV to MIDI conversion?
This usually happens when the CSV uses unexpected column names, delimiters, pitch notation, or timing units. MIDI conversion needs unambiguous note values and timing, and rows with missing or invalid fields may be skipped or interpreted incorrectly.
Will a MIDI file sound the same as the original CSV?
A CSV does not contain sound, so MIDI playback depends on the instrument assignments and synthesizer used to play it. Tempo, note timing, velocity, and channels can be represented, but the resulting tone may differ between playback systems.
Additional formats for
csv file conversion
Reverse conversion
Convert to midi from
other formats
- pdf to midi
- txt to midi
- mxl to midi
- mscz to midi
- ove to midi
- abc to midi
- gtp to midi
- musicxml to midi
- xml to midi
- ascii to midi
- akai to midi
- bmp to midi
- cap to midi
- capx to midi
- cdo to midi
- doc to midi
- enf to midi
- gif to midi
- gp to midi
- gp3 to midi
- gp4 to midi
- gp5 to midi
- gpx to midi
- h2song to midi
- jpeg to midi
- jpg to midi
- mg1 to midi
- mgu to midi
- mscx to midi
- mus to midi
- musx to midi
- nwc to midi
- nwctxt to midi
- png to midi
- ptb to midi
- sbk to midi
- sf to midi
- sib to midi
- smf to midi
- sng to midi
- tab to midi
- tef to midi
- tif to midi
- tiff to midi
- wpp to midi