xmp-openmpt: An XMPlay input plugin based on OpenMPT

Started by saga,

guest

Ok, Fasttracker v2.08 has only "16-bit mixing" config option (without "+Vol.ramping") but when this option is disabled, instrument 3 is more audible in FT2.

manx

Quote from: guestOk, Fasttracker v2.08 has only "16-bit mixing" config option (without "+Vol.ramping") but when this option is disabled, instrument 3 is more audible in FT2.
We cannot emulate every minute detail of the mixing behaviour of all trackers in their non-optimal configuration. This would frankly be another hundreds of options and unmaintainable. FT2, when configured for optimal sound quality, and in its latest/final version, does exhibit the ultra-soft volume ramping, and without it, almost all XM modules made with FT2 (as far as it is possible to reliable detect that) do sound wrong.

Again, there might be an argument made for disabling that behaviour if volume ramping is completely disabled (which is frankly not a very useful configuration, to be honest), but this would not be a change that would be made in a minor version update (if at all). If you care enough, please move this discussion to our issue tracker and make a ticket.

saga

Quote from: guest
Quote from: saga
Quote from: guestFirst channel in 10th order starting from row 28 is played differently in OctaMED.

...should play correctly now. Let's see what this breaks...

When "Use Amiga resampler for Amiga modules" is enabled it plays as in MED Soundstudio for Windows, not as in OctaMED for Amiga.
The sample resampling algorithm does not make any difference in things like this. I accidentally inverted the condition when the fix should be applied, now it is corrected.


manx

2025-01-06: xmp-openmpt version 0.7.13 released!

 *  `module::get_current_estimated_bpm` could return infinity when rows per beat was set to 0. A default of 4 rows per beat is now assumed in this situation. The internal LFO plugin was also affected in Tempo Sync mode.
 *  Instruments that have a MIDI channel assigned and NNA set to "Continue" could cause NNA channel starvation.
 *  In non-compatible linear slide mode, the sample rate could wrap around with portamento slides to extremely low frequencies. This should only happen in compatible mode.

 *  mpg123: Update to v1.32.10 (2024-12-14).
 *  XMPlay SDK: Update to 2025-01-03.

See https://lib.openmpt.org/libopenmpt/2025/01/06/releases-0.7.13-0.6.22-0.5.36-0.4.48/

Downloads:
 * xmp-openmpt for Windows 10 21H2 (or later) and SSE2-capable CPU, or legacy version for Windows 7 SP1 (or later) and SSE2-capable CPU
 * xmp-openmpt RETRO for Windows XP SP3 (or later) or non-SSE2-capable CPU
 * xmp-openmpt RETRO for Windows 98 SE + KernelEx (or later) (without configuration dialog)

saga



saga

Quote from: guestThis and this MED are not played properly.
It took a while to figure out, but transposed IFFOCT instruments in MED files should now behave more correctly.


saga

Seems like FFF commands should only cut notes if they are not triggered on the same row. Should be fixed.


saga

Quote from: guest‣ there are 12 subsongs, not 14.
There may be 12 songs as far as the MED format is concerned, but two of the song sequences contain a jump command in the middle, essentially splitting them into two independent sub songs. OpenMPT finds sub songs even when they are not technically supported by the format (like in most module formats), and it does so even when the format technically supports sub songs.

Quote from: guest‣ subsong 5 "i cant believe it's not techno" from 0:12 sounds different (instrument R)
Jumps between volume/waveform synth sound sequences should now work more correctly.

guest

There is a strange sound in subsong 13 (11 in OctaMED) at 1:16-1:17, 1:18-1:19 on the second channel.

saga

Non-looping synth instrument envelopes should now play correctly.


saga


manx

2025-05-31: xmp-openmpt version 0.8.0 released!

 *  [**New**] Can now read PumaTracker (`PUMA`) modules.
 *  [**New**] Can now read Face The Music (`FTM`) modules.
 *  [**New**] Can now read Future Composer (`FC` / `FC13` / `FC14` / `SMOD`) modules.
 *  [**New**] Can now read Game Music Creator (`GMC`) modules.
 *  [**New**] Can now read Chuck Biscuits / Black Artist (`CBA`) modules from the Expoze musicdisk by Heretics
 *  [**New**] Can now read Real Tracker 2 (`RTM`) modules.
 *  [**New**] Can now read Images Music System (`IMS`) modules.
 *  [**New**] Can now read ChipTracker (`MOD`) modules.
 *  [**New**] Can now read TCB Tracker (`MOD`) modules.
 *  [**New**] Can now read EasyTrax (`ETX`) modules.
 *  [**New**] Can now load UNIC Tracker v1 (`UNIC`) files.
 *  [**New**] MED: Synthesized and hybrid instruments are now supported.
 *  [**New**] GT2: Better support for old "envelopes", in particular adding support for the previously missing tremor / tremolo / vibrato.
 *  [**New**] NST: His Master's Noise "Mupp" instruments are now supported, as well as command 7 "mega-arp".

 *  [**Change**] `build/download_externals.sh` now verifies the integrity of any downloaded files and uses curl instead of wget.

 *  When formatting pattern data, effect letters in the volume column are now always formatted correctly, regardless of the module format.
 *  IT: Various playback fixes.
 *  IT: When using tone portamento to another sample after the previous sample's sustain loop has been released, the new sample should also not play its sustain loop.
 *  IT: When triggering an empty instrument note slot, completely ignore the pattern cell - do not reset the currently playing instrument's envelopes, and also don't process any effects - including global ones.
 *  IT: Offset with instrument number but no note should play offset effect with previous note.
 *  IT: Fixed various combinations of volume column and effect column portamento effects.
 *  IT: Implemented a quirk in command Lxx that always executes a portamento down when no tone portamento has been set up before, sometimes causing the target note to be reached immediately, or sliding the note down very subtly.
 *  IT: Envelope Carry should not be influenced by a previous note-off.

 *  XM: When a key-off is encountered before auto-vibrato reaches full depth, the depth is reset.
 *  S3M: Combined slides (Kxy / Lxy) are no longer run on the first tick of a row in files made with Scream Tracker.
 *  MOD: Groo's "The Ultimate Beeper" now plays like in ProTracker.
 *  DTM: Portamentos are now also evaluated on the first tick of the row.
 *  MO3: If multiple sample slots shared the same Ogg Vorbis sample, only one sample slot was loaded.
 *  MED: Various playback fixes.
 *  SymMOD: Files containing more than 127 channels are no longer rejected.
 *  Better support for automatic slide commands (commands that keep sliding on following rows) in various formats.
 *  The pattern channel limit was raised from 127 to 192 for some formats.

 *  xmp-openmpt: Memory consumption during file loading has been reduced.

 *  zlib: v1.3.1 (2024-01-22).
 *  mpg123: v1.32.10 (2024-12-14).
 *  ogg: v1.3.5 (2021-06-04).
 *  vorbis: v1.3.7 (2020-07-04).
 *  pugixml: v1.15 (2025-01-10).

See https://lib.openmpt.org/libopenmpt/2025/05/31/release-0.8.0/

Downloads:
 * xmp-openmpt for Windows 10 21H2 (or later) and SSE2-capable CPU, or legacy version for Windows 7 SP1 (or later) and SSE2-capable CPU
 * xmp-openmpt RETRO for Windows XP SP3 (or later) or non-SSE2-capable CPU
 * xmp-openmpt RETRO for Windows 98 SE + KernelEx (or later) (without configuration dialog)




saga

OpenMPT currently only has very basic and approximative support of MED's hold & decay concept, this is probably not going to be an easy fix and will require some time.

manx

2025-06-14: xmp-openmpt version 0.8.1 released!

 *  [**Change**] `TCB` was added to the list of supported file extensions. ModLand and Fujiology use this extension for TCB Tracker modules, instead of the canonical `MOD` extension.

 *  IT: Fixed various interactions between Note Cut effect and portamentos.
 *  MED: When triggering a synth note with a Synth Jump command on the same row, the initial speed command was not executed.
 *  S3M: Old ModPlug Tracker versions allowed to use the 28th character of sample names to be used. Such sample names are now read correctly again.

 *  mpg123: Update to v1.33.0 (2025-06-07).

See https://lib.openmpt.org/libopenmpt/2025/06/14/releases-0.8.1-0.7.14-0.6.23-0.5.37-0.4.49/

Downloads:
 * xmp-openmpt for Windows 10 21H2 (or later) and SSE2-capable CPU, or legacy version for Windows 7 SP1 (or later) and SSE2-capable CPU
 * xmp-openmpt RETRO for Windows XP SP3 (or later) or non-SSE2-capable CPU
 * xmp-openmpt RETRO for Windows 98 SE + KernelEx (or later) (without configuration dialog)

manx

2025-07-19: xmp-openmpt version 0.8.2 released!

 *  [**Sec**] Possible out-of-bounds sample data read in a specific combination of reverse sample playback + offset past sample loop. (r23711).

 *  [**Bug**] Fixed pre-C++20 undefined behaviour due to left-shifting negative integer values.

 *  Since libopenmpt 0.8.0, swapping between samples on the rear channels could introduce a click on the front channels.
 *  IT: Volume column slides no longer propagate their effect memory to the regular effect column volume slides.
 *  FC: Allow files with a sequence size of 0 to load (fixes a broken copy of cult.smod).

 *  ogg: Update to v1.3.6 (2025-06-16).

See https://lib.openmpt.org/libopenmpt/2025/07/19/security-updates-0.8.2-0.7.15-0.6.24-0.5.38-0.4.50/

Downloads:
 * xmp-openmpt for Windows 10 21H2 (or later) and SSE2-capable CPU, or legacy version for Windows 7 SP1 (or later) and SSE2-capable CPU
 * xmp-openmpt RETRO for Windows XP SP3 (or later) or non-SSE2-capable CPU
 * xmp-openmpt RETRO for Windows 98 SE + KernelEx (or later) (without configuration dialog)

Maxkatsur

My favorite use of this plugin is that so S3M music modules could output AdLib (FM synthesis) sound samples; XMPlay doesn't have proper AdLib support, not even a certain plugin to restore AdLib sample output had compatibility of S3M. It worked by setting priority format "S3M" in OpenMPT plugin settings. However, it doesn't support automatic resizing of MOD Pattern Display; the very OpenMPT doesn't really has custom pattern displays that can be resized either manually or automatically.

manx

2025-09-06: xmp-openmpt version 0.8.3 released!

 *  [**Bug**] Windows 10 binaries wrongly targeted Windows 11 22H2. They now target Windows 10 2004.

 *  IT: Even when the filter cutoff envelope is stopped before its first tick is applied, the filter should still be activated.

 *  mpg123: Update to v1.33.2 (2025-08-05).

See https://lib.openmpt.org/libopenmpt/2025/09/06/releases-0.8.3-0.7.16-0.6.25-0.5.39-0.4.51/

Downloads:
 * xmp-openmpt for Windows 10 2004 (or later) and SSE2-capable CPU, or legacy version for Windows 7 SP1 (or later) and SSE2-capable CPU
 * xmp-openmpt RETRO for Windows XP SP3 (or later) or non-SSE2-capable CPU
 * xmp-openmpt RETRO for Windows 98 SE + KernelEx (or later) (without configuration dialog)