libxmp / libxmp/libxmp

Missing and/or broken OpenMPT test modules.

Open
#497 6 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

it mod s3m xm
Dominant language
C
Stars
392
Forks
82
Avg merge
1d 4h
Merged PRs (30d)
5

Description

Several test modules from the OpenMPT regression tests are not played correctly:

  • mod/PortaSmpChange.mod: the new sample is never applied. Both behaviors are tested as of #785
  • it/extreme-filter-1.it: the output clips at the end of the envelope for the first two filter notes.
  • it/extreme-filter-2.it: note timbre sounds weak/empty. This one currently isn't tested, but I checked it due to the prior being wrong.
  • it/s7xinsnum.it: instrument NNA note cut cancels all three notes playing in channel 1, but it should only cut the most recent/current note.

I am sure this list is in no way complete, these are just the ones I noticed while fixing tests for #496.

edit: all unimplemented OpenMPT IT tests updated list of all unimplemented OpenMPT modules as of 2024-11-14:

MOD:

  • InstrDelay.mod
  • InstrSwapRetrigger.mod #785
  • NoteDelay-NextRow.mod
  • PTInstrSwap.mod #785
  • PTInstrVolume.mod #785
  • PTRetrigger.mod
  • PTStoppedSwap.mod #785
  • PTSwapEmpty.mod #785
  • PTSwapNoLoop.mod #785
  • PatLoop-Break.mod
  • PatternDelaysRetrig.mod
  • PortaSwapPT.mod #785
  • TempoChange.mod

S3M:

  • AdlibZeroVolumeNote.s3m
  • LoopReset.s3m
  • NOP.s3m
  • NoCombinedSlidesOnFirstTick-Fast.s3m
  • NoCombinedSlidesOnFirstTick-Normal.s3m
  • OffsetLoopWraparound.s3m
  • OffsetPastSampleEnd.s3m
  • OxxMemory.s3m
  • OxxMemoryWithRetrig.s3m
  • PatternDelays.s3m
  • PeriodLimitUpper.s3m
  • PortaAfterArp.s3m
  • RetrigAfterNoteCut.s3m
  • RetrigSlide.s3m
  • TonePortamentoWithAdlibNote.s3m
  • VibratoTypeChange.s3m
  • weirdloop.s3m

XM:

  • ArpSlide.xm
  • ArpeggioClamp.xm
  • AutoVibratoSweepKeyOff.xm
  • BidiPrecision.xm
  • DelayVolume.xm
  • Finetune-Precision.xm
  • FreqWraparound.xm
  • FT2PanLaw.xm
  • GlobalVolume.xm
  • NoteOffFadeNoEnv.xm (2025-12-07: broken)
  • NoteOffInstrChange.xm (2025-12-07: OK)
  • Off-Porta.xm (2025-12-07: OK)
  • PanSlideZero.xm
  • PanSustainRelease.xm
  • PatLoop-Infinite.xm
  • PatLoop-Jumps.xm
  • PatLoop-Nested.xm
  • PatLoop-Overflow.xm
  • PatLoop-Various.xm
  • PatternDelay-NoteDelay.xm
  • Porta-LinkMem.xm #817
  • PortaDelay.xm
  • PortaJustStoppedNote.xm
  • PortaResetDirection.xm
  • RetrigFade.xm
  • RetrigTick0.xm
  • SampleChange.xm
  • SamplePortaInInstrument.xm
  • TremoloVibrato.xm
  • VibratoCombinations.xm
  • VibratoDouble.xm
  • VolColDelay.xm
  • lowest.xm
  • porta-delay.xm
  • retrig.xm

IT:

  • BidiPrecision.it
  • DNA-NoInstr.it
  • DoubleSlide.it
  • DoubleSlideCompatGxx.it
  • FilterPortaSmpChange-InsMode.it
  • FilterPortaSmpChange.it
  • FilterResetPatDelay.it
  • GlobalVolFirstTick.it
  • GlobalVolume-Macro.it
  • InitialNoteMemory.it
  • InitialNoteMemoryInstrMode.it
  • InstrAfterMultisamplePorta.it
  • JxxTicks.it
  • LoopBreak.it
  • LoopStartAfterPatternEnd.it
  • NoMapEffects.it
  • NoSlide.it
  • NoteFade-InsMode.it
  • NoteFade-SmpMode.it
  • OffsetWithInstr.it
  • PanResetInstr.it
  • PanbrelloHold.it
  • PatternDelay-NoteDelay.it
  • PatternDelays.it
  • PatternDelaysRetrig.it
  • PitchPanReset.it
  • PortaCutCompat.it
  • PortaResetAfterRetrigger.it
  • RandomPan.it
  • RandomWaveform.it
  • ResetEnvNoteOffOldFx.it
  • ResetEnvNoteOffOldFx2.it
  • SampleSustainAfterPorta.it
  • SampleSustainAfterPortaCompatGxx.it
  • SampleSustainAfterPortaInstrMode.it
  • SlideDelay.it
  • SwapNNA.it
  • VibratoDouble.it
  • VibratoSweep0.it
  • dct_smp_note_test.it
  • empty_sample_offset.it
  • env-flt-max.it
  • extreme-filter-test-2.it
  • filter-reset-envelope.it
  • ins-oc.it
  • ins-ox.it
  • ins-xc.it
  • ins-xx.it
  • noteoff3.it (seems to vary somewhat from IT)
  • sbx-priority.it
  • surround-pan.it
  • swing1.it
  • swing2.it
  • swing3.it
  • swing4.it
  • swing5.it
  • tickdelay.it
  • tremolo.it
  • vibrato-oldfx.it
  • vibrato.it
  • weirdloop.it

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reproducing one of the listed OpenMPT regression modules, such as it/extreme-filter-1.it or it/s7xinsnum.it, and compare the observed playback with the behavior described in the issue. Review the existing OpenMPT regression-test setup; done means resolving a selected discrepancy and confirming the module behaves correctly in the relevant test coverage.

Written by the indexing model from the issue text.

Assessment

Tech stack
c
Domain
audio-video-rtc, testing-qa
Issue type
Bug
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.