What ZMDX Player is
ZMDX Player (formerly MDX Flow) is a macOS and iPhone music player for the MDX and Z-MUSIC formats of the Sharp X68000. It synthesizes YM2151 (OPM) FM voices and the ADPCM (PCM) samples of the sample banks (PDX / ZPD) with a driver and a chip emulator developed in-house.
- There are no ads.
- MDX playback and every feature around it are free.
- Z-MUSIC playback is a one-time add-on. Before you buy, you can preview the first 20 seconds of each real song. It supports Family Sharing.
- For anyone who loves retro PC music: the sound of the era, played faithfully and lightly on today’s Mac and iPhone.
Glossary — X68000: a Sharp personal workstation from the late 1980s–90s. MDX: its signature music format. PDX: the bank of samples (PCM voices) an MDX song references. Z-MUSIC: the other major music driver / format of the X68000. ZPD: the sample bank Z-MUSIC references. YM2151 (OPM): the FM sound chip of that era. ADPCM / PCM: methods for handling recorded waveforms. Chiptune: music made with such sound chips. Loudness (LUFS): a unit of volume close to how we perceive it.
Key features
- In-house playback engine — YM2151 (OPM) FM voices and the sample banks’ ADPCM (PCM) are played by an independently developed MDX driver and an independently developed OPM emulator, calibrated against the chip’s datasheet.
- Both MDX and Z-MUSIC — beyond compiled
.zmd, ZMDX Player plays MML source (.z3s/.zms) directly, with no separate compile step. - Open straight from the cloud — open songs directly from iCloud Drive and other storage in Files.
- Folder / playlist views — looping (marquee) title display and a piano-keyboard visualizer.
- Search — filter by title / filename with AND words, “phrases”, and exclusion. Width and case are ignored.
- In-song loop — repeat the song’s own loop point a set number of times (macOS 1–9 / iPhone 1–99) or forever (∞). The list predicts length as “intro + count × loop + outro”.
- Optional loudness normalization (off by default) — measured with EBU R128 (BS.1770) to even out volume differences. Off by default. When enabled, pick a target (Apple Music −16 LUFS [default] / ReplayGain −18 LUFS / YouTube · Spotify −14 LUFS).
- PCM quality — the default is the raw hardware sound. Aperture correction optionally restores only the treble that D/A conversion loses. Switches live, mid-song.
- PDX / ZPD check — list, across the whole library, the songs whose sample bank cannot be loaded (their PCM would be silent).
- Accessibility — live text-size adjustment, live Japanese / English switching, VoiceOver support.
- Now Playing integration — playback info and controls in Control Center / Lock Screen / menu bar.
Supported files and how to open them
Supported files
| Extension | What it is |
|---|---|
.mdx |
MDX song file |
.mdx.szip |
Compressed MDX file |
.pdx |
Sample bank referenced by an MDX |
.pdx.szip |
Compressed PDX sample bank |
.zmd |
Z-MUSIC song file (compiled) |
.zmd.szip |
Compressed ZMD file |
.z3s / .zms |
Z-MUSIC MML source (interpreted and played in the app) |
.z3s.szip / .zms.szip |
Compressed forms of the above |
.zpd |
Sample bank referenced by Z-MUSIC |
.zpd.szip |
Compressed ZPD sample bank |
Extensions are case-insensitive. Place any required sample bank (PDX / ZPD) in the same folder as the song file, or inside the folder you selected.
How to open
- macOS: drag and drop a song file, or a folder containing song files, onto the window. You can also open files from the standard file picker with
Command-O. - iPhone: load song files, folders, and files on iCloud Drive or other cloud storage from the file picker (Document Picker).
.mdx,.pdx,.zmd,.zpd,.z3sand.zmsare associated with the app. Double-tap or double-click them in Finder or Files to open them directly.- If the sample bank (PDX / ZPD) a song needs cannot be found, the app shows the missing file name. Place the correct bank in the same location as the song, or inside the selected folder.
- You can also use Settings → “PDX / ZPD” to see a list of songs whose referenced bank cannot be loaded (that is, not linked to a sample bank). Missing bank names are shown grouped by file and folder, so you can fix them all efficiently in one place.
Z-MUSIC support
ZMDX Player now plays Z-MUSIC, the other major music format of the X68000.
- Beyond compiled
.zmd, it plays MML source (.z3s/.zms) directly — no separate compile step. - For songs that use PCM, put the matching
.zpdsample bank in the same folder. - Z-MUSIC playback is a one-time in-app purchase (non-consumable). One purchase covers both Mac and iPhone on the same Apple Account.
- Before you buy, every song plays its real first 20 seconds (then fades out over 5 seconds). It is your own file, not a demo track.
- This does not affect MDX. MDX remains fully usable without any purchase.
Usage guide (playback)
- macOS keyboard:
Spaceto play / pause. The list also supports Finder-style keyboard navigation. - From the playback area (macOS) or the transport bar (iPhone), you can play / pause, skip back and forward, seek, set volume, and toggle repeat / shuffle.
- Now Playing (Control Center / Lock Screen / menu bar) also offers play / pause and skip back and forward.
How search works
In the search box for a folder or playlist, the following grammar is available.
- word — shows items containing that word (multiple words must all match — an AND condition).
- “two or more words” — wrap in quotes to search for a contiguous match including spaces (a phrase).
- -word — shows items that do not contain that word (exclusion).
- -“phrase” — shows items that do not contain that phrase.
Full-width / half-width (including dakuten and handakuten on alphanumerics and kana) is ignored, and case is ignored (for example, the full-width “Star” matches “star”). Folder names are also searched. Title search uses a metadata cache, so to include songs you have not displayed yet, enable pre-scan in Settings (or, on iPhone, “pre-download files in the cloud”). Searching by file name is always available.
In-song loop vs. repeat
- In-song loop: a repeat of the loop points held inside a song. You can set a count (1–9 on macOS, 1–99 on iPhone) or infinite (∞) (in the playback area on macOS, in Settings on iPhone). ∞ repeats only songs that have in-song loop points; songs without them advance to the next track.
- Repeat / shuffle: repeat or random playback across songs in a playlist or folder. This is a separate setting from the in-song loop.
- With the loop count and fade-out settings, you can adjust how many times a song repeats before moving on, or whether it fades out.
Sound and loudness
PCM quality
- The default is Off (no interpolation) — the raw stepped output. The X68000 has no reconstruction low-pass filter, neither on the board nor inside the MSM6258V, so the staircase reaches the speaker as-is. This is the closest to the real machine.
- Aperture correction (optional) — inverts exactly the treble roll-off that the D/A staircase itself causes (−3.9 dB at the source Nyquist). Nothing is invented, so noise does not rise. Switches live, mid-song.
- Click noise suppression (optional, off by default) — suppresses the click at the tail of a sample (takes effect from the next song).
Loudness
- Loudness normalization is off by default. When you turn it on in Settings, each song’s loudness is measured with EBU R128 (BS.1770) and leveled to your chosen target, so per-song volume differences are reduced.
- When enabled, choose the target — Apple Music (−16 LUFS, default) / ReplayGain (−18 LUFS) / YouTube · Spotify (−14 LUFS).
- An optional peak-limited boost also raises quiet songs toward the target.
- Works with inter-song gaps, repeat, and shuffle.
Devices and sync (iCloud)
- If you use iCloud, the app’s metadata cache (song analysis results) is synced to your private iCloud (managed by Apple); we have no access to it.
- Community metadata sharing is off by default (opt-in). When turned on, the app shares only the song file’s hash (a SHA-256 of the whole file), basic song metadata (title, duration, loudness, in-song loop points), and a randomly generated in-app identifier. It never shares the music files themselves, file names, folders, or any other personal information. You can turn it off at any time.
- The randomly generated in-app identifier sent when sharing is on is a random value not linked to your identity. It is used only to count one submission per device so the community medians cannot be gamed, and never for tracking. It differs from device to device and is shared with no other app and no other device. Deleting the app discards it, but restoring the device from a backup brings the same value back.
- Even when sharing is off, whenever song information is missing locally (loudness, duration, in-song loop points or the title), the app sends the song file’s hash to look that song up. The hash is the lookup key, and the metadata above comes back in the response (values already present locally are not overwritten). This lookup runs independently of the sharing setting and does not stop when you turn sharing off. The only thing that leaves your device here is the hash — never the song title, the file name or the in-app identifier.
- Both the sharing and the lookup go to Apple’s CloudKit public database. That public database is readable by anyone, not only by us, so please treat anything you share as public information. We run no server of our own and keep no access logs.
- Apple automatically attaches a “creator ID” to anything you share. It derives from your iCloud account. We do not send it, but anyone who can read the public database can see it. It does not change when you delete the app, and it is the same on every device signed into the same iCloud account.
- The creator ID is meaningful only inside our own app’s area and cannot be matched against identifiers from other apps. There is no way to get from it to a name or an email address, and we cannot do so either. What it does reveal is that submissions shared from the same account can be seen as one group. And a lookup made while sharing is off writes no record, so this ID is not left behind and no third party sees it.
Pricing and support
Pricing
- The app is a free download, and there are no ads on any platform.
- MDX playback and every feature around it (library, search, loop, loudness, sound quality, keyboard visualizer, iCloud, accessibility) are free — no purchase required.
- Only Z-MUSIC playback is a one-time add-on (non-consumable; one purchase covers Mac and iPhone). A 20-second preview of each real song is available before purchase. Please check the App Store for the price.
Tip Jar
- An optional Tip Jar lets you support development. It unlocks nothing — it is separate from the Z-MUSIC add-on.
- Tiers are $5 / $10 / $20 / $50 / $100 (shown in your region’s App Store currency).
Privacy
ZMDX Player has no tracking, no analytics and no ad SDKs. Your music files, file names, folders, playback history and usage are never sent, whatever your settings. Files in local folders or on a Document Provider are handled through the operating system’s file-access features.
Only two things ever leave your device.
- Song lookups — these run whatever your sharing setting is. When song information is missing locally (loudness, duration, in-song loop points or the title), the app sends the song file’s hash (a SHA-256 of the whole file) to identify that song. Only the hash is sent — never the song title, the file name or the in-app identifier. Turning sharing off does not stop these lookups.
- Community metadata sharing — off by default (opt-in). Only if you turn it on does the app send the song file’s hash, the song’s title, duration, loudness and in-song loop points, a randomly generated in-app identifier (used only to keep the community medians from being gamed, never for tracking), and the version numbers of the algorithms used to measure and analyse the song (so a newer version does not adopt older values; never used to identify a device or a person). Turning the setting back off stops this.
Both go to Apple’s CloudKit public database, which is readable by anyone, not only by us. We run no server of our own and keep no access logs. Apple automatically attaches a “creator ID” to submissions made under 2 — a value derived from your iCloud account. We do not send it, but anyone who can read the database can see it; it does not change when you delete the app, and it is the same across devices signed into the same account. It is meaningful only inside our own app’s area, and there is no way to get from it to a name or an email address — we cannot do so either — although submissions from the same account can be seen as one group. A lookup under 1 writes no record, so no such ID is left behind. The public database holds only the items listed above. It contains no name, no email address, no music file, no file name and no playback history. There is no defined retention period for shared information, and there is currently no way, inside the app, to delete information you have already shared. Because we have no means of linking an in-app identifier to you, we cannot identify your records even if you contact us. Turning sharing off stops any further submissions.
These transmissions are declared on the App Store as Data Not Linked to You (Device ID and Other Data, used for app functionality).
Frequently asked questions
Q. The song plays, but some sound is missing / PCM (drums, etc.) isn’t there. A. The sample bank (PDX / ZPD) that the song needs may not have been found. The app shows the missing file name, so place the matching bank in the same folder as the song, or inside the selected folder (extensions are case-insensitive). You can also use Settings → “PDX / ZPD” to list songs not linked to a bank and place / fix them together.
Q. What files can it play?
A. MDX (.mdx) and Z-MUSIC (.zmd, plus the MML sources .z3s / .zms) songs, the sample banks they reference (.pdx / .zpd), and the compressed .szip form of each.
Q. Can I listen to Z-MUSIC songs without buying anything? A. Before you buy, each song plays its real first 20 seconds (then fades out over 5 seconds). It is your own file, not a demo track. Full playback requires the one-time add-on.
Q. Do .z3s and .zms need to be compiled first?
A. No. The app interprets and plays the MML source as-is.
Q. What do I unlock by paying? A. There are two kinds of purchase, and they are different in nature. The Z-MUSIC playback add-on (one-time) unlocks full playback of Z-MUSIC songs. The Tip Jar supports development and unlocks no features whatsoever. MDX playback and every feature around it are free, and neither purchase is required for them.
Q. I hear a click in the PCM sound. A. This was fixed in 3.0.1. We identified and fixed the cause of the click at the head and tail of a sample. Please update to the latest version.
Q. Are there ads? A. No. There are no ads at all (on every platform).
Q. Are my song files or data sent anywhere? A. No tracking and no analytics. Your music files, file names and playback history are never sent, whatever your settings. Only two things leave your device: (1) the song file’s hash, sent to look up song information that is missing locally — this happens whatever your sharing setting is, and does not stop when you turn sharing off; and (2) with community metadata sharing (off by default) turned on, the hash plus the song’s title, duration, loudness and in-song loop points, and a randomly generated in-app identifier. Turning (2) back off stops it. Both go to Apple’s CloudKit public database, which anyone can read. For the details, including how the creator ID is handled, see “Privacy” above.
Q. Does it sync between iPhone and Mac? A. If you use iCloud, the app’s metadata cache is synced to your private iCloud.
Q. Some songs don’t come up when I search by title. A. Title search uses a metadata cache, so songs you have not yet opened (displayed) may not match by title. Enabling pre-scan in Settings, or “pre-download files in the cloud” on iPhone, widens the coverage. Searching by file name is always available.
Q. I set “infinite loop,” but it still advances to the next song. A. In-song loop (∞) repeats infinitely only for songs that have loop points inside them. Songs without loop points advance to the next track (this is a separate setting from the playlist “repeat”).
Q. Which OSes does it run on? A. It supports macOS 14 Sonoma or later and iOS 17 or later.
Requirements
- OS: macOS 14 Sonoma or later / iOS 17 or later
- Supported devices: Mac / iPhone
- Distribution: App Store (free download + in-app purchase)
- Display languages: Japanese / English (switchable in the app)
About file rights
Only play MDX / PDX / Z-MUSIC (ZMD, Z3S, ZMS, ZPD) files that you own the rights to, or are licensed to use.