https://github.com/optiroc/mdxtract
MDXtract is a set of python tools for extracting instrument and sample data from files used by the MXDRV and PMD sound drivers.
https://github.com/optiroc/mdxtract
Last synced: about 1 year ago
JSON representation
MDXtract is a set of python tools for extracting instrument and sample data from files used by the MXDRV and PMD sound drivers.
- Host: GitHub
- URL: https://github.com/optiroc/mdxtract
- Owner: Optiroc
- License: mit
- Created: 2018-02-27T20:49:57.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2020-05-26T09:32:21.000Z (about 6 years ago)
- Last Synced: 2025-02-09T19:51:48.361Z (over 1 year ago)
- Language: HTML
- Homepage:
- Size: 51.8 KB
- Stars: 9
- Watchers: 6
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# MDXtract
MDXtract is a set of python tools for extracting instrument and sample data from files used by the [MXDRV](https://www16.atwiki.jp/mxdrv/pages/23.html) and PMD sound drivers. Both are binary [MML](https://en.wikipedia.org/wiki/Music_Macro_Language) representations and were extremely popular on Japanese PCs of the 1990s including the NEC [PC-88](https://en.wikipedia.org/wiki/PC-8800_series)/[9801](https://en.wikipedia.org/wiki/PC-9800_series) and Sharp [X68000](https://en.wikipedia.org/wiki/X68000) computer lines.
The higher end models were equipped with the amazing [YM2151](https://en.wikipedia.org/wiki/Yamaha_YM2151) (OPM) and [YM2608](https://en.wikipedia.org/wiki/Yamaha_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](https://en.wikipedia.org/wiki/Yamaha_DX7) compatible [sysex](http://electronicmusic.wikia.com/wiki/System_exclusive) data. The data can be imported into many [popular](https://asb2m10.github.io/dexed/) [software](https://www.arturia.com/dx7-v/overview) [FM](https://www.native-instruments.com/en/products/komplete/synths/fm8/) 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.
## operation
**mdx2syx.py**
```
mdx2syx.py [-h, --help] [-v, --verbose] [infiles ...]
```
- Instrument data will be converted and written as `.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 `.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 `_.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 `_.wav`.
- Default sample rate is 15625 Hz, not a common setting on PC-9801!
- In verbose mode something will be printed to stdout.
## tips & tricks
**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](./LICENSE).