FAR module testing.
Module | xmp (libxmp/libxmp#500) | MikMod (sezero/mikmod#37) | OpenMPT | Effects |
---|---|---|---|---|
4Go10/m31.far | OK | OK | OK | B F |
Dafydd/pond in the palace of pythagoras.far | OK | OK | OK | B |
Daniel Potter/residual ambient amperage.far | OK | OK | OK | 1 F |
Dirty Jester/techno riders.far | OK (a2cc3bd) | OK | OK | F |
Guillermo Luijk Delgado/to the polish of valencia.far | OK (32a338f) | OK (b2a5c13) | [1], [2] | D E F (+zero pattern) |
Haj/before.far | OK, [3] | OK, [3], [6] @ 16h | [1], [3], [6] @ 16h | 1 2 4 B D E F |
Haj/cold recognition.far | OK? :( | OK? :( [8] | [1], [8] | 1 2 3 4 7 8 A B E |
Haj/optimists push mood toward the fear.far | OK? :( | OK? :( | [1], pitch wrong near end? | 1 2 3 4 B E F |
Haj/vanish.far | OK (53a90e7) | OK? (3c49302) | [1], [4] | 2 3 4 B E F |
Jamie Watts/amazon dawn.far | OK (b3a6b1b) | OK (d5c0ec8) | [4] ★ | 3 B F |
Krystall/emerald dream.far | OK (d2ad428) | OK (f407753) | [1], [4], [5] @ 38 ★ | 3 4 B D E F |
Krystall/just another mystical song.far | OK | OK | [4], [5] @ 10 ★ | 3 4 F |
Krystall/once upon a time.far | OK | OK | [4] ([5], but no issues) | 3 4 B F |
Krystall/our world.far | OK | OK | [1], [4], [5] ★ | 3 4 B D E F |
Krystall/paracidize.far | OK (32a338f) | OK (b2a5c13) | [2], [4] | 3 B F (+zero pattern) |
Krystall/symphony 1.far | OK | OK | [1], [4] | 3 B D E F |
Krystall/twenty million miles to venus.far | OK | [6] @ 4 ★ | [1], [6] @ 4 ★ | 1 2 B E F |
Kueppenshreck/a journey into sound.far | OK | [6] @ 6, [7] @ 2 ★ | [1], [6] @ 6, [7] @ 2 ★ | 2 5 6 B D E F |
Luigi Smythe/heir-born.far | OK | OK | [1] ★ | B D E F |
MHz/dark dreams.far | OK (2a11f4a) | OK (b2a5c13) | OK | B F (+loop to 2) |
Maelcum/budda on a bicycle.far | OK | OK | OK | |
Marc/no answer.far | OK | OK | OK | B |
Marc/second-hand communion.far | OK | OK (b2a5c13) | OK | B F (+loop to 12) |
Prescience/aurora.far | OK | OK | [1] ★ | B D F (relies on D? underflow!) |
Prescience/etheral nebula.far | OK | [6] ★ | [4] [6] ★ | 1 2 3 4 B (1? interrupts 3? !) |
Ryan Cramer/thunder dream.far | OK | OK | [1] ★ | D E F |
Sc'en/alterations of time.far | OK | OK (b2a5c13) | OK, [2] ★ | (+zero pattern) |
Silent Knight/beyond the shores of avalon.far | OK | OK (b2a5c13) | [1], [2] ★ | D E (+two zero patterns) |
Soundwave (US)/the palace festival.far | OK | OK (b2a5c13) | OK, [2] ★ | B C F (+zero pattern) |
The Kiefdevil/nonshlen tustokken.far | OK | OK | [1] | 4 E F |
Zowie/backfire.far | OK | OK, [6] | [4], [6] | 1 3 B |
Zowie/far from earth.far | OK | OK, [6] | [4], [6] | 1 3 B |
Zowie/invasion part 1.far | OK | OK | [4] | 3 |
Zowie/invation part 2.far | OK | OK | [4] | 3 B |
Zowie/the rain in the ruin.far | OK (17609ef) | OK (3c49302) | [1], [4] ★ | 3 B D F |
Zowie/the vagabond.far | OK | OK | [5] | 4 B |
Effects test module (effects.far) | [1b], [5] (old tempo only) | [1b 6 7 8 10 11] ★ | [1 1b 4 5 6 7 8 10 11] ★ | 03 04 05 1 2 3 4 5 6 7 8 9 A B C D E F |
- New tempo mode inaccuracies. Affects all modules, but only marked for usages where it matters due to unimplemented fine tempo. OpenMPT: it seems to use 80 BPM and puts coarse tempo as speed, which unfortunately doesn't line up with reality. Also seems to ignore fine tempo. Fixed in libxmp patch as of a2cc3bd, fixed in MikMod patch as of 3c49302. 1b) Old tempo mode inaccuracies. These are pretty much unavoidable in libxmp due to the necessary small tick sizes sounding terrible and XMP_MIN_BPM. Other players may not bother implementing this because it's kind of bad and nothing uses it.
- When the order list references a zero-length pattern, a blank pattern is created with a break line equal to the default break value configured by the user.
By default, this is
3F
, i.e. these blank patterns are USUALLY 64 rows long. MikMod and OpenMPT both ignore these, libxmp patch supports as of 32a338f. - Relies on overflowing or underflowing GUS pitch using effect
1?
or2?
, which is unsupported by this replayer. - Tone portamento not implemented correctly. It might not be persistent tone portamento, or the timing just might not be quite right.
- Problems related to 4? Retrigger. This may be caused by [1] or it might just be due to not emulating the weird delay calculation.
- Tone slide issues. Usually tone slide is too powerful. In at least one case a module relies on
1?
or2?
interrupting3?
. - Vibrato issues. "a journey into sound.far" is the only FAR I know of that uses effects
5?
and6?
(nothing beside my test FAR uses9?
, but it's easy to support). Effect5?
is used to set the global vibrato depth in pattern 9/order 0, then several other patterns use6?
in multiple different channels, including pattern 0. Vibrato is used mostly on major/minor string chords that are pretty noticeable during playback in Farandole Composer. - This module uses effect A? "Slide to vol". It works more or less like tone portamento, but with the volume column value as the target instead of the note. For libxmp I ended up putting the volume in the high nibble of the parameter and left the volume column blank when this effect is used (to make things easier). It's probably a good idea to use the FAR effects test module to implement this because "cold recognition.far" is painful and it's the only one I found that uses it.
C?
Note Offset is a strange command: it seems like it should be equivalent to note delay in other formats, but it plays a note on tick 0 and a second note at the specified offset. The specified offset is supposed to work like retrigger, but due to the high divisor and no tempos ever having more than 15 ticks, the parameter effectively represents the tick number the second note should play on. Convenient! The only module that uses this isthe palace festival.far
, but its usage seems to be an accidental substitution for effectB?
and can be ignored. Use the effects test module instead.03
Fulfill Loop is meant to act like a sustain release but I haven't 100% figured out the mechanics of how it works. Often it just cuts the sample. It might be guaranteed to work if the sample loop starts at 0 and ends at the end of the sample, but more experimentation is required.
★: Module is well made and is a good example of these issues.