Article History
 
 
 

601 views
100% kleeder

dmf2pmd.py View HTML Version
 

BotBr '[l[http://battleofthebits.org/barracks/Profile/pigdevil2010/[pigdevil2010] wrote a Python 3 script to convert Deflemask Sega Genesis module into PMD MML source.

Download '[l[https://gist.github.com/Pigu-A/a51a4f3b83a238579e225e06098ba4e7[here]!

Usage: '[t[mono]python3 dmf2pmd.py  '[/t]

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]
'[ul['[li[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.]'[li[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:
'[ul['[li[SN7 Noise Channel.]'[li[FM Channel 6 DAC samples. Go make separate ADPCM and rhythm channels by yourself.]'[li[SSG-EG. OPN2 and OPNA have different behaviors and PMD doesn't support this command.]'[li[Every tables in STD instrument. PMD only have parametric volume envelope and nothing else.]'[li[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.]'[li[Arpeggio (0xx)]'[li[Position Jump (Bxx)]'[li[Retrig (Cxx)]'[li[Most of extended commands.]]

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

'[#[See also]
'[[Professional Music Driver (PMD)]