Article History
 
 
 

13 views
100% kleeder

dmf2pmd.py
 

::|CONTENTS

  1. Caution
  2. Support
  3. See also
BotBr pigdevil2010 wrote a Python 3 script to convert Deflemask Sega Genesis module into PMD MML source.

Download here
!

Usage: python3 dmf2pmd.py <input file> <output file>

Also, you still need to edit the resulting MML source to add more OPNA exclusive features and some missing supports. Don't be too lazy please :P

Caution



  • Please make sure that your module's speed is in something common such as 03/03, 04/04, 06/06 since PMD is also tick-based and I aimed for perfect tick conversion. Nonstandard speed or swings will just make the converted source harder to read.
  • Any volume or effect commands that happen in the middle of the note will restart the note. (I actually tried adding tie command (&) to these. Seems like PMD just doesn't want anything in the middle of the tie.)


Support



The converter doesn't support these:
  • SN7 Noise Channel.
  • FM Channel 6 DAC samples. Go make separate ADPCM and rhythm channels by yourself.
  • SSG-EG. OPN2 and OPNA have different behaviors and PMD doesn't support this command.
  • Every tables in STD instrument. PMD only have parametric volume envelope and nothing else.
  • Almost every portamento, volume slide, vibrato and tremolo commands. PMD's only portamento command requires a solid target note and length and PMD could only hold at most 2 software LFOs.
  • Arpeggio (0xx)
  • Position Jump (Bxx)
  • Retrig (Cxx)
  • Most of extended commands.


But still supports these:
  • Extended CH3 mode.
  • SSG envelopes by naming the instrument as PMD's equivalent commands such as E0,-1,3,3 or @4
  • Tone Portamento (3xx, 5xx) but the target note will be played immediately without restarting.
  • Pattern Break (Dxx)
  • Fine Tune (E5xx)
  • LFO, FB, TL, MULT and AR control commands


See also



Professional Music Driver (PMD)