Description
Overview

Since Apple dropped built-in MIDI file playback from QuickTime, macOS no longer has a native way to open and play Standard MIDI Files. PXR MIDI Player is a purpose-built application for anyone who wants to play MIDI files on macOS the way they were meant to be heard, whether through a software synthesiser or real hardware.
PXR MIDI Player fully supports General MIDI, Roland GS, Yamaha XG and GM2 standards, automatically detecting the format of each file and adapting its interface to match. If you own vintage MIDI hardware such as a Roland Sound Canvas or Yamaha MU series module, PXR routes MIDI output directly to your device through CoreMIDI with sub-millisecond timing accuracy. For those without external hardware, the built-in synthesiser supports custom SoundFont (.sf2) and DLS files, giving you control over how your MIDI files sound.
The real-time visualiser displays note activity, velocity, volume, pan and controller data across all 16 channels simultaneously, with multiple display modes including segmented meters, a scrolling piano roll and per-channel keyboard view. Multi-port MIDI files with up to 64 channels are supported, and the SysEx console provides a decoded log of every System Exclusive message during playback, covering both Roland GS and Yamaha XG parameter sets.
PXR MIDI Player is a free download, with an optional pay-what-you-like contribution to support ongoing development.
Features
Segment visualisation of note velocity
The activity meter displays real-time note velocity across all 16 channels as a segmented bar, inspired by classic hardware LED meters. Each channel row fills with colour-coded segments – green through the lower range, yellow as intensity builds, and red at peak velocity – giving you an instant visual read on the dynamics of every part in the arrangement. You can choose between 12 or 24 segments to suit your preference and in full mode the meters sit alongside volume faders, pan dials, and controller bars for expression, reverb, chorus, and variation, so every parameter is visible at a glance.
Piano-roll animation
Switch to piano roll mode and every channel becomes a scrolling timeline of notes. Played notes stream to the left of the playhead while upcoming notes scroll in from the right, giving you a live overview of the arrangement as it unfolds. Active notes burst into particle effects as they cross the playhead, with SysEx events triggering flame animations. You can choose between a classic colour scheme or a multicolour pitch-based palette that maps low-to-high notes across a full spectrum. A velocity meter sits alongside each channel, so you can see both the note data and its dynamics in one view.
Keyboard visualisation
Keyboard mode places a full 88-key piano across every channel, rendered entirely on the GPU. Each key lights up in real time as notes play, with a unique colour per channel that flows from red through orange, green, purple, and blue across the 16 rows. Black and white keys are drawn with 3D shading to mimic the look of a real keyboard, and a retrigger flash highlights repeated notes so fast passages stay readable. It is an intuitive way to see exactly which notes are sounding on every channel at once, without needing to interpret bars or numbers.
Compact visualisation
The compact layout strips the visualiser back to just the essentials: channel number, activity LED, volume bar, format badge, instrument name, and velocity meter segments. Pan dials, controller bars, and the right-side parameter displays are hidden, freeing up horizontal space and keeping the focus on what is playing and how loud. It is ideal for smaller screens or when you want to keep the visualiser visible alongside the playlist without it dominating the window.
Mini Player
The mini player collapses the interface down to just the LCD display and transport controls, tucking neatly into a corner of your desktop. The visualiser is now a representation of what you might see on real hardware of the MIDI era and the window shrinks to a compact size, so you can keep music playing without it taking over your screen. Toggle the playlist on and it extends from the bottom of the window, letting you browse and switch tracks without leaving the mini layout.

MIDI Instrument Voice Libraries
PXR MIDI Player includes a comprehensive voice library covering the instrument sets of the General MIDI, GM2, Roland GS and Yamaha XG standards. For Roland GS, the library spans the voice lists from the SC-55 through to the SC-88, SC-88 Pro and SC-8850, including all map variations and drum kits. For Yamaha XG, instrument names are provided for the MU80, MU90, MU100, MU128 and MU1000/MU2000, including PLG expansion board voices. This means the visualiser and Performance Mode always show the instrument name for every channel.



Lyrics Window
For MIDI files that contain embedded lyrics, the lyrics window opens as a dedicated display with synchronised karaoke-style highlighting. The current syllable is picked out in pink with a soft glow, while sung text turns white and upcoming words stay visible so you can follow along in real time. Previous and next lines sit above and below for context, and a progress bar with timestamp runs along the bottom. It reads lyric events directly from the MIDI file, so there is no need to supply a separate lyrics file.
SysEx Log Window
The SysEx console is a real-time monitor that logs every System Exclusive message as it is sent during playback. Each entry shows the timestamp, manufacturer, data length, and a decoded human-readable description of the command, drawn from a built-in database of Roland GS, Yamaha XG and Universal SysEx definitions. Select any message to open a detail panel with the decoded information and raw hex data. Voice fallback warnings are flagged inline so you can spot when a file references patches your device may not support and track separators keep the log organised when moving through a playlist.
Interface
- 16-Channel Visualiser โ Note activity, velocity, volume, pan, expression, reverb, chorus, pitch bend, modulation, sustain and aftertouch per channel
- Piano Roll โ Scrolling note timeline showing past and upcoming notes, with classic or multicolour display modes
- LCD Display โ Measure, beat, time signature, BPM and 16-channel activity meters with format-themed colours
- 64-Channel switching โ View the other channels of compatible MIDI files by using CH-UP and CH-DN buttons to view on the visualiser in 16 channel increments
- Lyrics Display โ Synchronised lyrics with word-level highlighting, key transposition and melody channel mute
- Chapter/Marker Support โ Navigate MIDI files by embedded markers with chapter buttons and seek bar indicators
- Playlist โ Drag-and-drop, auto-advance, shuffle, repeat, search, sort, import and export
- Solo/Mute โ Per-channel solo and mute controls with interactive volume and pan adjustment
- Mini Player โ Compact playback-only mode with format-specific visualiser (โโงM)
Settings
- SoundFont Loading โ Load custom .sf2 SoundFont files for the built-in synthesiser with master volume and reverb controls
- Multi-Port Presets โ Create custom port configurations for multi-port MIDI setups, assigning channel ranges across up to four MIDI ports
- GM Reset Before Playback โ Optional GM System On reset before each track to ensure clean instrument selection
- LCD Display Style โ Auto-detect from MIDI format or manually choose Blue (GM), Green (XG) or Orange (GS)
- Visualiser Frame Rate โ Choose between 30 for battery saving or auto FPS depending on your preference for smoothness or CPU usage
- Always on Top โ Keep the Mini Player above other windows
Playback
- Timing โ Sub-millisecond accuracy using mach_absolute_time with a 5ms/200Hz scheduler and 15ms lookahead
- Hardware MIDI Output โ CoreMIDI integration for output to physical devices
- Software Synth โ Built-in macOS GS synthesiser with custom SoundFont (.sf2) support, master volume and reverb controls
- Format Detection โ Automatic detection of GM, Roland GS, Yamaha XG, GM2 formats with format-specific LCD themes
- Media Keys โ Play, pause, next and previous track from your keyboard’s media keys or macOS Now Playing controls
Monitoring
- SysEx Console โ Real-time SysEx message log with a library of decoded parameters
- Track Separators โ Shows which file each SysEx message belongs to
- Roland GS & Yamaha XG Decoding โ Human-readable parameter names and values
- Resizable Detail Panel โ Adjustable message detail view
File Support
- Standard MIDI Files โ Type 0 and Type 1
- Drag & Drop โ Files and folders directly to the playlist
- Playlist Files โ Import and export .m3u playlists
Performance Mode

Performance Mode (โ4) provides a live MIDI controller for playing and controlling hardware MIDI devices in real time.
Virtual Keyboard
- On-screen 88-key piano keyboard with mouse click and drag
- Pitch bend and modulation wheels
MIDI Input Routing
- Connect a physical MIDI keyboard to play through PXR to your output device
- Input notes are shown on the virtual keyboard in real time
Integration with Playback
- During MIDI file playback, Performance Mode inherits the current channel state (instrument, bank, volume) so you can play over the file
- See the notes highlight as your MIDI file plays for the channel you have selected
Instrument Selection
- Supports GM, GM2, GS, and XG sound standards
- Model picker for GS (SC-55, SC-88, SC-88Pro, SC-8850) and XG (MU80, MU90, MU100, MU128, MU1000/2000)
- Bank and voice selection from the full voice library for the chosen standard and model
- Channel selector for any of the 16 MIDI channels
Effects and Controls
- Reverb and chorus send level sliders
- Sustain pedal toggle
- Panic button to silence all notes and reset controllers
PXR MIDI Player – Frequently Asked Questions
Setup and Configuration
Because PXR MIDI Player is not distributed through the Apple Developer Program, macOS Gatekeeper will block it the first time you try to open it. To get around this, right-click (or Control-click) the app and select Open from the context menu. You will see a warning dialogue โ click Open again to confirm. You only need to do this once; after that, macOS will remember your choice and the app will open normally.
To select your MIDI device, go to PXR MIDI Player โ Settings (โ,) and select your MIDI output port from the list. Your selection is saved automatically.
First Launch
- Launch PXR MIDI Player
- Open Settings (โ,) and select your MIDI output port
- Port preference is saved automatically
Playing MIDI Files
- Open File: โO or File โ Open MIDI File
- Add to Playlist: โโงO or File โ Add to Playlist
- Drag & Drop: Drag files or folders directly to the playlist
PXR MIDI Player is a native macOS application for playing Standard MIDI Files to software synths or hardware MIDI devices. It includes a 16-channel visualiser, playlist management, synchronised lyrics display, a SysEx monitor, and a performance mode for live playing.
You’ll need macOS 14.0 (Sonoma) or later.
Since Apple removed built-in MIDI playback from QuickTime, macOS no longer opens .mid files natively. PXR MIDI Player restores this functionality as a free, dedicated MIDI player for macOS. Simply download, open the app and drag your MIDI files in or use โO to browse.
No. Apple removed MIDI file playback when QuickTime X replaced the original QuickTime framework. macOS will still associate .mid files with QuickTime Player or GarageBand, but neither provides straightforward MIDI playback. PXR MIDI Player is a free alternative purpose-built for playing MIDI files on macOS.
Yes. PXR MIDI Player is a free download with no restrictions, ads or trial limitations. There is an optional pay-what-you-like contribution to support ongoing development.
General MIDI (GM) defines a standard set of 128 instruments and a drum kit, ensuring basic compatibility across all MIDI devices. Roland GS extends this with additional instruments, drum kits and effects controls specific to Roland hardware. Yamaha XG goes further still with an even larger instrument set, more effects parameters and deeper editing capabilities. GM2 sits between GM and GS/XG, adding more instruments and basic effects control as an official standard. PXR MIDI Player supports all four formats and automatically detects which one each file uses.
Yes. PXR MIDI Player routes MIDI output directly to any CoreMIDI device, including Roland Sound Canvas modules such as the SC-55, SC-88, SC-88 Pro and SC-8850. Select your device in Settings and the player handles all GS System Exclusive messages, bank selects and instrument mapping automatically.
Yes. PXR MIDI Player fully supports Yamaha XG and routes output to any connected Yamaha MU-series module including the MU50, MU80, MU90, MU100, MU128, MU1000 and MU2000. XG System Exclusive messages are passed through to your hardware for accurate playback.
PXR MIDI Player supports the standard Apple macOS included GM Synth as well as custom SoundFont (.sf2) and DLS files. If your software synth appears as a MIDI destination on your Mac, it should work with hardware output too.
Standard MIDI Files in both Type 0 (single track) and Type 1 (multi-track) formats are supported. Files should have a .mid, .midi or .kar extension.
AI tools were used as part of the development process. However, PXR MIDI Player is far from an “AI or machine learning generated app.” The project by James Woodcock represents many hundreds of commits, extensive manual testing across different hardware devices and MIDI standards, numerous design iterations and many MANY hours of hands-on effort. AI assisted with aspects of the coding process, but many of the architecture decisions, design direction, testing, debugging and refinement were all driven by James Woodcock. The end result is a carefully crafted application shaped by real-world use and iterative improvement and certainly not something generated in a single prompt.
MIDI (Musical Instrument Digital Interface) is a standard protocol developed in the early 1980s that allows electronic musical instruments, computers and software to communicate with each other. Unlike audio files such as MP3 or WAV, a MIDI file does not contain any actual sound โ it contains instructions that tell a synthesiser or sound module which notes to play, how hard to play them, which instruments to use and how to apply effects like reverb and chorus. This means the same MIDI file can sound completely different depending on the device or software playing it back. Common MIDI standards include General MIDI (GM), Roland GS, Yamaha XG and GM2, each offering progressively larger instrument sets and more detailed control over the sound. PXR MIDI Player supports all four of these standards.
Because PXR MIDI Player is not distributed through the Apple Developer Program, macOS Gatekeeper will block it the first time you try to open it. To get around this, right-click (or Control-click) the app and select Open from the context menu. You will see a warning dialogue โ click Open again to confirm. You only need to do this once; after that, macOS will remember your choice and the app will open normally.
Go to PXR MIDI Player โ Settings (โ,) and choose your MIDI output port from the list. Your selection is saved automatically.
If you have a setup with multiple MIDI devices or a device with more than one MIDI port, you can create custom port presets that assign channel ranges across up to four ports. This is useful for multi-port MIDI files or splitting channels across different devices.
The playback engine uses mach_absolute_time with a 200Hz scheduler and 20ms lookahead, delivering sub-millisecond accuracy. This is well within the threshold for tight, musical playback on hardware devices.
MIDI Time Stamping is a feature of some USB MIDI interfaces, where the interface has its own hardware clock. Instead of sending MIDI events and hoping they arrive at the right moment, the host attaches a precise timestamp to each event. The interface then holds the event and outputs it at exactly the right time, regardless of USB bus jitter or operating system scheduling delays.
PXR MIDI Player fully supports MTS. Every MIDI event is sent with a host-clock timestamp calculated from the event’s position in the file. MTS-capable interfaces use this to achieve sub-millisecond output accuracy. Standard interfaces that don’t support MTS simply ignore the timestamp and play the event immediately on arrival, which still benefits from the player’s tight 200Hz/20ms lookahead scheduling.
PXR MIDI Player supports General MIDI (GM), Roland GS, and Yamaha XG formats, and will automatically detect which standard a file uses. However, the player itself does not generate sound. It sends MIDI data to your chosen output device, so the quality and accuracy of playback depends entirely on that device’s capabilities.
For General MIDI files, any GM-compatible device or software synthesiser will work fine including the built-in Apple DLS available from within the player selections. For GS or XG files, you’ll get the best results with hardware or software that supports those standards – for example, a Roland Sound Canvas for GS, or a Yamaha MU-series or Motif for XG. Playing a GS or XG file through a basic GM device will still produce sound, but you may hear incorrect instruments, missing effects or other differences from the intended arrangement.
Yes. PXR MIDI Player automatically detects whether a file uses General MIDI, General MIDI 2, Roland GS or Yamaha XG and displays this information accordingly. The LCD display and visualiser adapt their appearance to match the detected format.
Yes. Each of the standard 16-64 MIDI channels has its own solo and mute controls in the visualiser. You can also drag to adjust volume and pan per channel directly in the visualiser.
Yes. You can use your keyboard’s media keys or macOS Now Playing controls to play, pause, skip to the next track or go back to the previous track.
No. Once your MIDI port is selected, you’re ready to go. Just drag in some MIDI files or use โO to open one.
A SoundFont (.sf2) is a file containing sampled instrument sounds that a software synthesiser can use to play MIDI data. Instead of relying on your Mac’s built-in General MIDI sounds, you can load a SoundFont into PXR MIDI Player to change how your MIDI files sound – for example, using high-quality piano samples or a SoundFont modelled after classic Roland or Yamaha hardware.
Yes. In Settings you can load any .sf2 or DLS SoundFont file to use with the built-in synthesiser. You also get master volume and reverb controls when a SoundFont is loaded.
You can drag and drop files or entire folders directly onto the playlist, use โโงO to add files, or โโงI to import a playlist. The playlist supports auto-advance, shuffle and repeat modes.
Yes. Use โโงE or File โ Export Playlist to save your current playlist as an .m3u file. You can import saved playlists back in with โโงI.
Yes. There is a real-time search bar for filtering tracks by filename, and a sort button to arrange tracks alphabetically or in reverse order.
The SysEx Console (โ3) provides a real-time log of all System Exclusive messages, with decoded parameter names and values. It supports Roland GS and Yamaha XG decoding, with human-readable formatting for values like semitones, dB levels, and pan positions. There is a library of known SysEx commands it can provide information on in the log, but there is plenty more work to do here!
Yes. The Mini Player (โโงM) gives you a streamlined, compact playback interface without the full visualiser and channel detail. It also features its own visualiser unique for each GM/GM2, GS and XG format. You can optionally keep it always on top of other windows via Settings.
If PXR MIDI Player detects a crash report from a previous session, it will offer to help you send it to James on next launch. This helps James identify and fix issues in future releases. This is available from version 0.93.3 beta.
Yes since version 0.93.3 beta. PXR MIDI Player checks for updates automatically every seven days. You can also check manually at any time via PXR MIDI Player โ Check for Updates in the app menu.
First, make sure a MIDI port is selected in Settings (โ,). Then verify your MIDI device is connected and powered on. If it still isn’t working, test the device with another MIDI application to rule out a hardware or driver issue.
Make sure the file is a valid Standard MIDI File with a .mid, .midi or .kar extension. If the file is corrupted or in a non-standard format, it may not load. If the MIDI file is from a game rip, it may not completely conform to MIDI standards and therefore may not be compatible although there have been efforts to fix these within the player.
Performance Mode (โ4) turns PXR into a live MIDI controller. It provides a virtual 88-key keyboard, pitch bend and modulation wheels, instrument selection across GM, GM2, GS and XG standards, and reverb/chorus controls – all routed to your hardware device.
Yes. You can connect a MIDI keyboard as an input and PXR will route your playing to the selected output device and channel. Input notes are displayed on the virtual keyboard in real time. Channel 10 drum input passes through unchanged if you have a MIDI controller with drum pads.
For Roland GS: SC-55, SC-88, SC-88Pro, and SC-8850. For Yamaha XG: MU80, MU90, MU100, MU128, and MU1000/2000. The aim has to be to provide a full voice library index for each model, although we expect gaps as the lists are extensive!
Some MIDI files are written for more than 16 channels by spreading their tracks across multiple ports โ labelled A, B, C, and D. Each port carries its own 16 channels, giving up to 64 channels in total. The A/B/C/D buttons let you switch which port’s channels are shown in the visualiser.
Most MIDI files only use a single port (Port A). When a file doesn’t have channels on Port B, C, or D those buttons are inactive. They light up automatically when you load a file that actually uses them.
Multi-port files are most common with high-track-count arrangements, Yamaha XG files from hardware sequencers like the QY70 and QY100, and Roland SC-8850 files that use layer and variation parts on Ports B, C, and D. Standard GM, GS, and most XG files use Port A only.
Yes. If a MIDI file contains embedded lyrics, the lyrics button becomes available. The Lyrics window displays synchronised lyrics with word-level highlighting as they are sung. You can also transpose the key up or down and mute the melody channel for karaoke-style use.
There are several ways to view the visualiser. Full mode shows all channel detail including volume, pan, expression, reverb, chorus and controller bars. Compact mode gives you a condensed single-row-per-channel view. You can also switch the centre display between meter bars and a scrolling piano roll. The piano roll has two colour modes – classic (blue and pink) and multicolour (pitch-mapped spectrum). There is also a keyboard view, where each channel shows a keyboard that indicates the notes that are playing.
Yes. In Settings you can choose between 30 or 120 FPS for the visualiser, depending on whether you prefer lower CPU usage or smoother animation.
These are two compatibility modes on Yamaha MU-series hardware. NATIVE uses the full voice set of your connected device. BASIC is a backwards-compatible mode that limits the hardware to the MU90 voice set, so files written specifically for the MU50/80/90 sound correct on newer hardware such as the MU100, MU128, or MU1000/2000.
Click the XG badge near the playback controls. The label underneath the XG logo shows the current mode – BASIC, NATIVE, or MU100+ – and clicking it toggles to the other.
When PXR detects that a file uses voices or PLG expansion boards that require the full capabilities of an MU100 or newer, it shows MU100+ instead of NATIVE. This is still XG Native mode โ the label is just a hint that the file was specifically authored for advanced hardware.
Try switching to BASIC mode. MU100 and newer hardware defaults to its full Native voice set, which maps some banks differently to the MU80. Switching to BASIC tells the hardware to use MU80-compatible voice mapping, which is what files written for the MU50/80/90 expect.
Keyboard Shortcuts
| Action | Shortcut |
|---|---|
| Play/Pause | Space |
| Stop | โ. |
| Next Track | โโ |
| Previous Track | โโ |
| Shuffle | โโงS |
| Repeat | โโงR |
| Open File | โO |
| Add to Playlist | โโงO |
| Meter Bars/Piano Roll | โ1 |
| Compact/Full Visualiser | โโง1 |
| Toggle Playlist | โ2 |
| SysEx Console | โ3 |
| Performance Mode | โ4 |
| Mini Player | โโงM |
| Import Playlist | โโงI |
| Export Playlist | โโงE |
| Settings | โ, |
Report a bug
If you are having an issue with the application, please use our contact form.
Copyright ยฉ 2025-2026 James Woodcock. All rights reserved.
This software is proprietary. No license is granted for use, modification, or distribution without explicit permission from the copyright holder.
Discover more from Pixel Refresh
Subscribe to get the latest posts sent to your email.


















Stephen Wong (verified owner) –
I’ve some last century MIDI sound modules (like Yamaha MU90R, P50-m, QY70, QY100) and quite a lot of bought MIDI files. I’ve searching for a MIDI player which can resurrect those ‘old good days memory’. Just found this PXR MIDI player for MacOS. Great! Even better, it supports XG (Yamaha’s extended GM standard), so, I’ve been able to play back my MIDI files. The UI of this program is very good, nothing fancy, but just good to let me see all the 16 tracks what’s going to happen, and there is also a SysEx window, which I can see what special messages are sent from those MIDI files. Very good, thank you for making this program!