MDXtract is a set of python tools for extracting instrument and sample data from files used by the MXDRV and PMD sound drivers. Both are binary MML representations and were extremely popular on Japanese PCs of the 1990s including the NEC PC-88/9801 and Sharp X68000 computer lines.
The higher end models were equipped with the amazing YM2151 (OPM) and YM2608 (OPNA) FM tone generators, and the main purpose behind the MDXtract tools is to extract instrument definitions for these chips and convert them to DX7 compatible sysex data. The data can be imported into many popular software FM synthesizers, as well as the original hardware.
Included are also tools to extract and convert ADPCM sample data from the supplementary sample archive formats used by these sound drivers; PDX, PPC, PPS, PVI, P86, et cetera.
mdx2syx.py
mdx2syx.py [-h, --help] [-v, --verbose] [infiles ...]
- Instrument data will be converted and written as
<filename>.syx
. - In verbose mode some intriguing data will be printed to stdout.
pmd2syx.py
pmd2syx.py [-h, --help] [-v, --verbose] [infiles ...]
- Common PMD extensions are .M and .M2.
- Instrument data will be converted and written as
<filename>.syx
. - In verbose mode some very intriguing data will be printed to stdout.
pdx2wav.py
pdx2wav.py [-h] [-v] [--rate R] [--gain G] [--dcnorm] [infiles ...]
- ADPCM data will be converted and written as
<filename>_<n>.wav
. - Default sample rate is 15625 Hz, the most common setting on a X68000.
- In verbose mode some not-so-intriguing data will be printed to stdout.
pmd2wav.py
pmd2wav.py [-h] [-v] --type [type] [--rate R] [--gain G] [--dcnorm] [infiles ...]
- Common PMD sample archive extensions include .PPC, .P86 and .PPS.
- It is usually not needed to specify
type
. When omitted the tool will auto detect the format by looking at the file header, and if nothing can be deduced from that it falls back to the file extension. - ADPCM data will be converted and written as
<filename>_<n>.wav
. - Default sample rate is 15625 Hz, not a common setting on PC-9801!
- In verbose mode something will be printed to stdout.
voice expressiveness
The instrument definition stored in an MDX file does not define many of the expressive features commonly used in a lovingly crafted DX synthesizer patch: vibrato, key velocity response and so on. MXDRV used effects in the note streams to apply such expression, rather than implementing them in the instruments.
Fear not! Restoring expressiveness is usually a simple matter of adding key velocity response (KVS) to the operators. Adding KVS to a carrier makes that operator chain respond to key velocity by adjusting the final output volume. Adding KVS to a modulator usually yields a more interesting result since you can then vary the modulation amount with the key velocity – essential for that FM slap bass!
Programmed by David Lindecrantz and distributed under the terms of the MIT license.