Apparently more chiptune musicians in the West are familiar with FamiTracker than with MML (PPMCK) or LilyPond, the notations that inspired Pently syntax. Competing NES music engines, such as FamiTone, offer one-click conversion of a subset of FamiTracker text exports to their own format. At first I thought the differences between FamiTracker and Pently were so insurmountable. But eventually I figured out a subset that might be workable.
The following command produces a text export:
famitracker.exe etude.ftm -export etude.txt
Interpretation of the text export would not be without compromises:
Expansion sound: Only MMC5 is supported, and the first MMC5 channel would translate to the attack channel.
Release phases of envelopes are initially unsupported, as are pitch and high-pitch envelopes and the volume channel in patterns.
The following effects are supported
0xy -> ENxy
3xx -> Set slur to true if x is nonzero else false
Bxx -> dal segno, setting frame x as the segno
Cxx -> fine
Dxx -> pattern break. x is ignored and treated as if it were 00.
Fxx -> set Pently tempo based on FT speed, FT tempo, current scale, current time signature, and frame rate.
Gxx -> grace wait for x frames then note
Qxy -> Note for one row then slur into new pitch y semitones up, ignoring x
Rxy -> Note for one row then slur into new pitch y semitones down, ignoring x
Sxx -> grace note for x frames then rest
Each pitch at which a noise note is played would need to become a separate sound effect.
But a conversion still needs to specify the time signature (what's a measure?) and the scale (how many rows is an eighth note?).
Apparently more chiptune musicians in the West are familiar with FamiTracker than with MML (PPMCK) or LilyPond, the notations that inspired Pently syntax. Competing NES music engines, such as FamiTone, offer one-click conversion of a subset of FamiTracker text exports to their own format. At first I thought the differences between FamiTracker and Pently were so insurmountable. But eventually I figured out a subset that might be workable.
The following command produces a text export:
Interpretation of the text export would not be without compromises:
0xy
->ENxy
3xx
-> Set slur to true ifx
is nonzero else falseBxx
->dal segno
, setting framex
as thesegno
Cxx
->fine
Dxx
-> pattern break.x
is ignored and treated as if it were00
.Fxx
-> set Pently tempo based on FT speed, FT tempo, current scale, current time signature, and frame rate.Gxx
-> grace wait forx
frames then noteQxy
-> Note for one row then slur into new pitchy
semitones up, ignoringx
Rxy
-> Note for one row then slur into new pitchy
semitones down, ignoringx
Sxx
-> grace note forx
frames then restBut a conversion still needs to specify the time signature (what's a measure?) and the scale (how many rows is an eighth note?).