MIDI player online
Upload, visualize, and play MIDI files with piano roll display and analysis.
Upload a Standard MIDI File (.mid) to visualize its notes on a piano roll and play it back through your browser. Supports multi-track files with per-channel coloring.
A .mid file is not audio — it is a list of note events with no sound of its own, which is why double-clicking one so often does nothing useful. This page reads the Standard MIDI File structure directly: the MThd header for format, track count and ticks per beat, then each MTrk chunk event by event, with running status handled, tempo meta events collected and track names picked up. The notes are drawn as a piano roll on canvas and played back through the Web Audio API with a single oscillator per note. That gives you a clear, honest rendering of the note data — pitch, timing, velocity and channel — rather than an instrument performance.
Key facts about MIDI player online
| Parser | A purpose-written Standard MIDI File reader: MThd header, MTrk chunks, variable-length delta times, running status, note on and note off, tempo and track-name meta events |
|---|---|
| Sound source | Web Audio oscillators. One oscillator and one gain envelope per note, chosen from sine, triangle, square or sawtooth |
| No soundfont | There are no instrument samples and no General MIDI voices. Program change messages are parsed and discarded, so a piano part and a trumpet part sound identical |
| Drums | Channel 10 percussion plays as pitched tones, because the note number is treated as a pitch rather than a drum map index |
| Envelope | Each note starts at a gain set by its velocity divided by 127 and decays exponentially; any note longer than 2 seconds is cut at 2 seconds |
| Tempo | Tempo meta events are read and the BPM is reported. Playback uses one constant tempo, so a piece with tempo changes plays at a single speed |
| Default tempo | 120 BPM when the file contains no tempo event, as the MIDI specification requires |
| Piano roll | Canvas rendering with a playback position line, coloured either by channel across a 16-colour palette or by note velocity |
| Statistics | BPM, note count, channel count, lowest and highest note, note range, average velocity, most common note and total duration |
| Transport | Play, stop, playback speed presets, volume and mute |
| Export | A tab-separated note list with note, start, duration, channel and velocity columns, plus a copy-statistics button |
| Formats | .mid and .midi. SMPTE timecode division is not handled — only ticks-per-beat timing |
What happens to your file
The MIDI file is read into an ArrayBuffer and parsed by JavaScript in this tab; the piano roll is drawn on a canvas in the same page and the sound is synthesised locally by the Web Audio API. Nothing is uploaded, nothing is streamed from a server, and the note-list export is generated in page memory and saved by your browser. That also means the page works with no network once loaded, and that an unreleased composition can be inspected here without a copy of it existing anywhere but your own disk.
About this tool
- 1
Drop the .mid or .midi file
Drag it onto the page or browse. The header and every track are parsed immediately and a toast reports the note count and the tempo.
- 2
Read the statistics
BPM, note count, channel count, note range and average velocity tell you what kind of file you have before you hear a thing — a 16-channel arrangement and a one-channel melody line are obvious at a glance.
- 3
Look at the piano roll
Colour by channel to see how the parts are separated, or by velocity to see where the loud notes are. The position line follows playback.
- 4
Pick a waveform and play
Sine is the cleanest for hearing melodic lines, sawtooth the most cutting for picking a part out of a dense arrangement. Adjust volume and playback speed as you listen.
- 5
Export the note list
The tab-separated export gives note, start, duration, channel and velocity per event — ready for a spreadsheet, an analysis script or a bug report about a sequencer.
| Accepted extensions | .mid, .midi |
|---|---|
| SMF formats | 0, 1 and 2 are read; the header reports which |
| Timing | Ticks per beat from the header, converted with the tempo to seconds per tick |
| Waveforms | Sine, triangle, square, sawtooth |
| Note cap | 2 seconds of sustain per note |
| Playback speed | Adjustable; it scales seconds per tick, so pitch is unaffected |
| Scheduling | Every note is scheduled up front when playback starts, so very dense files are heavy on start |
| Export | Tab-separated values (.tsv) note list |
| Audio requirement | Web Audio; playback starts from a user gesture as browsers require |
| Cost / account | Free, unlimited files, no signup |
- Use the sawtooth waveform and a slow playback speed to follow one line inside a dense arrangement.
- Average velocity is a quick check for a file that was step-entered rather than played: a constant 64 or 100 across every note means no human touched a keyboard.
- The note range tells you immediately whether a part fits an instrument before you assign it in a DAW.
- A drum track will sound wrong here by design — channel 10 note numbers are drum map indexes, and this player treats every note number as a pitch.
- If the playback speeds up or drags against your expectation, the file probably contains tempo changes; playback uses a single constant tempo.
- Export the note list and open it in a spreadsheet when you need to count how many notes fall on the beat versus between beats.
- Colour by velocity rather than by channel to see at a glance whether the dynamics were played or programmed.
- Standard MIDI File parsing in the browser
- Piano roll with playback position
- Colour by channel or by velocity
- Four synthesis waveforms
- Playback speed, volume and mute
- Tempo, note, channel and velocity statistics
- Tab-separated note-list export
- Copy statistics to clipboard
- Hearing what a downloaded .mid file contains before importing it into a DAW.
- Checking which channels and note ranges a MIDI arrangement uses.
- Reading the melodic contour of a file as a piano roll without opening a sequencer.
- Exporting note timings to a spreadsheet for analysis or for a transcription exercise.
- Confirming that a MIDI export from notation software contains the notes you expected.
- Playing a MIDI file on a machine with no music software and no system synthesiser.
Related tools
View allPart of File viewers that open the file in your browser
Works well with this4
More file viewers10
More in Music2
Updated