   #[1]Edit [2]OpenMPT Wiki (en) [3]OpenMPT Wiki Atom feed

Development: Test Cases/IT

   From OpenMPT Wiki
   [4]Jump to navigation [5]Jump to search

   This test suite is a collection of IT modules that were created while
   discovering playback bugs in OpenMPT. It is meant to be an easy way to
   check for regressions when code is changed, or to verify your own
   player’s routines if you are concerned about playback compatibility.
   The tests are designed in a way so that it is easy to figure out if
   your player is working correctly. In most test cases, your own player’s
   output can be heard on the left channel, while Impulse Tracker’s output
   is heard on the right channel. This way, it is easy to find out whether
   everything works as intended or if there are any discrepancies without
   having to read any long test descriptions. When it is impossible to do
   such a cross-verification, a more detailed description of the test can
   usually be found in the sample, instrument or comment text.

   Some test cases mention that they should stay quiet when played
   correctly. This does not take different ramping algorithms into account
   (so there might me a small “pop” at the start of samples or when
   changing the volume), and it is generally expected that the test cases
   are rendered at a mix rate of 44100 Hz, as otherwise different
   calculations of channel playback speed and interpolation settings may
   cause small but noticable differences in playback.

   Bit-exact output is not the goal of this test suite, correct playback
   is, so slight deviations from Impulse Tracker’s output (e.g. different
   resampling algorithms, pop reduction, etc.) are acceptable. Some tests
   will only sound correct on the first run. Unless stated otherwise, it
   is not important that the test output sounds identical when looping the
   module.

   Most test cases are documented (more or less) in OpenMPT’s source code
   with a reference to the filename of the test case. I am sorry that many
   tests do not have proper descriptions − I have started this
   documentation years after I have fixed some of these issues and can
   thus not remember all the details anymore. If you are stuck with one of
   the tests, you may have a look at specific source code revisions that
   are provided with most tests to see what was changed in the code to
   make it work correctly.

   Last but not least, please keep in mind that some descriptions might be
   wrong or too general. Sometimes, the description might be correct in
   the given test case, but changing the test case slightly might
   completely invalidate the description of how an effect is supposed to
   work, for example. If you know better than me, please correct the
   texts, and please ask me if you need more information one of the test
   cases. The documentation is not always optimal because the test cases
   have been written long before I have created this site.
   [ ]

Contents

     * [6]1 Autovibrato-Reset.it
     * [7]2 Bidi-Loops.it
     * [8]3 BidiPrecision.it
     * [9]4 CarryNNA.it
     * [10]5 cut-carry.it
     * [11]6 dct_smp_note_test.it
     * [12]7 DNA-NoInstr.it
     * [13]8 DoubleSlide.it
     * [14]9 DoubleSlideCompatGxx.it
     * [15]10 empty_sample_offset.it
     * [16]11 emptyslot.it
     * [17]12 env-flt-max.it
     * [18]13 EnvLoopEscape.it
     * [19]14 EnvLoops.it
     * [20]15 EnvOffLength.it
     * [21]16 EnvReset.it
     * [22]17 extreme-filter-test-1.it
     * [23]18 extreme-filter-test-2.it
     * [24]19 Fade-Porta.it
     * [25]20 filter-7F.it
     * [26]21 FilterEnvReset.it
     * [27]22 FilterPortaSmpChange.it
     * [28]23 FilterPortaSmpChange-InsMode.it
     * [29]24 filter-nna.it
     * [30]25 filter-reset.it
     * [31]26 filter-reset-carry.it
     * [32]27 filter-reset-envelope.it
     * [33]28 FilterResetPatDelay.it
     * [34]29 FineVolColSlide.it
     * [35]30 flt-env-carry.it
     * [36]31 fltmacro.it
     * [37]32 freqreset-noins.it
     * [38]33 GlobalVolFirstTick.it
     * [39]34 globalvol-invalid.it
     * [40]35 GlobalVolume-Macro.it
     * [41]36 gxsmp.it
     * [42]37 gxsmp2.it
     * [43]38 gxxtest.it
     * [44]39 InitialNoteMemory.it
     * [45]40 InitialNoteMemoryInstrMode.it
     * [46]41 ins-flt-porta-reset.it
     * [47]42 ins-oc.it
     * [48]43 ins-ox.it
     * [49]44 ins-xc.it
     * [50]45 ins-xx.it
     * [51]46 InstrAfterMultisamplePorta.it
     * [52]47 InstrumentNumberChange.it
     * [53]48 JxxTicks.it
     * [54]49 LinearSlides.it
     * [55]50 LoopBreak.it
     * [56]51 LoopStartAfterPatternEnd.it
     * [57]52 macro-lastnote.it
     * [58]53 MacroExtendedParam.it
     * [59]54 MultiZxx.it
     * [60]55 NoMap.it
     * [61]56 NoMapEffects.it
     * [62]57 NoSlide.it
     * [63]58 NoteFade-SmpMode.it
     * [64]59 NoteFade-InsMode.it
     * [65]60 noteoff2.it
     * [66]61 noteoff3.it
     * [67]62 NoteOffInstr.it
     * [68]63 Off-Porta.it
     * [69]64 Off-Porta-CompatGxx.it
     * [70]65 OffsetWithInstr.it
     * [71]66 PanbrelloHold.it
     * [72]67 PanReset.it
     * [73]68 PanResetInstr.it
     * [74]69 PatternDelay-NoteDelay.it
     * [75]70 PatternDelays.it
     * [76]71 PatternDelaysRetrig.it
     * [77]72 PitchPanReset.it
     * [78]73 PortaCutCompat.it
     * [79]74 PortaInsNum.it
     * [80]75 PortaInsNumCompat.it
     * [81]76 PortaJustStoppedNote.it
     * [82]77 porta-offset.it
     * [83]78 PortaReset.it
     * [84]79 PortaResetAfterRetrigger.it
     * [85]80 PortaSample.it
     * [86]81 PortaSampleCompat.it
     * [87]82 RandomPan.it
     * [88]83 RandomWaveform.it
     * [89]84 ResetEnvNoteOffOldFx.it
     * [90]85 ResetEnvNoteOffOldFx2.it
     * [91]86 retrig.it
     * [92]87 retrig-short.it
     * [93]88 s7xinsnum.it
     * [94]89 s77.it
     * [95]90 SampleNumberChange.it
     * [96]91 SampleSustainAfterPorta.it
     * [97]92 SampleSustainAfterPortaCompatGxx.it
     * [98]93 SampleSustainAfterPortaInstrMode.it
     * [99]94 sbx-priority.it
     * [100]95 scx.it
     * [101]96 SlideDelay.it
     * [102]97 SmpInsPanSurround.it
     * [103]98 surround-pan.it
     * [104]99 StoppedInstrSwap.it
     * [105]100 SusAfterLoop.it
     * [106]101 SwapNNA.it
     * [107]102 swaptest.it
     * [108]103 swing1.it
     * [109]104 swing2.it
     * [110]105 swing3.it
     * [111]106 swing4.it
     * [112]107 swing5.it
     * [113]108 tickdelay.it
     * [114]109 tremolo.it
     * [115]110 vibrato.it
     * [116]111 VibratoDouble.it
     * [117]112 vibrato-oldfx.it
     * [118]113 VibratoSweep0.it
     * [119]114 VolColMemory.it
     * [120]115 vol-env-carry.it
     * [121]116 Volume-Macro-Letters.it
     * [122]117 weirdloop.it
     * [123]118 ZxxSecrets.it

Autovibrato-Reset.it

   Current status: OpenMPT passes this test since revision ???.
   Download: [124]Autovibrato-Reset.it
   Description: The autovibrato sweep is not reset when using portamento.

Bidi-Loops.it

   Current status: OpenMPT passes this test since revision 793.
   Download: [125]Bidi-Loops.it
   Description: In Impulse Tracker’s software mixer, ping-pong loops are
   shortened by one sample. This does not happen with the GUS hardware
   driver, but I assume that the software drivers were more popular due to
   the limitations of the GUS, so OpenMPT emulates this behaviour.

BidiPrecision.it

   Current status: OpenMPT passes this test since revision 15871.
   Download: [126]BidiPrecision.it
   Description: An extension to [127]Bidi-Loops.it, this test verifies
   that the loop length of ping-pong loops is precise. The test is not
   required to stay absolutely silent, but the two channels may not phase,
   i.e. the sound should be a static buzz.

CarryNNA.it

   Current status: OpenMPT passes this test since revision 1503.
   Download: [128]CarryNNA.it
   Description: This is a very interesting test case, because it actually
   sounds different when using Impulse Tracker’s WAV writer and Sound
   Blaster (and probably other drivers) output (the Sound Blaster 16 MMX
   driver also follows the behaviour of the WAV writer, to make things
   even more confusing). The main difference is that the Sound Blaster
   driver will only consider the envelope carry flag if the New Note
   Action is not “Note Cut”. The WAV writer does not check for the NNA and
   will always apply the carry flag if it’s set. OpenMPT goes after the
   WAV writer, while e.g. XMPlay used the Sound Blaster behaviour for the
   volume and panning envelope, but the WAV writer’s behaviour for the
   filter envelope (because of a bug report some years ago) up until 2016.
   Obviously it is hard to consider which of the two behaviours is
   correct, so I would just say that both are. :) However, the WAV writer
   behaviour definitely is more useful (not being able to use Envelope
   Carry despite it being enabled is quite misleading), I strongly
   encourage everyone to implement this behaviour.

cut-carry.it

   Current status: OpenMPT passes this test since revision 1165.
   Download: [129]cut-carry.it
   Description: Envelopes that have the carry flag set cannot be “picked
   up” / continued after the note has been cut.

dct_smp_note_test.it

   Current status: OpenMPT passes this test since revision 12819.
   Download: [130]dct_smp_note_test.it
   Description: Instrument Duplicate Check Type “Sample” should only be
   carried out if the old and new instrument match (like all other check
   types).
   Instrument Duplicate Check Type “Note” should compare the old and new
   pattern note, not translated notes according to the instrument’s
   mapping.

DNA-NoInstr.it

   Current status: OpenMPT passes this test since revision 6311.
   Download: [131]DNA-NoInstr.it
   Description: OpenMPT previously did not properly check for the correct
   sample slot or sample map entry in DNA and NNA checks if no instrument
   number was provided. This testcase should remain silent when played
   correctly, i.e. both the first and second note on channel 1 should
   sound until the end of the pattern.

DoubleSlide.it

   Current status: OpenMPT passes this test since revision 21807.
   Download: [132]DoubleSlide.it
   Description: Impulse Tracker generally initializes effect parameters,
   effect working memory and similar stuff once per row, before the
   effects actually run. When using (tone) portamento commands
   simulatenously in the effect column and volume column, this can lead to
   surprising results, and in order to emulate them correctly, it is
   crucial to implement the effect memory initialization in the exact same
   order as Impulse Tracker does:
    1. Evaluate effect column Gxx parameter
    2. Evaluate volume column gx parameter
    3. Evaluate volume column ex / fx parameter
    4. Evaluate effect column Exx / Fxx parameter

   If played correctly, The left and right channel of this module should
   sound identical. The last few rows should stay silent.

DoubleSlideCompatGxx.it

   Current status: OpenMPT passes this test since revision 21807.
   Download: [133]DoubleSlideCompatGxx.it
   Description: A variation of of [134]DoubleSlide.it with the Compatible
   Gxx flag turned on. The same rules as above apply, but since portamento
   up / down and tone portamento memory is not linked, there are some
   natural differences in handling.

empty_sample_offset.it

   Current status: OpenMPT passes this test since revision 6343.
   Download: [135]empty_sample_offset.it
   Description: In instrument mode, if an offset effect is found next to a
   note that maps to an invalid sample slot, the offset and illegal note
   should be ignored completely. Note that this behaviour is different
   from sample mode, where a previously playing sample will be stopped.

emptyslot.it

   Current status: OpenMPT passes this test since revision 1671.
   Download: [136]emptyslot.it
   Description: I think, Impulse Tracker treats instruments like an
   additional layer of abstraction and first replaces the note and
   instrument in the pattern by the sample and note assignments from the
   sample map table before further evaluating the pattern. That would
   explain why for example the empty sample map slots do nothing in this
   module.

env-flt-max.it

   Current status: OpenMPT passes this test since revision 1090 (?).
   Download: [137]env-flt-max.it
   Description: If resonance is not applied, the filter envelope’s maximum
   value does not enable any filtering. However, it also does not disable
   any filtering when returning from a non-maximum point. This pretty much
   works like Zxx commands.

EnvLoopEscape.it

   Current status: OpenMPT passes this test since revision 4009.
   Download: [138]EnvLoopEscape.it
   Description: I created [139]EnvOffLength.it without realizing that it
   is essentially the same bug as this one.

EnvLoops.it

   Current status: OpenMPT passes this test since revision 1213.
   Download: [140]EnvLoops.it
   Description: In this test, all possible combinations of the envelope
   sustain point and envelope loops are tested, and you can see their
   behaviour on note-off. If the sustain point is at the loop end and the
   sustain loop has been released, don't loop anymore. Probably the most
   important thing for this test is that in Impulse Tracker (and
   Fasttracker 2), envelope position is incremented before the point is
   evaluated, not afterwards, so when no ticks have been processed yet,
   the envelope position should be invalid.

EnvOffLength.it

   Current status: OpenMPT passes this test since revision 4009.
   Download: [141]EnvOffLength.it
   Description: If an envelope sustain loop happens to end on exactly the
   same tick as a note-off event occurs, the envelope is not yet released.
   It will be released whenever the loop end is being hit again.

EnvReset.it

   Current status: OpenMPT passes this test since revision 1481.
   Download: [142]EnvReset.it
   Description: Impulse Tracker resets envelopes under some more or less
   weird conditions. This tests some of them.

extreme-filter-test-1.it

   Current status: OpenMPT passes this test since revision 1090.
   Download: [143]extreme-filter-test-1.it
   Description: If resonant filters are rendered with integer arithmetic,
   they may produce scratching noises in some edge cases. You should not
   hear any scratches or other weird noises when playing this example.

extreme-filter-test-2.it

   Current status: OpenMPT passes this test since revision 1090.
   Download: [144]extreme-filter-test-2.it
   Description: Same as the above test case. xmp breaks this module’s
   output even more than older versions of OpenMPT.

Fade-Porta.it

   Current status: OpenMPT passes this test since revision 1144.
   Download: [145]Fade-Porta.it
   Description: After a note has been stopped in some way (for example
   through fade-out or note cut), tone portamento effects on the following
   note are ignored, i.e. there is no portamento from the stopped note to
   the new note.

filter-7F.it

   Current status: OpenMPT passes this test since revision 1090 (?).
   Download: [146]filter-7F.it
   Description: A small test case that demonstrates that full cutoff
   should not enable the filter if no resonance is applied. Resonance is
   only ever applied if the cutoff is not full or the resonance is not
   zero.

FilterEnvReset.it

   Current status: OpenMPT passes this test since revision 1132.
   Download: [147]FilterEnvReset.it
   Description: A cutoff value of 0 should not be reset to full cutoff
   when triggering a note just because the filter envelope is enabled.
   This bug is probably very specific to OpenMPT, because it gets rid of
   some unneccessary code.

FilterPortaSmpChange.it

   Current status: OpenMPT passes this test since revision 18417.
   Download: [148]FilterPortaSmpChange.it
   Description: Normally Impulse Tracker does not disable the filter on
   portamento if cutoff was previously at 127 and resonance at 0, but in
   sample mode that is not the case when the new note plays a different
   sample.

FilterPortaSmpChange-InsMode.it

   Current status: OpenMPT passes this test since revision ?.
   Download: [149]FilterPortaSmpChange-InsMode.it
   Description: Complementary test for [150]FilterPortaSmpChange.it in
   instrument mode. Here the cutoff should never be reset on portamento.

filter-nna.it

   Current status: OpenMPT passes this test since revision 1169.
   Download: [151]filter-nna.it
   Description: This test is just there to be sure that the
   filter-reset.it and filter-reset-carry.it test cases do not break NNA
   background channels.

filter-reset.it

   Current status: OpenMPT passes this test since revision 1165.
   Download: [152]filter-reset.it
   Description: As mentioned already, filtering is only ever done in IT if
   either cutoff is not full or if resonance is set. When a Z7F command is
   found next to a note and no portamento is applied, it disables the
   filter, however in other cases this should not happen.

filter-reset-carry.it

   Current status: OpenMPT passes this test since revision 1165.
   Download: [153]filter-reset-carry.it
   Description: I think this is also just an extenion to the previous test
   case, to make sure that it does not break anything else.

filter-reset-envelope.it

   Current status: OpenMPT passes this test since revision 16016.
   Download: [154]filter-reset-envelope.it
   Description: This test checks that the filter is reset correctly for
   delayed filtered notes, and also acts as a regression test for
   [155]filter-reset.it, because the first implementation for this test
   broke the other test. The output should stay silent (small pops are
   okay).

FilterResetPatDelay.it

   Current status: OpenMPT passes this test since revision 16137.
   Download: [156]FilterResetPatDelay.it
   Description: An extension of [157]filter-reset-envelope.it, this
   verifies the filter reset behaviour on rows with a Pattern Delay. The
   filter reset logic should only be applied on rows that are actually
   retriggering the note: If there is no note delay, the note is
   retriggered only on the first tick. If there is a note delay, the note
   is retriggered on every repetition of that row (see
   [158]PatternDelay-NoteDelay.it).

FineVolColSlide.it

   Current status: OpenMPT passes this test since revision 2400.
   Download: [159]FineVolColSlide.it
   Description: Unlike fine volume slides in the effect column, fine
   volume slides in the volume column are only ever executed on the first
   tick — not on multiples of the first tick if there is a pattern delay.
   Thus, the left and right channel of this example should always have the
   same volume.

flt-env-carry.it

   Current status: OpenMPT passes this test since revision 693 (?).
   Download: [160]flt-env-carry.it
   Description: Envelope carry on the filter envelope. I think this is
   just a general test on how envelope carry is applied. It is possible
   that Impulse Tracker’s MMX drivers will play this in a different way
   from the WAV writer.

fltmacro.it

   Current status: OpenMPT passes this test since revision ???.
   Download: [161]fltmacro.it
   Description: This test uses a custom macro configuration that uses the
   instrument volume to control the filter cutoff. A correctly implemented
   MIDI Macro system should pass this test.

freqreset-noins.it

   Current status: OpenMPT passes this test since revision 325.
   Download: [162]freqreset-noins.it
   Description: When using multisample instruments, even notes with no
   instrument number next to them can change the sample (based on the
   active instrument’s sample map). When switching between samples, you
   must not forget to update the C-5 frequency of the playing sample as
   well.

GlobalVolFirstTick.it

   Current status: OpenMPT passes this test since revision 6362.
   Download: [163]GlobalVolFirstTick.it
   Description: Set Global Volume (Vxx) should be applied on the first
   tick (and multiples in case of pattern delays). If played correctly,
   the first and second row of this module should sound more or less
   identical, i.e. each row should play 16 fading notes.

globalvol-invalid.it

   Current status: OpenMPT passes this test since revision 290.
   Download: [164]globalvol-invalid.it
   Description: Out-of-range global volume commands (V81...VFF) should not
   change the current global volume. This test module should remain
   completely silent.

GlobalVolume-Macro.it

   Current status: OpenMPT currently fails this test.
   Download: [165]GlobalVolume-Macro.it
   Description: Global volume, channel volume and various other parameters
   are taken into account when interpreting the 'u' and 'v' letters in
   MIDI macros. However, this feature seems to be quirky, and I have
   decided not to support these quirks in OpenMPT, as I do not think that
   anyone used this feature in Impulse Tracker very much and I would want
   it to work in a sane way when using it to control instrument plugins in
   OpenMPT. The quirks are:
     * Channel and global volume seem to be applied one row after they
       have been set. This does not seem to be the whole truth, though, as
       looking at pattern 0, row 9, you should hear that IT applies the
       M40 channel volume change on row 10.
     * Instrument / sample volume also seems to be applied one row late
       when using the 'u' macro, but not the 'v' macro (compare first and
       second pattern, row 15 - 22 each).

   There are also some problems with volume swing which might be fixed
   later.

gxsmp.it

   Current status: OpenMPT passes this test since revision 1671.
   Download: [166]gxsmp.it
   Description: Another test case with an empty sample map slot which is
   simply ignored by Impulse Tracker.

gxsmp2.it

   Current status: OpenMPT passes this test since revision 1671.
   Download: [167]gxsmp2.it
   Description: Going one step further by also changing the sample next to
   that portamento.

gxxtest.it

   Current status: OpenMPT passes this test since revision 4330.
   Download: [168]gxxtest.it
   Description: And another similar test.

InitialNoteMemory.it

   Current status: OpenMPT passes this test since revision 18838.
   Download: [169]InitialNoteMemory.it
   Description: The initial "last note" memory of each channel in Impulse
   Tracker is initialized to C-0. So the first lone instrument number
   without any note next to it will play a C-0 of that instrument.

InitialNoteMemoryInstrMode.it

   Current status: OpenMPT passes this test since revision 18838.
   Download: [170]InitialNoteMemoryInstrMode.it
   Description: A variation of [171]InitialNoteMemory.it, but in
   instrument mode. The lowest note of instrument 1 has no sample
   association, which will also cause subsequent notes without instrument
   number to not play.

ins-flt-porta-reset.it

   Current status: OpenMPT passes this test since revision ???.
   Download: [172]ins-flt-porta-reset.it
   Description: Instrument filter settings should not be applied if there
   is a portamento effect.

ins-oc.it

   Current status: OpenMPT passes this test since revision 11293.
   Download: [173]ins-oc.it
   Description: Instrument number resets envelope behaviour test with Old
   Effects enabled, Compatible Gxx enabled: Always reset envelopes.

   Note: WAV export in Impulse Tracker versions with Envelope Carry
   support differs from GUS / SoundBlaster playback in the second pattern.
   This track uses “real” sound card output as a reference.

ins-ox.it

   Current status: OpenMPT passes this test since revision 11293.
   Download: [174]ins-ox.it
   Description: Instrument number resets envelope behaviour test with Old
   Effects enabled, Compatible Gxx disabled: Reset envelopes if there is
   no tone portamento.

   Note: WAV export in Impulse Tracker versions with Envelope Carry
   support differs from GUS / SoundBlaster playback in the second pattern.
   This track uses “real” sound card output as a reference.

ins-xc.it

   Current status: OpenMPT passes this test since revision 11293.
   Download: [175]ins-xc.it
   Description: Instrument number resets envelope behaviour test with Old
   Effects disabled, Compatible Gxx enabled: Reset envelopes if there is a
   tone portamento.

   Note: WAV export in Impulse Tracker versions with Envelope Carry
   support differs from GUS / SoundBlaster playback in the second pattern.
   This track uses “real” sound card output as a reference.

ins-xx.it

   Current status: OpenMPT passes this test since revision 0.
   Download: [176]ins-xx.it
   Description: Instrument number resets envelope behaviour test with Old
   Effects disabled, Compatible Gxx disabled: Never reset envelopes.

InstrAfterMultisamplePorta.it

   Current status: OpenMPT passes this test since revision 7465.
   Download: [177]InstrAfterMultisamplePorta.it
   Description: A lone instrument number should only reset sample
   properties to those of the corresponding sample in instrument mode.
   Example:
C#5 01 ... <-- sample 1
C-5 .. g02 <-- sample 2
... 01 ... <-- still sample 1, but with properties of sample 2

   In the above example, no sample change happens on the second row. In
   the third row, sample 1 keeps playing but with the volume and panning
   properties of sample 2.

InstrumentNumberChange.it

   Current status: OpenMPT passes this test since revision 1902.
   Download: [178]InstrumentNumberChange.it
   Description: While Impulse Tracker cuts playing samples if it
   encounters an invalid sample number in sample mode, the same does not
   happen if we are in instrument mode.

JxxTicks.it

   Current status: OpenMPT passes this test since revision 1537.
   Download: [179]JxxTicks.it
   Description: Impulse Tracker’s arpeggio logic is pretty sane compared
   to some other trackers, but one detail should be kept in mind: Pattern
   Delays reset the tick counter, but it keeps incrementing with Fine
   Pattern Delays. The arpeggio sequence thus resets every (ticks per row
   + fine pattern delay) ticks.

LinearSlides.it

   Current status: OpenMPT passes this test since revision 4330.
   Download: [180]LinearSlides.it
   Description: Impulse Tracker internally uses actual frequency values,
   while Fasttracker 2 still uses exponentially scaled fine Amiga periods.
   When doing fine slides, errors from using periods instead of frequency
   can add up very quickly, and thus the two channel's frequency in this
   test will converge noticeably.

LoopBreak.it

   Current status: OpenMPT passes this test since revision 5413.
   Download: [181]LoopBreak.it
   Description: A pattern break (Cxx) on the same row as the end of a
   pattern loop (SBx) repeats the pattern loop x times and then jumps to
   the desired row. However, a position jump (Bxx) on the same row as the
   end of a pattern loop prevents the loop from being executed if it is
   right of the SBx effect. In this test, the left and right channel of
   the module should produce the same click patterns.

LoopStartAfterPatternEnd.it

   Current status: OpenMPT passes this test since revision 7791.
   Download: [182]LoopStartAfterPatternEnd.it
   Description: Since the start row of a pattern loop is not reset on
   pattern transitions, it is possible to use a loop start past the end of
   the current pattern when using a pattern loop without explicit start
   command (SB0). In this case, playback should continue in the next
   pattern. In the example, this happens because the loop start is set to
   one row after the loop end after properly terminating the loop in
   pattern 0.

macro-lastnote.it

   Current status: OpenMPT passes this test since revision 947 (?).
   Download: [183]macro-lastnote.it
   Description: A test of the MIDI macro letter “n”. This letter will
   always send the MIDI note value of the last triggered note, note cuts
   and similar “notes” are not considered. This module should remain
   silent as both channels should receive exactly the same cutoff values.

MacroExtendedParam.it

   Current status: OpenMPT passes this test since revision 16715.
   Download: [184]MacroExtendedParam.it
   Description: Even fixed macros (Z80-ZFF) can contain the letter “z”,
   which inserts the raw command parameter into the macro (i.e. a value in
   [80, FF[). In this file, macro ZF0 is used to insert byte F0 into the
   string. This way, two MIDI messages to set both the filter cutoff and
   resonance to 60h are created, which are the same filter settings as
   used in instrument 2, so the module should stay silent.

MultiZxx.it

   Current status: OpenMPT passes this test since revision 947 (?).
   Download: [185]MultiZxx.it
   Description: A MIDI macro can contain more than one MIDI message. In
   this case, the Z90 macro sets both the filter cutoff frequency and
   resonance, so if only the first MIDI message is considered in this
   macro, the module will no longer stay silent at row 8.

NoMap.it

   Current status: OpenMPT passes this test since revision 1671.
   Download: [186]NoMap.it
   Description: Yet another sample map test case. Why are there so many of
   them? They are all fixed by the same code...

NoMapEffects.it

   Current status: OpenMPT passes this test since revision 20790 + 20820.
   Download: [187]NoMapEffects.it
   Description: Empty instrument note map slots are truly one of the most
   mysterious parts of Impulse Tracker’s reply routines. This particular
   test started out to verify that a currently playing instrument’s
   envelopes are not reset by sample-less note map slots, but it quickly
   evolved into a complete nightmare. In this test you see many global
   effects, and not a single one of them does anything. They do not jump
   around in the pattern, they do not modify the tempo. Anything in a cell
   where a sample-less note map slot is hit is ignored completely. This
   also affects the first row of the module due to
   [188]InitialNoteMemory.it - this mechanism also takes previously
   triggered notes into account. Only on row 3 it does not apply, because
   Note Off / Note Cut / Note Fade invalidate the previously triggered
   note.

   All in all, this absolutely crazy test case should play identically on
   the left and right channel.

NoSlide.it

   Current status: OpenMPT passes this test since revision ???.
   Download: [189]NoSlide.it
   Description: This seems to be just a fancy test of portamento from a
   stopped note, but in this case an empty sample slot assigned to the
   same instrument was played before.

NoteFade-SmpMode.it

   Current status: OpenMPT passes this test since revision 317.
   Download: [190]NoteFade-SmpMode.it
   Description: A “note fade” note (any invalid note) should not do
   anything in sample mode. The sample should not be stopped.

NoteFade-InsMode.it

   Current status: OpenMPT passes this test since revision 317.
   Download: [191]NoteFade-InsMode.it
   Description: A “note fade” note (any invalid note) should fade out the
   instrument using its fadeout value.

noteoff2.it

   Current status: OpenMPT passes this test since revision ??? + 5829.
   Download: [192]noteoff2.it
   Description: The sample changes on rows 4 and 20, but not on rows 8 and
   24. However, the new sample′s default volume is loaded.

noteoff3.it

   Current status: OpenMPT passes this test since revision 12284.
   Download: [193]noteoff3.it
   Description: This is the same as noteoff2.it, but with old effects
   enabled. In this case, the sample should never fade out.

NoteOffInstr.it

   Current status: OpenMPT passes this test since revision 5829.
   Download: [194]NoteOffInstr.it
   Description: Any kind of Note Cut (SCx or ^^^) should stop the sample
   and not set its volume to 0. A subsequent volume command cannot
   continue the sample, but a note, even without an instrument number can
   do so. When played back correctly, the module should stay silent.

Off-Porta.it

   Current status: OpenMPT passes this test since revision 1344.
   Download: [195]Off-Porta.it
   Description: When "Compatible Gxx" is disabled, the key-off flag should
   only be removed when triggering new notes, but not when continuing a
   note using a portamento command.

Off-Porta-CompatGxx.it

   Current status: OpenMPT passes this test since revision 0 (temporarily
   broken in rev. 1344).
   Download: [196]Off-Porta-CompatGxx.it
   Description: When "Compatible Gxx" is enabled, the key-off flag should
   also be removed when continuing a note using a portamento command (row
   2, 4, 6). This test case was written to discover a code regression when
   fixing [197]Off-Porta.it).

OffsetWithInstr.it

   Current status: OpenMPT passes this test since revision 20863.
   Download: [198]OffsetWithInstr.it
   Description: An offset effect can be triggered if only an instrument
   number and no note is next to it, if the last triggered note was not a
   note cut, note off or note fade.

PanbrelloHold.it

   Current status: OpenMPT passes this test since revision 4712.
   Download: [199]PanbrelloHold.it
   Description: The panbrello offset should not only be added on the same
   row as the panbrello effect appears on, but also on all follow-up rows,
   until a panning command or a new note is encountered. This test case
   should remain mostly silent.

PanReset.it

   Current status: OpenMPT passes this test since revision 4713.
   Download: [200]PanReset.it
   Description: Contrary to XM, the default instrument and sample panning
   should only be reset when a note is encountered, not when an instrument
   number (without note) is encountered. The two channels of this module
   should be panned identically.

PanResetInstr.it

   Current status: OpenMPT passes this test since revision 11856.
   Download: [201]PanResetInstr.it
   Description: Instruments and samples with a defined panning should not
   override the channel panning for following notes. That is, if a
   different instrument with no panning set follows an instrument that has
   panning set, the first instrument’s panning should not be applied to
   the second instrument, but rather the channel panning as it was set
   before playing the first instrument (or if the channel panning was
   changed while that instrument was playing, the new channel panning
   applies as well). If played correctly, this test case should remain
   silent.

PatternDelay-NoteDelay.it

   Current status: OpenMPT passes this test since revision 1240.
   Download: [202]PatternDelay-NoteDelay.it
   Description: Delayed notes (using SDx) that are on the same row as a
   Row Delay effect are retriggered on every repetition. Notes without a
   note delay are not retriggered.

PatternDelays.it

   Current status: OpenMPT passes this test since revision 1224.
   Download: [203]PatternDelays.it
   Description: Tick delays (S6x) are added up, but when there are
   multiple row delays (SEx), only the first one is considered. The tricky
   part here is that Impulse Tracker even ignores all row delays next to a
   SE0 row delay. I suggest to do the following:
     * Initialize a row delay variable with 0.
     * Go through all channels. If there is a row delay on the current row
       and row delay is 0, set row delay = parameter + 1.
     * Calculate the complete row length: row length = (speed + tick
       delay) * max(1, row delay)

PatternDelaysRetrig.it

   Current status: OpenMPT passes this test since revision 1221.
   Download: [204]PatternDelaysRetrig.it
   Description: Rows on which a row delay (SEx) effect is placed have
   multiple “first ticks”, i.e. you should set your “first tick flag” on
   every tick that is a multiple of speed + tick delay. In this test
   module, the note pitch is changed multiple times per row, depending on
   the row and tick delay values.
   Note: This test case broke in r3520 and was fixed again in r4895.

PitchPanReset.it

   Current status: OpenMPT passes this test since revision 15870.
   Download: [205]PitchPanReset.it
   Description: Pitch/Pan Separation can be overriden by panning commands,
   and should not be affected by Note Off or Note Fade notes.

PortaCutCompat.it

   Current status: OpenMPT passes this test since revision 9139.
   Download: [206]PortaCutCompat.it
   Description: A follow-up test to [207]PortaSampleCompat.it and
   [208]PortaInsNumCompat.it to verify that the behaviour described in
   these tests is not used when currently no note is playing. Both
   channels should sound identical.

PortaInsNum.it

   Current status: OpenMPT passes this test since revision 1671.
   Download: [209]PortaInsNum.it
   Description: Portamento with funny sample maps. Without compatible Gxx,
   portamento between different samples should play the new sample.

PortaInsNumCompat.it

   Current status: OpenMPT passes this test since revision 2842.
   Download: [210]PortaInsNumCompat.it
   Description: Portamento with funny sample maps, in compatible Gxx mode.
   With compatible Gxx, portamento between different samples should keep
   playing the old sample.

PortaJustStoppedNote.it

   Current status: OpenMPT passes this test since revision 6193.
   Download: [211]PortaJustStoppedNote.it
   Description: [212]Fade-Porta.it already tests the general case of
   portamento picking up a stopped note (portamento should just be ignored
   in this case), but there is an edge case when the note just stopped on
   the previous tick. In this case, OpenMPT did previously behave
   differently and still execute the portamento effect.

porta-offset.it

   Current status: OpenMPT passes this test since revision 0.
   Download: [213]porta-offset.it
   Description: Unlike Fasttracker 2, Impulse Tracker does not ignore
   offset commands next to portamentos and executes them both. Even
   ModPlug Tracker 1.16 gets this test right.

PortaReset.it

   Current status: OpenMPT passes this test since revision 4181.
   Download: [214]PortaReset.it
   Description: Impulse Tracker completely resets the tone portamento
   target on every new non-portamento note, i.e. a follow-up Gxx effect
   should not slide back to the previously triggered note.

PortaResetAfterRetrigger.it

   Current status: OpenMPT passes this test since revision 7465.
   Download: [215]PortaResetAfterRetrigger.it
   Description: After a note has stopped playing, a lone instrument number
   can restart the note. In this case, portamento and other properties
   should be reset.

PortaSample.it

   Current status: OpenMPT passes this test since revision 1671.
   Download: [216]PortaSample.it
   Description: Impulse Tracker executes the portamento when switching to
   instrument two on the second row when compatible Gxx is disabled.

PortaSampleCompat.it

   Current status: OpenMPT passes this test since revision 2842.
   Download: [217]PortaSampleCompat.it
   Description: Impulse Tracker executes the portamento and doesn't switch
   to the new sample on the second row when compatible Gxx is enabled.

RandomPan.it

   Current status: OpenMPT passes this test since revision 2545.
   Download: [218]RandomPan.it
   Description: Pan swing should not be overridden by effects such as
   instrument panning or panning envelopes. Previously, pan swing was
   overridden in OpenMPT if the instrument also had a panning envelope. In
   this file, pan swing should be applied to every note.

RandomWaveform.it

   Current status: OpenMPT passes this test since revision 3670.
   Download: [219]RandomWaveform.it
   Description: When selecting the random waveform for panbrello, the
   “speed” nibble indicates for how many ticks the random value will be
   held. This behaviour is not used for vibrato / tremolo.

ResetEnvNoteOffOldFx.it

   Current status: OpenMPT passes this test since revision 11276 - 11283.
   Download: [220]ResetEnvNoteOffOldFx.it
   Description: In Old Effects mode, an instrument number next to a
   note-off does not just recall the default volume and panning, but also
   resets the envelopes.

   If the instrument is different from the currently playing instrument,
   the new instrument's envelope and default sample settings (default
   volume, panning, but not global volume) are loaded, but the old sample
   waveform keeps playing.

   When played correctly, the left and right audio channel should sound
   identical. On the last note, the tracker channels swap their stereo
   position.

ResetEnvNoteOffOldFx2.it

   Current status: OpenMPT passes this test since revision 11284.
   Download: [221]ResetEnvNoteOffOldFx2.it
   Description: An extension of ResetEnvNoteOffOldFx.it which also tests
   instrument note-off and sample sustain loop behaviour: While the sample
   sustain loop should be released, the instrument should not be faded
   out.

retrig.it

   Current status: OpenMPT passes this test since revision 364.
   Download: [222]retrig.it
   Description: A combination of the retrigger effect and instrument
   envelopes. Not sure how this works.

retrig-short.it

   Current status: OpenMPT passes this test since revision 1140.
   Download: [223]retrig-short.it
   Description: Impulse Tracker does not retrigger notes that are shorter
   than the duration of a tick. One might argue that this is a bug in
   Impulse Tracker, but OpenMPT emulates it anyway.

s7xinsnum.it

   Current status: OpenMPT passes this test since revision 1062.
   Download: [224]s7xinsnum.it
   Description: Changing the NNA action through the S7x command only
   affects the current note - The NNA action is reset on every note
   change, and not on every instrument change.

s77.it

   Current status: OpenMPT passes this test since revision 561
   (preliminary), 1112.
   Download: [225]s77.it
   Description: The S77 / S79 / S7B commands pause the instrument
   envelopes, they do not turn them off. S78 / S7A / S7C should resume the
   envelope at exactly the position where it was paused. In this test, it
   is again very important that the envelope position is incremented
   before the point is evaluated, not afterwards (see [226]EnvLoops.it).

SampleNumberChange.it

   Current status: OpenMPT passes this test since revision 0.
   Download: [227]SampleNumberChange.it
   Description: Contrary to [228]InstrumentNumberChange.it, even ModPlug
   Tracker 1.16 passes it.

SampleSustainAfterPorta.it

   Current status: OpenMPT passes this test since revision 20760.
   Download: [229]SampleSustainAfterPorta.it
   Description: When a sample’s sustain loop was released, and a new note
   from a different sample is played with tone portamento applied, the
   second sample’s sustain loop also stays released.

SampleSustainAfterPortaCompatGxx.it

   Current status: OpenMPT passes this test since revision 20760.
   Download: [230]SampleSustainAfterPortaCompatGxx.it
   Description: Same as [231]SampleSustainAfterPorta.it, but with
   Compatible Gxx turned on.

SampleSustainAfterPortaInstrMode.it

   Current status: OpenMPT passes this test since revision 20760.
   Download: [232]SampleSustainAfterPortaInstrMode.it
   Description: Same as [233]SampleSustainAfterPorta.it, but in instrument
   mode. Here a difference in the behaviour can be observed when doing a
   second switch after the initial note-off: The first time, the sustain
   loop remains disabled, but for the subsequent note, the sustain loop is
   used again. This does not happen in sample mode.

sbx-priority.it

   Current status: OpenMPT passes this test since revision 12171.
   Download: [234]sbx-priority.it
   Description: This is an extension of [235]LoopBreak.it. A position jump
   (Bxx) on the same row as the end of a pattern loop prevents the loop
   from being executed if it is right of the SBx effect, but if the
   position jump is left of the SBx effect, the loop should be
   prioritized. In this test, the left and right channel of the module
   should produce the same beep patterns.

scx.it

   Current status: OpenMPT passes this test since revision 1109.
   Download: [236]scx.it
   Description: The SCx command cuts notes just like a normal note cut
   (^^^), it does not simply mute them. However, there is a difference
   when placing a lone instrument number after a note that was cut with
   SCx and one cut with ^^^, as it can be seen in this test case.

SlideDelay.it

   Current status: OpenMPT passes this test since revision 3520.
   Download: [237]SlideDelay.it
   Description: If there's a note delay, slide and vibrato commands in the
   volume column next to it should not start before the delay has
   finished. So if there's a fine volume slide next to a SD5 effect should
   start on the 6th (one-based) tick. If this was a normal volume or pitch
   slide and the speed was 6 ticks per row, it would never execute, as the
   first non-zero tick would be the seventh tick.

SmpInsPanSurround.it

   Current status: OpenMPT passes this test since revision 1259.
   Download: [238]SmpInsPanSurround.it
   Description: Sample and instrument panning override the channel
   surround status, i.e. surround is turned off by samples or instruments
   with panning enabled.

surround-pan.it

   Current status: OpenMPT passes this test since revision 1134.
   Download: [239]surround-pan.it
   Description: Pan swing, panbrello, panning envelopes, etc. should have
   no effect on surround channels.

StoppedInstrSwap.it

   Current status: OpenMPT passes this test since revision 5829.
   Download: [240]StoppedInstrSwap.it
   Description: An instrument number with no note or next to a ^^^ should
   always be remembered for the next instrument-less note, even if sample
   playback is stopped.

SusAfterLoop.it

   Current status: OpenMPT passes this test since revision 1085.
   Download: [241]SusAfterLoop.it
   Description: When a sample sustain loop, which is placed partly or
   completely behind a “normal” sample loop is exited (through a note-off
   event), and the current sample playback position is past the normal
   loop’s end, it is adjusted to loop start + ((current position - loop
   start) % loop length).

SwapNNA.it

   Current status: OpenMPT passes this test since revision 10239.
   Download: [242]SwapNNA.it
   Description: Related to [243]s7xinsnum.it, the NNA action should be
   reset when doing an instrument swap with portamento.

swaptest.it

   Current status: OpenMPT passes this test since revision ???.
   Download: [244]swaptest.it
   Description: A test focussing on finding the correct sample playback
   position when switching samples “on the fly” (using instrument numbers
   without notes next to them). The module should remain silent when being
   played.

swing1.it

   Current status: OpenMPT passes this test since revision 1046 (?).
   Download: [245]swing1.it
   Description: Probably a very MPT-specific bug, as OpenMPT was adding
   the volume swing to the current volume, so even after setting the
   volume to 0, it was possible that you could hear the sample playing.

swing2.it

   Current status: OpenMPT passes this test since revision 1046 (?).
   Download: [246]swing2.it
   Description: This module should remain completely silent, as the random
   variation is multiplied with the sample volume.

swing3.it

   Current status: OpenMPT passes this test since revision 1046 (?).
   Download: [247]swing3.it
   Description: Of course you are not supposed to produce the same
   sequence of random number to fulfil this test case. I think this was
   just a test to explore which volume variables are actually affected by
   volume swing, and how it is applied.

swing4.it

   Current status: OpenMPT passes this test since revision 1046 (?).
   Download: [248]swing4.it
   Description: Same as above.

swing5.it

   Current status: OpenMPT passes this test since revision 1046 (?).
   Download: [249]swing5.it
   Description: Same as above.

tickdelay.it

   Current status: OpenMPT passes this test since revision 4948.
   Download: [250]tickdelay.it
   Description: This test detects whether out-of-range note delays are
   handled properly. If the SDx parameter is greater than the row length
   (including tick delay, but excluding row delay), any note and volume
   effects next to it are supposed to ignored (interestingly, the
   instrument number is saved, but not instantly used). The first two rows
   test tick delay behaviour (OpenMPT passes this test since revision
   1306), the third row tests row delay behaviour.

tremolo.it

   Current status: OpenMPT passes this test since revision 345 (?).
   Download: [251]tremolo.it
   Description: A test for checking if tremolo tables are implemented
   correctly.

vibrato.it

   Current status: OpenMPT passes this test since revision 1189.
   Download: [252]vibrato.it
   Description: A test for checking if vibrato tables are implemented
   correctly when old FX are disabled.

VibratoDouble.it

   Current status: OpenMPT passes this test since revision 7804.
   Download: [253]VibratoDouble.it
   Description: Vibrato in the volume column should be applied separately
   from vibrato in the effect column. The two commands will add up when
   occuring at the same time. However, since there is only one vibrato
   effect memory for both commands, the volume column’s vibrato parameter
   has precedence if it is not 0.

vibrato-oldfx.it

   Current status: OpenMPT passes this test since revision 1189.
   Download: [254]vibrato-oldfx.it
   Description: A test for checking if vibrato tables are implemented
   correctly when old FX are enabled. Vibrato is played backwards in this
   mode!

VibratoSweep0.it

   Current status: OpenMPT passes this test since revision 7134.
   Download: [255]VibratoSweep0.it
   Description: Auto-vibrato should not be processed at all if the rate
   (speed) is 0. This is relevant for vibrato waveforms that do not start
   at zero, i.e. all except sine.

VolColMemory.it

   Current status: OpenMPT passes this test since revision 1545.
   Download: [256]VolColMemory.it
   Description: Volume column commands a, b, c and d (volume slide) share
   one effect memory, but it should not be shared with Dxy in the effect
   column. Furthermore, there is no unified effect memory across different
   kinds of volume column effects (that's how OpenMPT used to handle it up
   to revision 1544).

vol-env-carry.it

   Current status: OpenMPT passes this test since revision 1781.
   Download: [257]vol-env-carry.it
   Description: Similar to flt-env-carry.it. This test case temporarily
   broke in revision 1481 and was fixed in revision 1781.

Volume-Macro-Letters.it

   Current status: OpenMPT passes this test since revision 1465.
   Download: [258]Volume-Macro-Letters.it
   Description: This test demonstrates how Zxx macros are parsed in
   Impulse Tracker:
     * Macros are evaluated only on the first tick.
     * They appear to be parsed after note / instrument information has
       been read from the pattern, but before any other effects (excluding
       "Set Volume").
     * 'u' and 'v' macros seem to emit at least a value of 1, not 0 - v00
       corresponds to Z01.

   I am not quite sure why the first row with notes on it emits a filter
   value of 1, and I am not even completely sure why OpenMPT gets this
   right. If interpreted correctly, the module should stay silent (minus
   slight filter artefacts, of course - but they should be nearly
   inaudible).

weirdloop.it

   Current status: OpenMPT passes this test since revision 0.
   Download: [259]weirdloop.it
   Description: A nice broken pattern loop. The voice should say “1 4 2 1
   4 2” and then repeat forever “3 4 2”. Theoretically, this would even
   work in ModPlug Tracker 1.16, if it did not reset the Cxx target on
   song loop.

ZxxSecrets.it

   Current status: OpenMPT passes this test since revision 9855.
   Download: [260]ZxxSecrets.it
   Description: Impulse Tracker supports three MIDI macro characters which
   are not documented in MIDI.TXT:
     * h: Host channel, i.e. the pattern channel in which the Zxx command
       is encountered (0-based).
     * o: The last used sample offset value. The high offset (SAx) is not
       taken into account. Note that offsets above 80h are not clamped,
       i.e. they generate MIDI command bytes (e.g. O90 would cause a
       note-on command to be emitted).
     * m: This command sends the current MIDI note if the channel is a
       MIDI channel, but on sample channels the current loop direction
       (forward = 0, backward = 1) of the sample is stored in the same
       memory location, so the macro evaluates to that instead of a note
       number.

   In addition, the MIDI messages FA (start song), FC (stop song) and FF
   (reset) reset the resonant filter parameters (cutoff = 127, resonance =
   0) for all channels, but do not immediately update the filter
   coefficients.

   In total, OpenMPT passes 117 out of 118 tests.
   Retrieved from
   "[261]https://wiki.openmpt.org/index.php?title=Development:_Test_Cases/
   IT&oldid=4650"
   [262]Categories:
     * [263]Development
     * [264]IT Format

Navigation menu

Personal tools

     * Not logged in
     * [265]Talk
     * [266]Contributions
     * [267]Create account
     * [268]Log in

Namespaces

     * [269]Page
     * [270]Discussion

   [ ] English

Views

     * [271]Read
     * [272]Edit
     * [273]View history

   [ ] More

Search

   ____________________ Search Go

Navigation

     * [274]Main page
     * [275]Download OpenMPT
     * [276]OpenMPT Website
     * [277]Recent changes
     * [278]Random page
     * [279]Help

Tools

     * [280]What links here
     * [281]Related changes
     * [282]Special pages
     * [283]Permanent link
     * [284]Page information

Print/export

     * [285]Create a book
     * [286]Download as PDF
     * [287]Printable version

     * This page was last edited on 21 October 2024, at 16:37.
     * Content is available under [288]Creative Commons Attribution Share
       Alike unless otherwise noted.

     * [289]Privacy policy
     * [290]About OpenMPT Wiki
     * [291]Disclaimers

     * [292]Creative Commons Attribution Share Alike
     * [293]Powered by MediaWiki

References

   Visible links:
   1. https://wiki.openmpt.org/index.php?title=Development:_Test_Cases/IT&action=edit
   2. https://wiki.openmpt.org/opensearch_desc.php
   3. https://wiki.openmpt.org/index.php?title=Special:RecentChanges&feed=atom
   4. https://wiki.openmpt.org/Development:_Test_Cases/IT#mw-head
   5. https://wiki.openmpt.org/Development:_Test_Cases/IT#searchInput
   6. https://wiki.openmpt.org/Development:_Test_Cases/IT#Autovibrato-Reset.it
   7. https://wiki.openmpt.org/Development:_Test_Cases/IT#Bidi-Loops.it
   8. https://wiki.openmpt.org/Development:_Test_Cases/IT#BidiPrecision.it
   9. https://wiki.openmpt.org/Development:_Test_Cases/IT#CarryNNA.it
  10. https://wiki.openmpt.org/Development:_Test_Cases/IT#cut-carry.it
  11. https://wiki.openmpt.org/Development:_Test_Cases/IT#dct_smp_note_test.it
  12. https://wiki.openmpt.org/Development:_Test_Cases/IT#DNA-NoInstr.it
  13. https://wiki.openmpt.org/Development:_Test_Cases/IT#DoubleSlide.it
  14. https://wiki.openmpt.org/Development:_Test_Cases/IT#DoubleSlideCompatGxx.it
  15. https://wiki.openmpt.org/Development:_Test_Cases/IT#empty_sample_offset.it
  16. https://wiki.openmpt.org/Development:_Test_Cases/IT#emptyslot.it
  17. https://wiki.openmpt.org/Development:_Test_Cases/IT#env-flt-max.it
  18. https://wiki.openmpt.org/Development:_Test_Cases/IT#EnvLoopEscape.it
  19. https://wiki.openmpt.org/Development:_Test_Cases/IT#EnvLoops.it
  20. https://wiki.openmpt.org/Development:_Test_Cases/IT#EnvOffLength.it
  21. https://wiki.openmpt.org/Development:_Test_Cases/IT#EnvReset.it
  22. https://wiki.openmpt.org/Development:_Test_Cases/IT#extreme-filter-test-1.it
  23. https://wiki.openmpt.org/Development:_Test_Cases/IT#extreme-filter-test-2.it
  24. https://wiki.openmpt.org/Development:_Test_Cases/IT#Fade-Porta.it
  25. https://wiki.openmpt.org/Development:_Test_Cases/IT#filter-7F.it
  26. https://wiki.openmpt.org/Development:_Test_Cases/IT#FilterEnvReset.it
  27. https://wiki.openmpt.org/Development:_Test_Cases/IT#FilterPortaSmpChange.it
  28. https://wiki.openmpt.org/Development:_Test_Cases/IT#FilterPortaSmpChange-InsMode.it
  29. https://wiki.openmpt.org/Development:_Test_Cases/IT#filter-nna.it
  30. https://wiki.openmpt.org/Development:_Test_Cases/IT#filter-reset.it
  31. https://wiki.openmpt.org/Development:_Test_Cases/IT#filter-reset-carry.it
  32. https://wiki.openmpt.org/Development:_Test_Cases/IT#filter-reset-envelope.it
  33. https://wiki.openmpt.org/Development:_Test_Cases/IT#FilterResetPatDelay.it
  34. https://wiki.openmpt.org/Development:_Test_Cases/IT#FineVolColSlide.it
  35. https://wiki.openmpt.org/Development:_Test_Cases/IT#flt-env-carry.it
  36. https://wiki.openmpt.org/Development:_Test_Cases/IT#fltmacro.it
  37. https://wiki.openmpt.org/Development:_Test_Cases/IT#freqreset-noins.it
  38. https://wiki.openmpt.org/Development:_Test_Cases/IT#GlobalVolFirstTick.it
  39. https://wiki.openmpt.org/Development:_Test_Cases/IT#globalvol-invalid.it
  40. https://wiki.openmpt.org/Development:_Test_Cases/IT#GlobalVolume-Macro.it
  41. https://wiki.openmpt.org/Development:_Test_Cases/IT#gxsmp.it
  42. https://wiki.openmpt.org/Development:_Test_Cases/IT#gxsmp2.it
  43. https://wiki.openmpt.org/Development:_Test_Cases/IT#gxxtest.it
  44. https://wiki.openmpt.org/Development:_Test_Cases/IT#InitialNoteMemory.it
  45. https://wiki.openmpt.org/Development:_Test_Cases/IT#InitialNoteMemoryInstrMode.it
  46. https://wiki.openmpt.org/Development:_Test_Cases/IT#ins-flt-porta-reset.it
  47. https://wiki.openmpt.org/Development:_Test_Cases/IT#ins-oc.it
  48. https://wiki.openmpt.org/Development:_Test_Cases/IT#ins-ox.it
  49. https://wiki.openmpt.org/Development:_Test_Cases/IT#ins-xc.it
  50. https://wiki.openmpt.org/Development:_Test_Cases/IT#ins-xx.it
  51. https://wiki.openmpt.org/Development:_Test_Cases/IT#InstrAfterMultisamplePorta.it
  52. https://wiki.openmpt.org/Development:_Test_Cases/IT#InstrumentNumberChange.it
  53. https://wiki.openmpt.org/Development:_Test_Cases/IT#JxxTicks.it
  54. https://wiki.openmpt.org/Development:_Test_Cases/IT#LinearSlides.it
  55. https://wiki.openmpt.org/Development:_Test_Cases/IT#LoopBreak.it
  56. https://wiki.openmpt.org/Development:_Test_Cases/IT#LoopStartAfterPatternEnd.it
  57. https://wiki.openmpt.org/Development:_Test_Cases/IT#macro-lastnote.it
  58. https://wiki.openmpt.org/Development:_Test_Cases/IT#MacroExtendedParam.it
  59. https://wiki.openmpt.org/Development:_Test_Cases/IT#MultiZxx.it
  60. https://wiki.openmpt.org/Development:_Test_Cases/IT#NoMap.it
  61. https://wiki.openmpt.org/Development:_Test_Cases/IT#NoMapEffects.it
  62. https://wiki.openmpt.org/Development:_Test_Cases/IT#NoSlide.it
  63. https://wiki.openmpt.org/Development:_Test_Cases/IT#NoteFade-SmpMode.it
  64. https://wiki.openmpt.org/Development:_Test_Cases/IT#NoteFade-InsMode.it
  65. https://wiki.openmpt.org/Development:_Test_Cases/IT#noteoff2.it
  66. https://wiki.openmpt.org/Development:_Test_Cases/IT#noteoff3.it
  67. https://wiki.openmpt.org/Development:_Test_Cases/IT#NoteOffInstr.it
  68. https://wiki.openmpt.org/Development:_Test_Cases/IT#Off-Porta.it
  69. https://wiki.openmpt.org/Development:_Test_Cases/IT#Off-Porta-CompatGxx.it
  70. https://wiki.openmpt.org/Development:_Test_Cases/IT#OffsetWithInstr.it
  71. https://wiki.openmpt.org/Development:_Test_Cases/IT#PanbrelloHold.it
  72. https://wiki.openmpt.org/Development:_Test_Cases/IT#PanReset.it
  73. https://wiki.openmpt.org/Development:_Test_Cases/IT#PanResetInstr.it
  74. https://wiki.openmpt.org/Development:_Test_Cases/IT#PatternDelay-NoteDelay.it
  75. https://wiki.openmpt.org/Development:_Test_Cases/IT#PatternDelays.it
  76. https://wiki.openmpt.org/Development:_Test_Cases/IT#PatternDelaysRetrig.it
  77. https://wiki.openmpt.org/Development:_Test_Cases/IT#PitchPanReset.it
  78. https://wiki.openmpt.org/Development:_Test_Cases/IT#PortaCutCompat.it
  79. https://wiki.openmpt.org/Development:_Test_Cases/IT#PortaInsNum.it
  80. https://wiki.openmpt.org/Development:_Test_Cases/IT#PortaInsNumCompat.it
  81. https://wiki.openmpt.org/Development:_Test_Cases/IT#PortaJustStoppedNote.it
  82. https://wiki.openmpt.org/Development:_Test_Cases/IT#porta-offset.it
  83. https://wiki.openmpt.org/Development:_Test_Cases/IT#PortaReset.it
  84. https://wiki.openmpt.org/Development:_Test_Cases/IT#PortaResetAfterRetrigger.it
  85. https://wiki.openmpt.org/Development:_Test_Cases/IT#PortaSample.it
  86. https://wiki.openmpt.org/Development:_Test_Cases/IT#PortaSampleCompat.it
  87. https://wiki.openmpt.org/Development:_Test_Cases/IT#RandomPan.it
  88. https://wiki.openmpt.org/Development:_Test_Cases/IT#RandomWaveform.it
  89. https://wiki.openmpt.org/Development:_Test_Cases/IT#ResetEnvNoteOffOldFx.it
  90. https://wiki.openmpt.org/Development:_Test_Cases/IT#ResetEnvNoteOffOldFx2.it
  91. https://wiki.openmpt.org/Development:_Test_Cases/IT#retrig.it
  92. https://wiki.openmpt.org/Development:_Test_Cases/IT#retrig-short.it
  93. https://wiki.openmpt.org/Development:_Test_Cases/IT#s7xinsnum.it
  94. https://wiki.openmpt.org/Development:_Test_Cases/IT#s77.it
  95. https://wiki.openmpt.org/Development:_Test_Cases/IT#SampleNumberChange.it
  96. https://wiki.openmpt.org/Development:_Test_Cases/IT#SampleSustainAfterPorta.it
  97. https://wiki.openmpt.org/Development:_Test_Cases/IT#SampleSustainAfterPortaCompatGxx.it
  98. https://wiki.openmpt.org/Development:_Test_Cases/IT#SampleSustainAfterPortaInstrMode.it
  99. https://wiki.openmpt.org/Development:_Test_Cases/IT#sbx-priority.it
 100. https://wiki.openmpt.org/Development:_Test_Cases/IT#scx.it
 101. https://wiki.openmpt.org/Development:_Test_Cases/IT#SlideDelay.it
 102. https://wiki.openmpt.org/Development:_Test_Cases/IT#SmpInsPanSurround.it
 103. https://wiki.openmpt.org/Development:_Test_Cases/IT#surround-pan.it
 104. https://wiki.openmpt.org/Development:_Test_Cases/IT#StoppedInstrSwap.it
 105. https://wiki.openmpt.org/Development:_Test_Cases/IT#SusAfterLoop.it
 106. https://wiki.openmpt.org/Development:_Test_Cases/IT#SwapNNA.it
 107. https://wiki.openmpt.org/Development:_Test_Cases/IT#swaptest.it
 108. https://wiki.openmpt.org/Development:_Test_Cases/IT#swing1.it
 109. https://wiki.openmpt.org/Development:_Test_Cases/IT#swing2.it
 110. https://wiki.openmpt.org/Development:_Test_Cases/IT#swing3.it
 111. https://wiki.openmpt.org/Development:_Test_Cases/IT#swing4.it
 112. https://wiki.openmpt.org/Development:_Test_Cases/IT#swing5.it
 113. https://wiki.openmpt.org/Development:_Test_Cases/IT#tickdelay.it
 114. https://wiki.openmpt.org/Development:_Test_Cases/IT#tremolo.it
 115. https://wiki.openmpt.org/Development:_Test_Cases/IT#vibrato.it
 116. https://wiki.openmpt.org/Development:_Test_Cases/IT#VibratoDouble.it
 117. https://wiki.openmpt.org/Development:_Test_Cases/IT#vibrato-oldfx.it
 118. https://wiki.openmpt.org/Development:_Test_Cases/IT#VibratoSweep0.it
 119. https://wiki.openmpt.org/Development:_Test_Cases/IT#VolColMemory.it
 120. https://wiki.openmpt.org/Development:_Test_Cases/IT#vol-env-carry.it
 121. https://wiki.openmpt.org/Development:_Test_Cases/IT#Volume-Macro-Letters.it
 122. https://wiki.openmpt.org/Development:_Test_Cases/IT#weirdloop.it
 123. https://wiki.openmpt.org/Development:_Test_Cases/IT#ZxxSecrets.it
 124. https://resources.openmpt.org/player_tests/it/Autovibrato-Reset.it
 125. https://resources.openmpt.org/player_tests/it/Bidi-Loops.it
 126. https://resources.openmpt.org/player_tests/it/BidiPrecision.it
 127. https://wiki.openmpt.org/Development:_Test_Cases/IT#Bidi-Loops.it
 128. https://resources.openmpt.org/player_tests/it/CarryNNA.it
 129. https://resources.openmpt.org/player_tests/it/cut-carry.it
 130. https://resources.openmpt.org/player_tests/it/dct_smp_note_test.it
 131. https://resources.openmpt.org/player_tests/it/DNA-NoInstr.it
 132. https://resources.openmpt.org/player_tests/it/DoubleSlide.it
 133. https://resources.openmpt.org/player_tests/it/DoubleSlideCompatGxx.it
 134. https://wiki.openmpt.org/Development:_Test_Cases/IT#DoubleSlide.it
 135. https://resources.openmpt.org/player_tests/it/empty_sample_offset.it
 136. https://resources.openmpt.org/player_tests/it/emptyslot.it
 137. https://resources.openmpt.org/player_tests/it/env-flt-max.it
 138. https://resources.openmpt.org/player_tests/it/EnvLoopEscape.it
 139. https://wiki.openmpt.org/Development:_Test_Cases/IT#EnvOffLength.it
 140. https://resources.openmpt.org/player_tests/it/EnvLoops.it
 141. https://resources.openmpt.org/player_tests/it/EnvOffLength.it
 142. https://resources.openmpt.org/player_tests/it/EnvReset.it
 143. https://resources.openmpt.org/player_tests/it/extreme-filter-test-1.it
 144. https://resources.openmpt.org/player_tests/it/extreme-filter-test-2.it
 145. https://resources.openmpt.org/player_tests/it/Fade-Porta.it
 146. https://resources.openmpt.org/player_tests/it/filter-7F.it
 147. https://resources.openmpt.org/player_tests/it/FilterEnvReset.it
 148. https://resources.openmpt.org/player_tests/it/FilterPortaSmpChange.it
 149. https://resources.openmpt.org/player_tests/it/FilterPortaSmpChange-InsMode.it
 150. https://wiki.openmpt.org/Development:_Test_Cases/IT#FilterPortaSmpChange.it
 151. https://resources.openmpt.org/player_tests/it/filter-nna.it
 152. https://resources.openmpt.org/player_tests/it/filter-reset.it
 153. https://resources.openmpt.org/player_tests/it/filter-reset-carry.it
 154. https://resources.openmpt.org/player_tests/it/filter-reset-envelope.it
 155. https://wiki.openmpt.org/Development:_Test_Cases/IT#filter-reset.it
 156. https://resources.openmpt.org/player_tests/it/FilterResetPatDelay.it
 157. https://wiki.openmpt.org/Development:_Test_Cases/IT#filter-reset-envelope.it
 158. https://wiki.openmpt.org/Development:_Test_Cases/IT#PatternDelay-NoteDelay.it
 159. https://resources.openmpt.org/player_tests/it/FineVolColSlide.it
 160. https://resources.openmpt.org/player_tests/it/flt-env-carry.it
 161. https://resources.openmpt.org/player_tests/it/fltmacro.it
 162. https://resources.openmpt.org/player_tests/it/freqreset-noins.it
 163. https://resources.openmpt.org/player_tests/it/GlobalVolFirstTick.it
 164. https://resources.openmpt.org/player_tests/it/globalvol-invalid.it
 165. https://resources.openmpt.org/player_tests/it/GlobalVolume-Macro.it
 166. https://resources.openmpt.org/player_tests/it/gxsmp.it
 167. https://resources.openmpt.org/player_tests/it/gxsmp2.it
 168. https://resources.openmpt.org/player_tests/it/gxxtest.it
 169. https://resources.openmpt.org/player_tests/it/InitialNoteMemory.it
 170. https://resources.openmpt.org/player_tests/it/InitialNoteMemoryInstrMode.it
 171. https://wiki.openmpt.org/Development:_Test_Cases/IT#InitialNoteMemory.it
 172. https://resources.openmpt.org/player_tests/it/ins-flt-porta-reset.it
 173. https://resources.openmpt.org/player_tests/it/ins-oc.it
 174. https://resources.openmpt.org/player_tests/it/ins-ox.it
 175. https://resources.openmpt.org/player_tests/it/ins-xc.it
 176. https://resources.openmpt.org/player_tests/it/ins-xx.it
 177. https://resources.openmpt.org/player_tests/it/InstrAfterMultisamplePorta.it
 178. https://resources.openmpt.org/player_tests/it/InstrumentNumberChange.it
 179. https://resources.openmpt.org/player_tests/it/JxxTicks.it
 180. https://resources.openmpt.org/player_tests/it/LinearSlides.it
 181. https://resources.openmpt.org/player_tests/it/LoopBreak.it
 182. https://resources.openmpt.org/player_tests/it/LoopStartAfterPatternEnd.it
 183. https://resources.openmpt.org/player_tests/it/macro-lastnote.it
 184. https://resources.openmpt.org/player_tests/it/MacroExtendedParam.it
 185. https://resources.openmpt.org/player_tests/it/MultiZxx.it
 186. https://resources.openmpt.org/player_tests/it/NoMap.it
 187. https://resources.openmpt.org/player_tests/it/NoMapEffects.it
 188. https://wiki.openmpt.org/Development:_Test_Cases/IT#InitialNoteMemory.it
 189. https://resources.openmpt.org/player_tests/it/NoSlide.it
 190. https://resources.openmpt.org/player_tests/it/NoteFade-SmpMode.it
 191. https://resources.openmpt.org/player_tests/it/NoteFade-InsMode.it
 192. https://resources.openmpt.org/player_tests/it/noteoff2.it
 193. https://resources.openmpt.org/player_tests/it/noteoff3.it
 194. https://resources.openmpt.org/player_tests/it/NoteOffInstr.it
 195. https://resources.openmpt.org/player_tests/it/Off-Porta.it
 196. https://resources.openmpt.org/player_tests/it/Off-Porta-CompatGxx.it
 197. https://wiki.openmpt.org/Development:_Test_Cases/IT#Off-Porta.it
 198. https://resources.openmpt.org/player_tests/it/OffsetWithInstr.it
 199. https://resources.openmpt.org/player_tests/it/PanbrelloHold.it
 200. https://resources.openmpt.org/player_tests/it/PanReset.it
 201. https://resources.openmpt.org/player_tests/it/PanResetInstr.it
 202. https://resources.openmpt.org/player_tests/it/PatternDelay-NoteDelay.it
 203. https://resources.openmpt.org/player_tests/it/PatternDelays.it
 204. https://resources.openmpt.org/player_tests/it/PatternDelaysRetrig.it
 205. https://resources.openmpt.org/player_tests/it/PitchPanReset.it
 206. https://resources.openmpt.org/player_tests/it/PortaCutCompat.it
 207. https://wiki.openmpt.org/Development:_Test_Cases/IT#PortaSampleCompat.it
 208. https://wiki.openmpt.org/Development:_Test_Cases/IT#PortaInsNumCompat.it
 209. https://resources.openmpt.org/player_tests/it/PortaInsNum.it
 210. https://resources.openmpt.org/player_tests/it/PortaInsNumCompat.it
 211. https://resources.openmpt.org/player_tests/it/PortaJustStoppedNote.it
 212. https://wiki.openmpt.org/Development:_Test_Cases/IT#Fade-Porta.it
 213. https://resources.openmpt.org/player_tests/it/porta-offset.it
 214. https://resources.openmpt.org/player_tests/it/PortaReset.it
 215. https://resources.openmpt.org/player_tests/it/PortaResetAfterRetrigger.it
 216. https://resources.openmpt.org/player_tests/it/PortaSample.it
 217. https://resources.openmpt.org/player_tests/it/PortaSampleCompat.it
 218. https://resources.openmpt.org/player_tests/it/RandomPan.it
 219. https://resources.openmpt.org/player_tests/it/RandomWaveform.it
 220. https://resources.openmpt.org/player_tests/it/ResetEnvNoteOffOldFx.it
 221. https://resources.openmpt.org/player_tests/it/ResetEnvNoteOffOldFx2.it
 222. https://resources.openmpt.org/player_tests/it/retrig.it
 223. https://resources.openmpt.org/player_tests/it/retrig-short.it
 224. https://resources.openmpt.org/player_tests/it/s7xinsnum.it
 225. https://resources.openmpt.org/player_tests/it/s77.it
 226. https://wiki.openmpt.org/Development:_Test_Cases/IT#EnvLoops.it
 227. https://resources.openmpt.org/player_tests/it/SampleNumberChange.it
 228. https://wiki.openmpt.org/Development:_Test_Cases/IT#InstrumentNumberChange.it
 229. https://resources.openmpt.org/player_tests/it/SampleSustainAfterPorta.it
 230. https://resources.openmpt.org/player_tests/it/SampleSustainAfterPortaCompatGxx.it
 231. https://wiki.openmpt.org/Development:_Test_Cases/IT#SampleSustainAfterPorta.it
 232. https://resources.openmpt.org/player_tests/it/SampleSustainAfterPortaInstrMode.it
 233. https://wiki.openmpt.org/Development:_Test_Cases/IT#SampleSustainAfterPorta.it
 234. https://resources.openmpt.org/player_tests/it/sbx-priority.it
 235. https://wiki.openmpt.org/Development:_Test_Cases/IT#LoopBreak.it
 236. https://resources.openmpt.org/player_tests/it/scx.it
 237. https://resources.openmpt.org/player_tests/it/SlideDelay.it
 238. https://resources.openmpt.org/player_tests/it/SmpInsPanSurround.it
 239. https://resources.openmpt.org/player_tests/it/surround-pan.it
 240. https://resources.openmpt.org/player_tests/it/StoppedInstrSwap.it
 241. https://resources.openmpt.org/player_tests/it/SusAfterLoop.it
 242. https://resources.openmpt.org/player_tests/it/SwapNNA.it
 243. https://wiki.openmpt.org/Development:_Test_Cases/IT#s7xinsnum.it
 244. https://resources.openmpt.org/player_tests/it/swaptest.it
 245. https://resources.openmpt.org/player_tests/it/swing1.it
 246. https://resources.openmpt.org/player_tests/it/swing2.it
 247. https://resources.openmpt.org/player_tests/it/swing3.it
 248. https://resources.openmpt.org/player_tests/it/swing4.it
 249. https://resources.openmpt.org/player_tests/it/swing5.it
 250. https://resources.openmpt.org/player_tests/it/tickdelay.it
 251. https://resources.openmpt.org/player_tests/it/tremolo.it
 252. https://resources.openmpt.org/player_tests/it/vibrato.it
 253. https://resources.openmpt.org/player_tests/it/VibratoDouble.it
 254. https://resources.openmpt.org/player_tests/it/vibrato-oldfx.it
 255. https://resources.openmpt.org/player_tests/it/VibratoSweep0.it
 256. https://resources.openmpt.org/player_tests/it/VolColMemory.it
 257. https://resources.openmpt.org/player_tests/it/vol-env-carry.it
 258. https://resources.openmpt.org/player_tests/it/Volume-Macro-Letters.it
 259. https://resources.openmpt.org/player_tests/it/weirdloop.it
 260. https://resources.openmpt.org/player_tests/it/ZxxSecrets.it
 261. https://wiki.openmpt.org/index.php?title=Development:_Test_Cases/IT&oldid=4650
 262. https://wiki.openmpt.org/Special:Categories
 263. https://wiki.openmpt.org/Category:Development
 264. https://wiki.openmpt.org/Category:IT_Format
 265. https://wiki.openmpt.org/Special:MyTalk
 266. https://wiki.openmpt.org/Special:MyContributions
 267. https://wiki.openmpt.org/index.php?title=Special:CreateAccount&returnto=Development:+Test+Cases/IT
 268. https://wiki.openmpt.org/index.php?title=Special:UserLogin&returnto=Development:+Test+Cases/IT
 269. https://wiki.openmpt.org/Development:_Test_Cases/IT
 270. https://wiki.openmpt.org/index.php?title=Talk:Development:_Test_Cases/IT&action=edit&redlink=1
 271. https://wiki.openmpt.org/Development:_Test_Cases/IT
 272. https://wiki.openmpt.org/index.php?title=Development:_Test_Cases/IT&action=edit
 273. https://wiki.openmpt.org/index.php?title=Development:_Test_Cases/IT&action=history
 274. https://wiki.openmpt.org/Main_Page
 275. https://openmpt.org/download
 276. https://openmpt.org/
 277. https://wiki.openmpt.org/Special:RecentChanges
 278. https://wiki.openmpt.org/Special:Random
 279. https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents
 280. https://wiki.openmpt.org/Special:WhatLinksHere/Development:_Test_Cases/IT
 281. https://wiki.openmpt.org/Special:RecentChangesLinked/Development:_Test_Cases/IT
 282. https://wiki.openmpt.org/Special:SpecialPages
 283. https://wiki.openmpt.org/index.php?title=Development:_Test_Cases/IT&oldid=4650
 284. https://wiki.openmpt.org/index.php?title=Development:_Test_Cases/IT&action=info
 285. https://wiki.openmpt.org/index.php?title=Special:Book&bookcmd=book_creator&referer=Development:+Test+Cases/IT
 286. https://wiki.openmpt.org/index.php?title=Special:Book&bookcmd=render_article&arttitle=Development:+Test+Cases/IT&returnto=Development:+Test+Cases/IT&oldid=4650&writer=rl
 287. https://wiki.openmpt.org/index.php?title=Development:_Test_Cases/IT&printable=yes
 288. https://creativecommons.org/licenses/by-sa/3.0/
 289. https://wiki.openmpt.org/OpenMPT_Wiki:Privacy_policy
 290. https://wiki.openmpt.org/OpenMPT_Wiki:About
 291. https://wiki.openmpt.org/OpenMPT_Wiki:General_disclaimer
 292. https://creativecommons.org/licenses/by-sa/3.0/
 293. https://www.mediawiki.org/

   Hidden links:
 295. https://wiki.openmpt.org/Main_Page
