Hear the MIDI you are looking at.
An open-source multi-track MIDI player and visual workspace for VS Code. It preserves note duration, velocity, tempo, program changes, and channel performance data, then plays them through real SoundFont instruments.
Why MIDI RealPlayer?
Many MIDI previewers draw the right notes but play every event as the same short sound. MIDI RealPlayer keeps playback and visualization synchronized:
- Notes play for their encoded duration and velocity.
- General MIDI programs and drums use SoundFont instruments.
- Track On/Off and volume controls affect both what you see and hear.
- Piano Roll and Tracks views reveal both note detail and song structure.
- Seeking into a sustained note reconstructs the active sound correctly.
- Tempo, sustain, pitch bend, controllers, banks, and program changes survive playback.
- The current mix can be rendered directly to WAV without FFmpeg.
Highlights
- Instrument-colored Piano Roll and DAW-style Tracks views for
.midand.midi - Original track names and multiple channels from combined MIDI tracks
- Per-track On/Off and volume controls, remembered for each MIDI file
- Click-to-seek, transport scrubbing, horizontal pan, and pointer-based zoom
- Adjustable pitch-row and arrangement-lane heights
- Adaptive musical ruler with bar, beat, and subdivision marks
- Optional playhead following with Fit-to-song view
- Bundled GeneralUser GS SoundFont, ready on first launch
- Custom
.sf2,.sf3, and.dlsSoundFont support - Offline WAV export of the enabled tracks and current volume mix
- Source-safe workflow that never modifies the MIDI file
Install
Install from the Visual Studio Marketplace, or search for MIDI RealPlayer in VS Code.
To install a GitHub release, download its .vsix, run
Extensions: Install from VSIX..., and select the file.
Use
- Open a
.midor.midifile. - Press Play or Space.
- Seek, zoom, switch views, mute tracks, or adjust their volume directly in the viewer.
No SoundFont setup is required.
Controls
| Action | Control |
|---|---|
| Play / Pause | Transport button or Space |
| Stop / Go to start | Transport controls |
| Seek | Piano roll, transport scrubber, or Left / Right |
| Zoom | +, −, Fit, or Ctrl/Cmd + mouse wheel |
| Pan | Shift + mouse wheel or horizontal trackpad gesture |
| Switch view | Roll / Tracks above the timeline |
| Vertical scale | ↕ slider above the timeline |
| Track sound | Colored On/Off switch and Vol slider |
| Follow playback | Follow control beside the transport |
| Export current mix | Export WAV |
SoundFonts
The bundled
GeneralUser GS bank provides
ready-to-play General MIDI instruments. Use the SoundFont selector to switch
between Default and a local .sf2, .sf3, or .dls bank.
Sound quality and preset coverage depend on the selected bank. If a requested preset is unavailable, the track displays the actual fallback sound.
Development
Requires Node.js 22 and VS Code 1.100 or newer.
git clone https://github.com/vaclisinc/midi-realplayer-vscode.git
cd midi-realplayer-vscode
npm install
npm run typecheck
npm test
npm run build
Press F5 to launch an Extension Development Host. Run
npm run package to build a .vsix.
Contributing
Issues and pull requests are welcome. For playback bugs, include a minimal MIDI file when its license permits redistribution.
License and credits
MIDI RealPlayer is available under the MIT License.
Playback uses
SpessaSynth and the bundled
GeneralUser GS SoundFont by S. Christian Collins. The SoundFont license is
included in media/GeneralUser-GS-LICENSE.txt.
Built by vaclis for musicians, researchers, and anyone tired of inaccurate MIDI previews.
