XMPlay Scream Tracker 2.xx plugin

Started by ViRUS,

ViRUS

Scream Tracker 2.xx plugin for XMPlay

What is Scream Tracker?
Scream Tracker was created by Psi (Sami Tammilehto), who later formed Finnish Future Crew. It was written in C and assembly language.
The first version (1.0) had monophonic 4-bit output via PC speaker and 8-bit via a digital-to-analog converter on the parallel port, or a Sound Blaster 1.x card. The first popular version of Scream Tracker, version 2.2, was published in 1990. Versions prior to 3.0 created STM (Scream Tracker Module) files, later ones used S3M (ScreamTracker 3 Module).

Plugin features:
  • replayer based on disassembled original tracker
  • all effects, including "buggy" arpeggio are 100% supported
  • fixed-point resampler without interpolation
  • all bug and features of Scream Tracker
You can get this plugin here:
https://github.com/viiri/st2play/releases/download/0.07/xmp-stm.zip

Songs can be found here:
ftp://ftp.modland.com/pub/modules/Screamtracker%202/

Changes in v0.02:
  • experimental st23 engine
  • no more garbage in infotext
  • duration calculation  8)
  • set position handler
  • statically linked runtime
Changes in v0.03:
  • fixed crashes and freezes
  • added sample info
Changes in v0.04:
  • fixed st23 tone portamento
Changes in v0.05:
  • ST2.3 compatible mixer
  • arpeggio 'out of range' bug fixed
Changes in v0.06:
  • proper song initialization
  • ansi to utf8 encoder
Changes in v0.07:
  • use XMPFILE routines
  • STS song support

guest

Plugin can't start here because VCRUNTIME140.dll is missing.

saga

Nice work!

Quote from: guestPlugin can't start here because VCRUNTIME140.dll is missing.
Download the VS2015 runtime: https://www.microsoft.com/de-de/download/details.aspx?id=48145

ViRUS

Quote from: sagaNice work!
Thanks. I have many ideas how to improve it, but I do not have enough spare time.  :(

Quote from: guestPlugin can't start here because VCRUNTIME140.dll is missing.
I will try to link runtime statically, or rewrite loader to use XMPlay's file functions.

PS: Source code will be published soon.

ViRUS

#4
Changes in v0.02:
  • experimental st23 engine
  • no more garbage in infotext
  • duration calculation  8)
  • set position handler
  • statically linked runtime

guest


Ian @ un4seen

Regarding extra runtime library requirements, it is possible to avoid that (and static linking bloat) by using the MSVCRT.LIB file (plus an OBJ file to support older Windows) that's included in the Windows Driver Kit. For convenience, I've put them up here:

   www.un4seen.com/stuff/msvcrt.zip

Those files are from the Vista WDK. If they don't work with the latest Visual Studio (I haven't tried), you can download the latest Windows Driver Kit to get the latest files.

ViRUS

Quote from: Ian @ un4seenRegarding extra runtime library requirements, it is possible to avoid that (and static linking bloat) by using the MSVCRT.LIB file (plus an OBJ file to support older Windows) that's included in the Windows Driver Kit.
Thank you, I have tried to link it, but unsuccessful. I will try it again later.

Quote from: guestPlugin crashes eg. on:
ftp://modland.com/pub/modules/Screamtracker 2/Purple Motion/future brain.stm
ftp://modland.com/pub/modules/Screamtracker 2/Purple Motion/jonne1.stm

Sample text and possibility to choose mixing frequency above 23863 Hz could be nice.

Thank you for feedback. Crashes fixed and sample info added in updated version.
23863 was a highest sample rate used in the Scream Tracker 2.xx, st2play is aimed to be the most accurate replayer as possible, so it will support only original frequencies.
But don't worry, it is plugin internal frequency, XMPlay resamples sound stream before send it to an audio output.

guest


ViRUS

Quote from: Ian @ un4seenRegarding extra runtime library requirements, it is possible to avoid that (and static linking bloat) by using the MSVCRT.LIB file (plus an OBJ file to support older Windows) that's included in the Windows Driver Kit.
I had successfully compiled the plugin, it became really small. Thanks.

guest

It seems doesn't work on Windows XP SP2 - "Unable to load function: _except_handler4_common (msvcrt.dll)".

Ian @ un4seen

Perhaps the WinXP (or Win2000) compatibility OBJ file wasn't used when building the DLL? If so, linking with that should fix the problem. If not, it might be that more recent WDK files are needed when using the latest Visual Studio.

ViRUS

Changes in v0.04:
  • fixed st23 tone portamento

Quote from: guestIt seems doesn't work on Windows XP SP2 - "Unable to load function: _except_handler4_common (msvcrt.dll)".
Quote from: Ian @ un4seenPerhaps the WinXP (or Win2000) compatibility OBJ file wasn't used when building the DLL? If so, linking with that should fix the problem. If not, it might be that more recent WDK files are needed when using the latest Visual Studio.
It is linked with compatibility OBJ file now, please try it.


ViRUS

Quote from: guestThere are clicks at the beginning of the playback:
ftp://modland.com/pub/modules/Screamtracker 2/- unknown/jam session.stm
Fixed. The loader now clears the memory buffer into which samples are loaded.

guest

Scream Tracker V2.3 plays sample more clean than a plugin:
ftp://modland.com/pub/modules/Screamtracker 2/Viznut/vaikkuleipa korvassa.stm

Please add fade-out option for modules with jump command. Now they are played endlessly, for example:
ftp://modland.com/pub/modules/Screamtracker 2/Purple Motion/fordemo1.stm

ViRUS

Thank you for the feedback!

Quote from: guestScream Tracker V2.3 plays sample more clean than a plugin:
ftp://modland.com/pub/modules/Screamtracker 2/Viznut/vaikkuleipa korvassa.stm
There was mixer bug in all versions prior to ST2.3 and I just copied the part of code into st23 branch. Fixed in st2play. I will rebuild plugin next week.

Quote from: guestPlease add fade-out option for modules with jump command. Now they are played endlessly, for example:
ftp://modland.com/pub/modules/Screamtracker 2/Purple Motion/fordemo1.stm
I know, I am working on it.

ViRUS

Changes in v0.05:
  • ST2.3 compatible mixer
  • arpeggio 'out of range' bug fixed

guest

ftp://ftp.modland.com/pub/modules/Screamtracker%202/Skaven/hevijanis%20istu%20maas.stm
Plugin cuts sound at the end of order 1 but there is also order 2.

BTW, plugin doesn't play STM from archives (ZIP, RAR, etc.)

ViRUS

Quote from: guestftp://ftp.modland.com/pub/modules/Screamtracker%202/Skaven/hevijanis%20istu%20maas.stm
Plugin cuts sound at the end of order 1 but there is also order 2.
Fixed in new release.

Changes in v0.06:
  • proper song initialization
  • ansi to utf8 encoder

ViRUS

Quote from: guestBTW, plugin doesn't play STM from archives (ZIP, RAR, etc.)



Changes in v0.07:
  • use XMPFILE routines
  • STS song support

Ian @ un4seen

Looks like it's true, good things come to those who wait. Eventually ;D

The plugin update is on the support site now too.