xmp-openmpt: An XMPlay input plugin based on OpenMPT

Started by saga,

saga

Yes, I think it's much more common for OctaMED files to have the .med extension. ModLand occasionally uses non-standard file extensions to better differentiate some formats.
Oktalyzer is not the same as OctaMED and typically uses the OKT or OKTA extension, by the way.

saga

2018-03-11: xmp-openmpt version 0.3.7 released!

- IT: More accurate song length calculation for pattern loops that have no start command and are following another pattern loop.
- IMF: Filter cutoff was upside down and the cutoff range was too small.
- MED: Correctly import patterns with less channels than the maximum used amount. Import "STP" note stop command.
- DBM: Key Off and Set Envelope Position were imported incorrectly. High sample offset (E7x) is now supported.
- DIGI / DBM: Arpeggio should not return to base note at end of row.
- Some filter changes through MIDI macros were not applied if the note volume was set to 0 on the same row.

See https://lib.openmpt.org/libopenmpt/2018/03/11/release-0.3.7-and-0.2.9913-beta30/ for further details.

xmp-openmpt for Windows 7 and newer, CPUs with SSE2 instruction set - that's pretty much any x86 CPU made in the last ten years. Any 64-bit CPU automatically supports this.
xmp-openmpt for Windows XP / Vista or old CPUs without SSE2 instruction set

saga

2018-04-08: xmp-openmpt version 0.3.8 released!

- Possible crash with IT and MO3 files containing many nested pattern loops.
- Keep track of active SFx macro during seeking.
- The "note cut" duplicate note action did not volume-ramp the previously playing sample.
- A song starting with non-existing patterns could not be played.
- DSM: Support restart position and 16-bit samples.
- DTM: Import global volume.

See https://lib.openmpt.org/libopenmpt/2018/04/08/security-updates-0.3.8-0.2-beta31-0.2.7561-beta20.5-p8-0.2.7386-beta20.3-p11/ for further details.

xmp-openmpt for Windows 7 and newer, CPUs with SSE2 instruction set - that's pretty much any x86 CPU made in the last ten years. Any 64-bit CPU automatically supports this.
xmp-openmpt for Windows XP / Vista or old CPUs without SSE2 instruction set


saga

Because for some reason the sample volume is 0. You will find that Impulse Tracker itself will just play silence as well. Consider the file to be broken. You can change the sample amplification to a sensible value (e.g. 48) in OpenMPT or Impulse Tracker and then listen to the file as intended.


guest


saga

Impulse Tracker's filter is really unstable at its lowest cutoff settings when using very high sample rates. As you have noticed, it will only work fully correctly at sample rates < 88 kHz. I tried addressing this issue in the past but apparently it wasn't enough. I'm not sure if it can be fully fixed.

saga


guest


saga

Quote from: guestPlugin ignores first order (pattern 3).
There seems to be a problem with importing pattern jump commands, will be fixed in the next update.
Quote from: guestSample 3 name should be "soltrumm.001" (now is "soltrumm.00").
Are you the same person that sent me an email regarding this exact issue?  You need to upgrade to the latest version, this problem has already been fixed for a while.

guest

Quote
QuoteSample 3 name should be "soltrumm.001" (now is "soltrumm.00").
You need to upgrade to the latest version, this problem has already been fixed for a while.
I have xmp-openmpt version 0.3.8.10046 for Windows XP/Vista.

saga

Ah, I see what's going on now. The filename was imported twice (once as a regular sample name and once as a sample filename), but libopenmpt only uses the regular sample name, which wasn't fixed yet. The next update will fix the display of the regular sample name, too.

guest

ftp://ftp.modland.com/pub/modules/Fasttracker/Zane/wishes.mod
xmp-openmpt config:
Channels - stereo
Stereo separation - lowest

Sample 2 on channels 2,3,4 in pattern 0 isn't audible.

saga

Yes, that is to be expected, because these are surround channels. In a stereo setup, surround channels are emulated by Pro-Logic Surround, i.e. the right channel plays an inverted copy of the left channel. At 0% stereo separation, they cancel each other out (-x + x = 0). If you want to listen in mono, set the output to mono instead.

manx

2018-04-29: xmp-openmpt version 0.3.9 released!

 *  Possible crash in low memory situations when loading AMS files.
 *  STM: Having both Bxx and Cxx commands in a pattern imported the Bxx command incorrectly.
 *  STM: Last character of sample name was missing.
 *  Speed up reading of truncated ULT files.
 *  ULT: Portamento import was sometimes broken.
 *  The resonant filter was sometimes unstable when combining low-volume samples, low cutoff and high mixing rates.
See https://lib.openmpt.org/libopenmpt/2018/04/29/security-updates-0.3.9-0.2-beta32-0.2.7561-beta20.5-p9-0.2.7386-beta20.3-p12/ for further details.

xmp-openmpt for Windows 7 and newer, CPUs with SSE2 instruction set - that's pretty much any x86 CPU made in the last ten years. Any 64-bit CPU automatically supports this.
xmp-openmpt for Windows XP / Vista or old CPUs without SSE2 instruction set


saga

Thanks for the report, the FAR format is really strange. Sadly fixing the volume command is not the only thing that's requied to make this module play right...

deus-ex

MilkyTracker plays the module fine, including channel 4 Order 8 (pattern 6) - channel 4 (counted from 0 in FAR).

Although that particular channel/instrument sounds different in the original tracker compared to MilkyTracker. Check the attached audio file that holds an excerpt spanning from roughly Order 07 to 09 of the module playing in Farandole Composer under DOSBox using GUS emulation.


saga

As said, importing the volume commands is the smallest problem to making the file play correctly - I have already fixed that, but MilkyTracker doesn't even try to get the other parts (in particular portamentos) right.

manx

2018-06-17: xmp-openmpt version 0.3.10 released!

 *  Bug: Internal mixer state was not initialized properly when initially rendering in 44100kHz stereo format.
 *  Bug: AMF: Undefined behaviour in loader code could lead to files playing silent.
 *  Switching between instruments with portamento did not update the NNA settings for the new instrument.
 *  FAR: Properly import volume commands.

See https://lib.openmpt.org/libopenmpt/2018/06/17/release-0.3.10-and-0.2.10495-beta33/

xmp-openmpt for Windows 7 and newer, CPUs with SSE2 instruction set - that's pretty much any x86 CPU made in the last ten years. Any 64-bit CPU automatically supports this.
xmp-openmpt for Windows XP / Vista or old CPUs without SSE2 instruction set

Tarma

We need a better system to override the internal MOD-player engine. Extensions filter is not a good option...

For example: I have a HUGE library of Amiga modules with their original names (prefix.filename. No extension). In my situation, xmp-openmpt simply sit down in the background and every MOD is played by the standard engine despite priority filetypes. By the way, i will not manually rename 30+ MB of files (for historical reasons too), 'cause the next step is to edit every playlist accordingly...

deus-ex

Hi manx and saga,

thank you for continuous support and frequent releases of OpenMPT and its plugin derivatives. Today I checked the recent foobar2000 fork by Kode54 against a few of my test files and found a replay issue with the following module:

ftp://ftp.modland.com/pub/modules/Impulsetracker/Platosha/make it simple.it
Starting from Order 09 the instrument on Channel 04 isn't accurately replayed, reference is Impulse Tracker v2.14. As expected OpenMPT itself and the Winamp plugin of OpenMPT are affected likewise, while XMPlay appears to play the module correctly. Find attached an excerpt of the module, created with Impulse Trackers stereo WAV writer driver. From 00:07 onwards you can hear the instrument in question.

saga

The file was saved with ModPlug Tracker, so OpenMPT plays it the way ModPlug Tracker would play the file, not Impulse Tracker.

Edit: Apart from the filter differences, there appears to be a 0-volume optimization on the arpeggiated instrument which shouldn't be there. This will be fixed. However, any other differences in sound characteristics compared to IT will stay as mentioned above.

deus-ex

Thanks for looking into it, Saga. I understand and fully support your position on this.

Besides the bit in the module that holds the information which tracker/version was used to save it, there seem to be more characteristics or actual data to identify whether a module was natively saved in ModPlug Tracker? Because out of curiosity I just resaved this module with Impulse Tracker, yet besides the change of the used tracker info from "ModPlug Tracker 1.09 - 1.16" to " Impulse Tracker 2.15" the module gets replayed by OpenMPT all the same as before.