IT note variation and S3M AdLib compatibility reference ==================================================== The per-note swing arithmetic and associated compatibility decisions were studied against the OpenMPT soundlib implementation and public player tests. Reference authors: Olivier Lapicque; OpenMPT Project Developers and Contributors. https://github.com/OpenMPT/openmpt/blob/master/soundlib/Snd_fx.cpp https://github.com/OpenMPT/openmpt/blob/master/soundlib/Sndmix.cpp https://wiki.openmpt.org/Development:_Test_Cases/IT https://wiki.openmpt.org/Development:_Test_Cases/S3M The upstream BSD license and copyright notices are retained in OpenMPT-BSD.txt. The legacy ModPlug mixing/pitch rules and DMO WavesReverb compatibility network were studied against the pinned libopenmpt-0.8.9 sources: https://github.com/OpenMPT/openmpt/blob/libopenmpt-0.8.9/soundlib/Load_it.cpp https://github.com/OpenMPT/openmpt/blob/libopenmpt-0.8.9/soundlib/Snd_fx.cpp https://github.com/OpenMPT/openmpt/blob/libopenmpt-0.8.9/soundlib/plugins/dmo/WavesReverb.cpp https://github.com/OpenMPT/openmpt/blob/libopenmpt-0.8.9/soundlib/plugins/dmo/WavesReverb.h https://github.com/OpenMPT/openmpt/blob/libopenmpt-0.8.9/soundlib/plugins/PlugInterface.cpp The bounded impulse-response implementation retains the same BSD attribution. Native MOD period/finetune and legacy vibrato tables, S3M C2SPD/mixer rules, XM envelope/voice compatibility and HMN cycle-swap semantics also reference OpenMPT at libopenmpt-0.8.9 (5d605f5bd6944931fad9266947dad953017ed9b0): https://github.com/OpenMPT/openmpt/blob/libopenmpt-0.8.9/soundlib/Tables.cpp https://github.com/OpenMPT/openmpt/blob/libopenmpt-0.8.9/soundlib/Load_mod.cpp https://github.com/OpenMPT/openmpt/blob/libopenmpt-0.8.9/soundlib/Load_s3m.cpp https://github.com/OpenMPT/openmpt/blob/libopenmpt-0.8.9/soundlib/InstrumentSynth.cpp https://github.com/OpenMPT/openmpt/blob/libopenmpt-0.8.9/soundlib/ModInstrument.cpp Existing OpenMPT-BSD.txt retains the full copyright and redistribution notice. The expanded complete-song campaign also studies old IT instrument-header layout/NNA, integer-Hz pitch and slide arithmetic, vibrato/arpeggio rounding, per-voice surround and compatible XM instrument-portamento phase retention: https://github.com/OpenMPT/openmpt/blob/libopenmpt-0.8.9/soundlib/ITTools.h https://github.com/OpenMPT/openmpt/blob/libopenmpt-0.8.9/soundlib/ITTools.cpp https://github.com/OpenMPT/openmpt/blob/libopenmpt-0.8.9/soundlib/ModChannel.cpp https://github.com/OpenMPT/openmpt/blob/libopenmpt-0.8.9/soundlib/Sndmix.cpp https://github.com/OpenMPT/openmpt/blob/libopenmpt-0.8.9/soundlib/Snd_fx.cpp Pinned source revision: 5d605f5bd6944931fad9266947dad953017ed9b0. MLT does not bundle libopenmpt as its playback engine. The separately pinned libopenmpt WASM build is used only by the independent test harness. Native note-clock controls also reference Mozilla's integer source clock and inverse-rate conversion, experimentally confirmed in installed Firefox: https://searchfox.org/firefox-main/source/dom/media/webaudio/AudioBufferSourceNode.cpp No Mozilla or Speex implementation is bundled or modified by this correction. MLT's bounded integer-clock planner and cache are original application code.