Pixel Refresh

Love of Retro Gaming & Modern Tech

PXR MIDI Player for macOS

(1 customer review)

PXR MIDI Player is a native macOS application that plays Standard MIDI Files to soft synths or hardware MIDI devices. It includes 64 channel MIDI support, a channel visualiser, playlist management, SoundFont (.sf2) support, lyrics display, SysEx monitoring and a performance mode for live playing.

Minimum price: £0.00

SKU: PXR-MIDI-PLAYER Category: Tags: , , Brand:

Description

Overview

PXR MIDI Player for macOS

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

PXR MIDI Player for macOS showing the 16-channel visualiser during playback of a Yamaha XG MU100 PLG100-DX MIDI file, with instrument names, velocity meters, volume faders, pan dials, expression, reverb, chorus and variation controller bars visible for each channel, alongside the playlist panel displaying a mix of GM, GM2, GS and XG format MIDI files with format badge indicators.
PXR MIDI Player for macOS displaying the piano roll visualisation during playback of a Roland GS SC-8850 MIDI file, with scrolling note data across 16 channels showing instrument names including Guitar Slap, Synth Bass, Hard Rhodes and Techno Kit, the orange GS-themed LCD display, and a large playlist of Roland SC-8850 demo files with GS format badges.
PXR MIDI Player for macOS playing a General MIDI orchestral arrangement with the blue GM-themed LCD display, showing all 16 channels with instruments including Piccolo, Oboe, Clarinet, Bassoon, Trumpet, French Horn, Trombone, Tuba, Xylophone and Strings, with piano roll note data, velocity meters and a 127-track playlist connected to a Roland SC-8850.
PXR MIDI Player compact visualiser mode showing a General MIDI orchestral file with 16 channels including Piccolo, Oboe, Clarinet, Brass, Strings and Acoustic Bass, displaying instrument names, GM format badges, activity LEDs and velocity meters in a condensed single-row layout with the blue GM-themed LCD display.

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.

PXR MIDI Player mini player mode displaying a General MIDI 2 file with the blue GM2-themed LCD showing track title, playback time, tempo, time signature and 16-channel activity meters in a compact desktop widget layout.
PXR MIDI Player mini player mode displaying a Roland GS SC-8850 orchestral demo file with the orange GS-themed LCD showing track title, playback time, tempo, time signature and 16-channel activity meters with the Roland GS format logo.
PXR MIDI Player mini player mode displaying a Yamaha XG MIDI arrangement of Mozart's Die Zauberflรถte K.620 with the green XG-themed LCD showing track title, playback time, tempo, time signature and 16-channel activity meters with the Yamaha XG Native format logo.
PXR MIDI Player mini player with playlist panel open, showing the orange GS-themed LCD displaying the connected Roland Sound Canvas SC-8850 device name, with a 125-track playlist of Roland GS demo files including format badges, track durations, and playlist management controls for import, export, sort and search.

PXR MIDI Player lyrics window showing synchronised karaoke-style highlighting during playback of a General MIDI file, with the current syllable highlighted in pink, previous lines in white and upcoming lines visible below, plus key transpose controls and melody channel mute option.
PXR MIDI Player SysEx monitor window showing a real-time log of decoded Roland GS System Exclusive messages from an SC-8850 MIDI file, with timestamps, manufacturer identification, raw hex data and human-readable parameter descriptions including GS Reset, Master Volume, Reverb, Chorus and EFX settings.

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

PXR MIDI Player Performance Mode showing the virtual 88-key piano keyboard with pitch bend and modulation wheels, GM instrument selection set to Acoustic Grand Piano, mixer controls for volume and pan, reverb and chorus effect sliders, sustain pedal toggle, voice memory slots for saving and recalling instrument setups, and MIDI input routing options.

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

What is PXR MIDI Player?

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.

What version of macOS do I need?

You’ll need macOS 14.0 (Sonoma) or later.

How do I play MIDI files on macOS?

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.

Does macOS have a built-in MIDI player?

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.

Is PXR MIDI Player free?

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.

What is the difference between General MIDI, GS and XG?

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.

Can I play MIDI files through a Roland Sound Canvas on Mac?

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.

Can I play MIDI files through a Yamaha MU module on Mac?

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.

Does PXR MIDI Player work with software synths or virtual instruments?

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.

What MIDI file formats are supported?

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.

Was AI Used to create this Application?

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.

What is MIDI?

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.

macOS says the app “can’t be opened” or is from an “unidentified developer.” What do I do?

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.

How do I select my MIDI device?

Go to PXR MIDI Player โ†’ Settings (โŒ˜,) and choose your MIDI output port from the list. Your selection is saved automatically.

What are multi-port presets?

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.

How accurate is the PXR MIDI Player timing?

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.

What is MIDI Time Stamping (MTS) and does the PXR MIDI player support it?

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.

What MIDI standards does the player support, and do I need special hardware?

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.

Does it detect GM, GS, and XG automatically?

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.

Can I solo or mute individual channels?

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.

Does it support media keys?

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.

Do I need to configure anything else after selecting my device?

No. Once your MIDI port is selected, you’re ready to go. Just drag in some MIDI files or use โŒ˜O to open one.

What is a SoundFont?

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.

Can I use custom SoundFonts?

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.

How do I add files to the playlist?

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.

Can I save and export my playlist?

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.

Can I search and sort my playlist?

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.

What does the SysEx Console show?

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!

Is there a tiny version of the player?

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.

What happens if the app crashes?

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.

Does the app check for updates?

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.

I’m not getting any sound. What should I check?

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.

A MIDI file won’t load. What’s wrong?

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.

What is Performance Mode?

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.

Can I use a physical MIDI keyboard with Performance Mode?

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.

Which hardware models are supported for voice selection in Performance Mode?

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!

What are the A, B, C and D buttons for?

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.

Does PXR MIDI Player support lyrics?

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.

What visualiser display modes are available?

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.

Can I change the visualiser frame rate?

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.

What are XG Basic and XG Native?

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.

What is MU100+?

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.

My MU80 file sounds wrong on my MU100/128/1000/2000. What should I try?

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

ActionShortcut
Play/PauseSpace
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.

Additional information

Platform(s)

macOS

Minimum version

macOS Sonoma (14) or later

Architecture

Intel, Apple Silicon

Development Status

BETA

1 review for PXR MIDI Player for macOS

5.0
Based on 1 review
5 star
100
100%
4 star
0%
3 star
0%
2 star
0%
1 star
0%
  1. 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!

Only logged in customers who have purchased this product may leave a review.

Changelog

[0.95.1 beta] - 2026-03-07

Added

  • PXR logo animation on the idle display: The PXR logo now appears on the in-app LCD and on connected Roland GS / Yamaha XG hardware (SC-55, SC-88 Pro, MU-series etc.) when the app is idle. It sweeps in pixel-by-pixel using a raster scan, holds, then sweeps back out, and refreshes automatically in the background to prevent hardware screen timeout. The logo clears the moment playback starts and reappears on stop

Changed

  • Filtered playlist play button: The icon now fades smoothly in and out as filters or search become active or inactive. Moved to the bottom toolbar as an icon-only button so other toolbar labels are never crowded
  • File Info folder path: The File Info window now shows only the folder containing the file, not the full file path
  • Settings MIDI Input tab: Now scrollable so long device lists don't overflow the panel

Fixed

  • Playlist click doesn't focus window: Clicking anywhere in the playlist panel now activates the app and brings the main window to front, consistent with standard macOS behaviour
  • PLG format not detected on some files: Files that activate PLG expansion boards entirely via SysEx (without using PLG bank numbers) are now correctly identified as PLG format
  • SysEx misrouted to wrong port in large files: SysEx events from tracks with index 16 or higher were incorrectly sent to Port B; they now route to the correct port
  • SysEx dropped for Port B/C/D in multi-port files: SysEx messages for second, third, and fourth port tracks now reach the correct hardware port instead of always going to Port A
  • GS badge incorrectly showing SC-55: The SC-55 channel badge no longer appears when no model-identifying SysEx has been received; a plain GS badge is shown instead
  • Seek bar flooding hardware with events: Dragging the seek bar no longer sends a rapid burst of MIDI events to the hardware. The position updates visually during the drag and a single clean seek fires on release

[0.95.0 beta] - 2026-03-06

Important Notice

  • Reset of all settings: Due to the need for changes to the core settings functionality, any previously saved settings will be reset and these will need to be re-entered

Added

  • Tighter MIDI timing: The scheduler now runs on a dedicated real-time kernel thread (same mechanism as Core Audio), eliminating scheduling delays from the previous GCD timer. Combined with batched hardware output and immediate startup ticks, worst-case timing error at playback start drops from ~5ms to under 0.2ms
  • MTS hardware delivery: Events are now delivered with host-clock timestamps so MTS-capable MIDI interfaces can schedule output against their hardware clock for sub-millisecond accuracy
  • Same-tick event ordering: When notes and controllers land on the same tick, notes are always sent first. Removes audible timing jitter in files with dense controller data (such as Logic Pro exports)
  • Filtered playlist playback: A play/pause icon appears in the playlist stats bar when a format filter or search is active. Pressing it plays only those tracks, with shuffle and repeat behaving as expected within the filtered set
  • PXR Log window: Runtime diagnostics window accessible from the MIDI menu, showing jitter reports, port information, device identification, and format detection results
  • Multi-port channel labels: Channels in multi-port files now display as A01-A16, B01-B16 etc. instead of plain 1-16
  • Layer mirror visualization: For SC-8850 files using part layering, Port B/C/D instrument display slots now mirror note activity from the corresponding Port A channels, reflecting what the hardware actually plays
  • Drag-to-reorder port presets: Custom port presets in Settings can now be reordered by dragging the grip handle
  • Global CH1 port override: A new setting routes all Channel 1 output to a designated port, for use with external hardware that listens only on a specific output (e.g. Yamaha VL series)
  • Performance Mode toggle: Performance Mode is now hidden by default and can be enabled in Settings > Playback, labelled as experimental
  • BETA label in About panel: The About window now shows the version as e.g. "0.95.0 BETA"
  • Pointer cursor on interactive elements: All buttons, drag controls, and tappable areas now show a hand cursor on hover

Changed

  • Export playlist prompt: When a format filter or search is active, exporting now asks whether to export the filtered tracks only or the full playlist
  • Search field auto-focuses: Clicking the search icon in the playlist immediately activates the text field so you can start typing without an extra click
  • Performance Mode pitch bend: Wheel range capped at ยฑ2 semitones to match standard hardware behaviour
  • Performance Mode controls: Dropdowns now use native macOS menu style; BANK, PGM, and Sync buttons are stacked vertically with a consistent width
  • Piano Roll Colours default: Multicolour is now the default note colouring mode
  • LCD Right Side default: Time Progress display is now shown first in the picker

Fixed

  • Progress bar overrun on DAW exports: Files with large trailing silence before End of Track markers no longer cause the progress indicator to run past the end of the bar
  • Drum channels in multi-port files: Port B, C, and D channel 10 now correctly shows drum kit names instead of melodic instrument names
  • Drum channel indicators not updating during playback: GS "Use For Rhythm Part" and XG Part Mode SysEx changes are now reflected in the visualiser immediately as the file plays
  • GS Display text animation: Rapid-fire scroll frames (e.g. "Game Over" animating character by character) now collapse to the final frame for smooth LCD display
  • Piano roll for multi-port channels: Note roll no longer snaps to Port A layout when the file uses channels beyond the first port
  • False multi-port detection on Roland files: Roland accompaniment files that reuse channels across tracks are no longer incorrectly treated as multi-port
  • Preset editor showing blank values: Reopening an existing custom port preset now correctly pre-fills all fields
  • File panels occasionally unselectable: Open and save dialogs no longer become non-interactive when the floating window restored its level while the panel was still open
  • Shuffle back-navigation in filtered mode: Pressing previous while shuffling within a filtered playlist now retraces the actual shuffle history

Thanks to JayB for all his help with feedback and testing on the MIDI timing new features.


[0.94.5 beta] - 2026-03-01

Added

  • Drag and drop anywhere on the window: MIDI files and folders can now be dropped on the visualiser, LCD display, transport controls, or any empty space to add them to the playlist - not just the playlist panel
  • Drop target feedback: A "Drop to add to playlist" label with a plus icon appears on a frosted glass overlay when hovering over the window with compatible files
  • Yamaha sequencer multi-port support improvements: Hardware sequencers now correctly detect and route to multiple ports using their proprietary port assignment format
  • MTS detection in Settings: MIDI interfaces that support hardware-timed delivery (MIDI Timestamping) now show a blue "MTS" badge in the port list and connection status

Fixed

  • Missing channel state on files with late setup data: Files where bank select, program change, or SysEx voice configuration events start more than one second before the first note now have all channels correctly initialised before playback begins

[0.94.4 beta] - 2026-03-01

Added

  • Official MIDI format logos: The GM, GM2, GS, XG, and Plug for XG logos now appear as tinted graphics in the format badges, playlist rows, playlist stats bar and file info - replacing the previous text labels
  • Plug for XG logo: When PLG expansion modules (VL, SG, DX) are detected in an XG file, the main format badge shows the Plug for XG logo instead of XG
  • GS Display Text scroll ticker: GS Display Letter SysEx messages now scroll continuously across the LCD as a smooth ticker, chaining back to the filename after the last text segment
  • LCD marquee for long filenames: Filenames that exceed the LCD width now scroll character-by-character with a hold at each end, like a real hardware display
  • Keyboard retrigger flash: Re-triggering a note that's already active now flashes the key bright white with a 150ms decay

Changed

  • Sustained notes on keyboard: Notes held only by the sustain pedal no longer appear as pressed keys - only actively held notes are highlighted
  • LCD preset name preserved: Custom port preset names on the LCD are no longer overwritten by the device identity reply

Fixed

  • SysEx setup in SC-8850 files: Files that pack hundreds of GS SysEx messages inside a single F7 escape sequence now parse correctly, so drum channels, bank/program changes and format detection work as expected
  • XG format not detected for some files: Files without an explicit XG System On reset but containing Yamaha XG SysEx are now correctly identified as XG
  • Missing instrument names in DAW-exported XG files: Files that set voices entirely via XG bulk dump SysEx (no CC/PC events) now show instrument names by extracting bank and program assignments from the bulk data
  • Inflated duration on DAW exports: End of Track markers placed far beyond the actual music no longer inflate the displayed duration
  • LCD note count limited to 16 channels: The NOTES counter now includes all 64 channels across 4 ports, not just the first 16
  • Multi-port detection too strict: Files with a partial final port (e.g. 16+16+7 channels) are no longer rejected by the multi-port heuristic
  • Multi-port files with track name prefixes: XG multi-port files using the A01/B01/C01 track naming convention are now detected and routed correctly
  • Visualiser missing channels beyond track count: All 64 channel slots are now visible regardless of how many tracks the file contains
  • Playlist sort restarting playback: Sorting the playlist no longer reloads the currently playing track

[0.94.3 beta] - 2026-02-28

Added

  • Keyboard visualisation: A new per-channel piano keyboard view shows mini 88-key keyboards for all 16 MIDI channels with real-time note highlighting, per-channel colour coding, a velocity meter, and instrument names - available from the Display menu (Cmd+K) or by cycling with the visualiser mode button
  • Metal-rendered Performance Mode keyboard: The Performance Mode piano keyboard now uses Metal for responsive, zero-latency note display with direct MIDI input and playback callbacks bypassing SwiftUI
  • SysEx reception: MIDI input now receives and parses incoming SysEx messages from connected hardware - EXPERIMENTAL!
  • XG dump request: New sync button in Performance Mode to query hardware voice settings via XG SysEx dump requests - EXPERIMENTAL!
  • Playback wheel display: Pitch bend and modulation wheels in Performance Mode now update from MIDI file playback data
  • 3D control styling: Volume bars, pan dials, controller bars, velocity meter, and mute/solo buttons now have a beveled, three-dimensional appearance

Changed

  • Playlist scrolls to current track: Opening the playlist now automatically scrolls to the currently playing track
  • Performance Mode keyboard shading: Piano keys in Performance Mode now have enhanced depth and dark flat key tips
  • Updated voice libraries: Instrument name databases updated with the latest upstream data, added many new SC-8850 drum kits

Fixed

  • Keyboard notes lingering after stop: Active notes on the keyboard display now clear when playback stops or the track changes
  • Instrument name overlapping controls: Channel names no longer overlap the velocity meter in keyboard mode
  • Jumpy bar counter on LCD: The bar number display no longer skips during playback
  • Playlist scrolling with many tracks: Smoother scrolling performance with large playlists

[0.94.2 beta] - 2026-02-27

Added

  • LCD right side mode setting: Choose between a large time progress display or format-specific channel activity meters on the right side of the LCD โ€” configurable in Settings > Display
  • GS Display Dot bitmap rendering: GS hardware bitmap animations (e.g. SC-55 startup logo) now display on the LCD, with automatic 3-second clear matching real hardware behaviour
  • GS 16-row grid meters: GS format channel meters now use a segmented 16-row grid style to match the SC-55 LCD aesthetic
  • LCD idle state: When no track is loaded, the LCD shows a clean display with the connected device name and a subtle easter egg animation
  • Device long name on LCD: The LCD now shows the full device name (e.g. "Built-in GM Synth (Apple DLS)") when idle, switching to the short model name during playback

Changed

  • Default LCD right side: Time progress display is now the default, with GS bitmap animations temporarily overriding it when active
  • No-device prompt: The first-launch dialog now offers "Use Built-in GM Synth" as the primary option instead of "Continue Without Sound"
  • Smoother LCD meter animation: Channel meter decay is more gradual for a polished visual
  • Wider meter column gaps: GM and XG format meters have wider spacing between columns for clarity

Fixed

  • LCD display freezing during idle: The LCD info row now updates correctly even when the main visualiser is paused
  • Playlist search lost on mode switch: The search box and entered text now persist when switching between full and mini player
  • GS Display Text scroll in mini player: Marquee scrolling range now calculates correctly in compact and mini player modes
  • Note roll mode lost on stop: Pressing stop no longer resets the visualiser back from note roll to the default mode
  • Playlist scrollbar too small: The scrollbar thumb now has a minimum height so it remains visible with large playlists

[0.94.1 beta] - 2026-02-25

Added

  • NOTES polyphony counter: The LCD info row now shows the current number of active notes, including sustained notes held by the pedal, with a 1-second peak hold โ€” toggle in Settings > Display
  • File Info window: Right-click any playlist entry to view detailed MIDI metadata including format, PPQN, tempo, time signature, channels, track names, copyright, lyrics, markers, and GS device detection
  • SC-55 instrument map for GM files: New setting to force SC-55 map mode on GM files when using SC-88 series devices, with live toggle from the MIDI menu and an "SC-55" format badge
  • Tabbed Settings window: Settings are now organised into MIDI Output, Playback, Display, and MIDI Input tabs with SF Symbol icons
  • Format-themed LCD meter colours: Activity bars now use dark tinted colours per MIDI format โ€” green for XG, blue for GM, orange for GS โ€” with smooth crossfade on format change
  • Interactive visualiser controls: Dragging VOL, PAN, EXP, REV, CHO, and VAR controls now updates the on-screen bars and dials in real-time as well as sending MIDI CC to the hardware

Changed

  • Authentic LCD dot-matrix characters: The LCD display now uses the real character set data instead of hand-crafted bitmaps, with unified square-dot rendering across all formats
  • Refined visualiser labels: Controller labels are sharper and more consistently sized across all bar types
  • Refined pan dial: Darker inner circle, wider ring band, anti-aliased needle with smooth blending, and a smaller pink marker dot
  • Lighter vertical labels: VOL/PAN/BND/MOD/SUS/AFT labels use a lighter font weight for a less prominent appearance
  • Brighter GM and GS meter colours: LCD meter bars are now visibly tinted instead of near-black
  • GM mini-player meters: Segmented 3-square bars replaced with continuous solid rectangles and floating peak tips
  • Dimmer LCD info values: TEMPO, SIG, BAR numbers display at reduced brightness for better visual hierarchy
  • SIG column width: Time signature display now expands for wide signatures like 11/12
  • Full screen disabled: Full screen mode is disabled on all windows to maintain correct layout
  • App always starts in player mode: The app now opens in full or compact player mode, never mini player due to window issues

Fixed

  • Deadlock when playback reaches end of file: Playback no longer hangs when a track finishes under certain circumstances
  • Note flood on pause: Pausing no longer causes a burst of stuck notes from a race between the timer and notes-off (painful on the ears, even if it was rare!)
  • Window sizing with auxiliary windows: Lyrics and File Info windows no longer interfere with main window sizing
  • Playlist context menu: Right-click now works directly on playlist rows without needing to left-click first
  • Visualiser bar markers at extreme values: Pink control markers no longer disappear or shrink at zero and maximum positions
  • Console warnings on mode switch: "Publishing changes from within view updates" warnings eliminated when switching visualiser modes
  • Swift 6 readiness: Build warnings resolved

[0.94.0 beta] - 2026-02-23

Added

  • Performance Mode (Experimental): Full LCD display with dot-matrix rendering, voice memory slots for saving and recalling instrument setups, and MU100 Native mode for Yamaha hardware
  • Track start notifications: Optional macOS notification banners when a new track begins playing, showing filename, duration, and format โ€” toggle in Settings
  • Piano roll reacts to controllers: Active notes now shift vertically to reflect pitch bend, and modulation adds a wavy wobble effect proportional to the mod wheel amount
  • Brighter active notes: Notes crossing the playhead are now significantly brighter with a leading edge highlight, and the playhead line itself glows white where notes intersect it
  • XG SysEx voice tracking: XG part bank/program changes sent via SysEx are now parsed and reflected in the visualiser and SysEx console with resolved instrument names
  • XG drum kit defaults: Channels with no explicit program change now show the default XG drum kit info
  • DLS SoundFont support: The built-in synth can now load DLS sound banks, and the current SoundFont name is shown on the LCD
  • Hardware synth database: Connected MIDI device detection now uses a community-editable JSON database instead of hardcoded patterns (JSON repo coming soon to public!)

Changed

  • Dot-matrix LCD fonts: The LCD display now uses authentic dot-matrix bitmap fonts instead of the VT323 web font, with sharp nearest-neighbor rendering
  • Metal-rendered controller labels: Channel controller bar labels are now rendered in Metal for instant, flicker-free mode switching
  • LCD glow effect: The LCD panel now has a subtle backlight glow for a more authentic hardware look
  • Dimmer LCD info values: Info row values are visually dimmer to reduce clutter against the track title
  • Text labels replace icons: Info row now uses small text labels above values instead of icons for clearer readability
  • SysEx flame effect narrower: Flame particles at the playhead are now 50% narrower for a subtler look
  • Built-in synth renamed to GM: The internal software synth is now labelled "GM" to better reflect its capability! Even though the file is called GS, it really is GM I have read
  • Performance Mode labelled experimental: The Performance Mode window title now indicates it is experimental - some features still not fully functional or needs further work
  • LCD shows filename: When a track has no embedded title or chapter changes, the LCD now displays the filename
  • Diacritics handled gracefully: Characters with accents that aren't in the dot-matrix glyph set are now stripped to their base letter instead of showing as blank

Fixed

  • Long sustained notes no longer vanish: Notes lasting longer than ~5 seconds no longer disappear from the piano roll mid-playback
  • Blank visualiser after screen change: Moving the window between monitors and switching view modes no longer leaves Metal rendering areas blank
  • Crash sending large SysEx messages: Fixed a buffer overflow when sending SysEx messages that exceeded the Core MIDI event list capacity
  • XMI game files now load correctly: The MIDI parser no longer rejects XMI-converted game soundtrack files with trailing bytes
  • Single app instance: The app now prevents multiple instances from launching simultaneously
  • Visualiser pauses during Performance Mode: The main visualiser display link now stops when the Performance Mode window is open, saving GPU resources
  • General code improvements: A flick over the entire codebase for optimisations and improvements

[0.93.4 beta] - 2026-02-21

Added

  • SysEx flame effect on the piano roll: SysEx events now produce rising flame particles at the playhead - channel-specific messages (GS/XG part parameters) flame only on the targeted channel row, while global messages (resets, master volume) flame across all channels
  • Warp speed transition: Loading a new track triggers a white hyperspace streak effect with rushing star points across the piano roll
  • Active note glow: Notes currently crossing the playhead now emit a subtle radial glow for better visibility
  • KAR file support: MIDI karaoke files (.kar) can now be opened, dragged into the playlist and associated with the app

Changed

  • Smoother piano roll scrolling: Eliminated scroll judder by reading playback time directly from the high-precision scheduler clock with rate-based interpolation
  • Right-aligned time display: The playback time on the LCD panel is now right-aligned so its visual padding matches the track title on the left
  • Improved LCD time formatting: Added spacing after the slash between current time and duration for better readability
  • Velocity meter spacing: Added extra padding between the velocity meter and the piano roll edge
  • Removed native View menu: The macOS View menu no longer clutters the menu bar

Fixed

  • Piano roll flicker eliminated: Fixed rendering flicker caused by triple-buffered presentation timing by switching to double buffering
  • GS peak hold bars in mini player: The fall-off peak indicators on the GS channel meter now display correctly

[0.93.3 beta] - 2026-02-20

Added

  • Automatic update checking: The app now checks for new versions at launch and offers to open the download page - also available manually via the app menu
  • Multi-port MIDI file support: Files with more than 16 channels are now correctly detected and the piano roll displays the correct notes when switching between channel banks
  • Crash report detection: If the app detects a previous crash, it offers to copy diagnostic information for reporting
  • Track loading indicator: A spinner now appears in the LCD display while a new track is loading
  • Playlist format filter badges: The playlist stats bar now shows format counts (GM/GS/XG) as tappable filter badges to quickly filter by MIDI format
  • Shuffle history: Going back during shuffle mode now revisits previously played tracks instead of picking a random one
  • Multicolour piano roll mode: Notes can now be coloured by channel instead of using a single accent colour - toggle in Settings
  • Social media links in About panel: Links to the project's social media accounts are now available in the About window

Changed

  • GPU-rendered LCD display: The track info panel (title, BPM, bar/beat, time signature, channel meters, time display) is now rendered entirely by the GPU using Metal, matching the visualiser's rendering approach for consistent performance
  • Zero-latency Metal rendering: Replaced MTKView with direct CAMetalLayer rendering on a dedicated high-priority thread, eliminating 1โ€“2ms of dispatch latency that caused missed vsyncs
  • Reorganised Settings: Settings are now grouped into four clear sections for easier navigation
  • Visualiser adapts to monitor refresh rate: The visualiser frame rate now automatically matches your display's native refresh rate
  • Improved shatter particles: Higher-velocity notes produce larger, more vivid shatter; modulation scales particle count; particles fade out with a fixed duration for consistent visual effect
  • Piano roll playhead drawn on top: The playhead line now renders above notes and shatter particles for better visibility
  • Restructured menus: Menus reorganised to follow macOS conventions with corrected keyboard shortcuts
  • GM Reset on quit: The app now sends a GM Reset message when quitting to leave external hardware in a clean state
  • Playlist filters persist across navigation: Format filter and search text are preserved when switching between views

Fixed

  • Multi-port detection no longer splits single-port files: Standard GM/GS/XG files with channel reuse are no longer incorrectly treated as multi-port
  • Multi-port detection for files with unused channels: Files where a port uses fewer than 16 channels (e.g. 14 of 16) are now correctly detected as multi-port
  • Piano roll shows correct channels on port 2+: Switching to higher channel banks now displays the correct note data instead of always showing port 1
  • Crash during dense passages: Fixed a crash caused by playlist mutation on the display link background thread
  • Crash on display link deallocation: Fixed a crash when the display link coordinator was deallocated with an in-flight frame
  • Playlist no longer loops endlessly: Playlist playback now stops at the end instead of looping back to the start
  • Note roll marker tips no longer vanish at bar edges: Pink marker tips are now drawn before the border so they remain visible at the edges
  • Duplicate View/Window menus removed: Fixed duplicate menu entries that appeared in the menu bar

[0.93.2 beta] - 2026-02-18

Added

  • Note roll visualisation: Each channel now shows a scrolling piano-roll view of notes in real time, with past notes fading behind the playhead and upcoming notes visible ahead. Toggle between the note roll and classic meters in Settings
  • Expressive shatter effect: Notes produce a particle shatter effect at the playhead that responds to MIDI controllers - modulation widens the scatter, pitch bend shifts fragments up or down, aftertouch makes fragments grow larger and glow brighter and harder-hit notes produce more vivid shatter with a hot white glow
  • Auto-compact visualiser on small screens: The visualiser automatically switches to compact mode when the window is too narrow for full mode, and restores full mode when space is available again
  • SoundFont availability prompt: If the saved SoundFont is on an unavailable network volume, the app now shows the device selection prompt instead of silently falling back - with a 10-second timeout so startup isn't blocked indefinitely

Changed

  • Smoother visualiser playback: Improved frame rate from around 52fps to nearly 60fps by running the display link on a dedicated high-priority thread, so vsync callbacks are no longer delayed by system housekeeping
  • Accelerating shatter: The longer a note plays, the faster and more intense its shatter effect becomes

Fixed

  • Retina coordinate scaling: Fixed an issue where the visualiser layout could appear misaligned on Retina displays
  • Reduced main-thread congestion during dense passages: Removed per-note-event handlers that were flooding the main thread with unnecessary work, contributing to missed vsync deadlines

[0.93.1 beta] - 2026-02-17

Added

  • SoundFont (.sf2) support: Load custom SoundFont files into the built-in synthesizer for higher-quality instrument sounds. Select via Settings and the choice persists across app restarts
  • Master volume control: Adjustable volume slider for the built-in synthesizer
  • Master reverb control: Adjustable reverb level and type preset when using a SoundFont. Reverb does not affect the default Apple DLS bank or external hardware

Changed

  • Smoother visualiser performance: Eliminated a major SwiftUI rendering bottleneck, bringing frame rates from around 30fps up to 50โ€“60fps during playback
  • Greatly reduced CPU usage: Eliminated a major SwiftUI rendering bottleneck reducing from 100% CPU usage to ~20-35%
  • Gradual segment lighting: Volume and activity bar segments now fade in proportionally with multiple brightness levels, giving a smoother and more fluid meter effect instead of binary on/off
  • Faster activity bar decay: Activity indicators respond more quickly to note-off events, with reduced peak hold for a snappier feel
  • Built-in synth labelled as GS: The default Apple DLS bank is now correctly described as GS-compatible rather than GM

Fixed

  • Built-in synth no longer falls back to sine waves: Switching between external MIDI and the built-in synth, or re-selecting a SoundFont, no longer causes instruments to revert to a plain sine tone
  • Pitch bend accuracy: Pitch bends now sound correct on both the default Apple DLS bank and custom SoundFonts
  • Updated instrument name database: Synced latest voice library data from upstream fixing some of the XG SFX voices

[0.93.0 beta] - 2026-02-16

Changed

  • GPU-accelerated visualiser - Greatly improved performance!: All dynamic visual elements (activity dots, volume bars, pan dials, LEDs, controller bars) are now rendered by the GPU in a single Metal draw call, replacing hundreds of individual SwiftUI views โ€” dramatically lower CPU usage and smoother animation
  • Performance mode styling: Performance mode now has attractive coloured sections inspired by a legendary classic keyboard
  • Raised keyboard divider: The divider above the keyboard in Performance mode now has a 3D raised appearance
  • Lyrics window visual appearance improvements: Buttons updated and background changed on bottom panel

Fixed

  • Improved playback stability: Fixed several issues that could cause incorrect instrument sounds when seeking, stuck notes on muted channels, and potential crashes with large multi-port setups
  • Built-in synth reliability: Fixed a timing issue during synth shutdown that could cause audio glitches, and improved handling of SysEx messages
  • More robust file loading: MIDI files are now parsed once instead of twice, making track loading faster
  • Lyrics scroll accuracy: Lyrics now track playback position more precisely, especially in songs with many lyric events
  • Built-in synth note-off fix: Fixed a thread safety issue that could cause note-off messages to be silently dropped

[0.92.6 beta] - 2026-02-15

Changed

  • Lower CPU usage during dense passages: Replaced per-channel dictionary lookups in the visualiser with direct array access, eliminating hashing overhead on every frame
  • Off-screen channels no longer computed: When viewing one bank of 16 channels, activity calculations for channels on other pages are skipped entirely
  • Playlist button styling: Toolbar buttons now have a glossy plastic gradient with a 3D raised appearance, matching the transport controls

[0.92.5 beta] - 2026-02-15

Fixed

  • Multi-port routing for files with uneven port groups: MIDI files where Port A uses fewer than 16 channels now route correctly to hardware โ€” previously the first Port B tracks would leak onto Port A, causing wrong instruments on the wrong channels
  • MIDI output modernised: Replaced deprecated MIDIPacketList/MIDISend with modern MIDIEventList/MIDISendEventList API for future macOS compatibility

Changed

  • Compact visualiser respects frame rate setting: The compact view now uses your chosen frame rate (30/60/120fps) instead of being capped at 30fps
  • Transport controls visual refresh: Buttons now have a subtle glossy plastic gradient, 3D raised appearance, and the play button has a recessed icon effect
  • Visualiser layout tightened: Slightly taller channel rows with reduced top/bottom padding for better use of space
  • Playlist header rebranded: Replaced "Playlist" with "PXR MIDI PLAYER" branding

[0.92.4 beta] - 2026-02-15

Changed

  • Lower CPU usage during playback: Decoupled time updates from the visualiser so channel rows and the track display no longer re-render 30 times per second unnecessarily
  • Smoother animation timing: Switched the LCD meter and visualiser from software timers to display-link rendering, synced to your monitor's refresh rate
  • Visualiser pauses automatically during silence: When no notes are playing, the visualiser stops rendering until the next note arrives, saving CPU
  • Compact visualiser capped at 30fps: The compact view now limits its frame rate to 30fps regardless of the setting, reducing CPU without visible difference
  • Voice library updated: Synced all instrument name databases (GM, GM2, GS, XG, PLG) to latest upstream

Added

  • Custom multi-port selector and profile saving in the settings replaces the automatic detecter to provide full customisations for your setups

[0.92.3 beta] - 2026-02-14

Fixed

  • Multi-port MIDI display slot offset: Instrument names now appear on the correct channel row for files with >16 tracks. Dynamically detects first instrument track instead of assuming a single conductor track
  • XG drum channel voice names: Channels with melodic instruments on XG drum channels (e.g., Timpani on CH10) now show the correct instrument name instead of falling back to "XG Drums" or "Drums"

Changed

  • XG voice library: Updated XG.json to latest upstream (new LSB 64 bank entries and additional voices)

[0.92.2 beta] - 2026-02-13

Changed

  • Universal binary to fix Intel based mac issue
  • Performance optimisations: Reduced per-frame allocations and redundant computation across playback, visualiser, and lyrics
  • Compile multi-port regex patterns once as static properties instead of per port scan
  • Pre-allocate and reuse visualiser batch array (eliminates ~200 allocations/sec)
  • Lazy-load PLG voice libraries on first access instead of at startup
  • Cache instrument name lookups with per-track invalidation
  • Pre-compute cleaned lyrics text and line strings once per track load
  • Pre-compute white-keys-to-left lookup table for piano keyboard drawing
  • Pre-split VerticalLabel characters at init to avoid per-frame String indexing

Added

  • Ko-fi link in About window: Added "Support this project on Ko-fi" link below the Pixel Refresh link

Fixed

  • Window height after minimise/restore: Window would stretch taller than its fixed height when restoring from the Dock. Fixed incorrect defaultSize (1200โ†’940) and added deminiaturise handler to re-enforce height constraints

Initial Release [0.92.1 beta] - 2026-02-11

  • Initial release of PXR MIDI Player in BETA status
0
    0
    Your Basket
    Your Basket is emptyRETURN TO SHOP
      Apply Coupon
      Unavailable Coupons
      booxn6247082734018 Get 25% off
      chris5f25401e2165c Get 25% off
      foxli6363ee3f3f91a Get 25% off
      jeron629deeda73a04 Get 25% off
      jwttbf2020 Get 50% off
      rapha608ee9324479d Get 25% off
      train5ee7b5827af7f Get 25% off