Author Topic: XMPlay Scream Tracker 2.xx plugin  (Read 1178 times)

ViRUS

  • Posts: 12
XMPlay Scream Tracker 2.xx plugin
« on: 28 Feb '18 - 00:45 »
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.01/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
« Last Edit: 12 Mar '18 - 09:10 by ViRUS »

guest

  • Guest
Re: XMPlay Scream Tracker 2.xx plugin
« Reply #1 on: 28 Feb '18 - 09:40 »
Plugin can't start here because VCRUNTIME140.dll is missing.

saga

  • Posts: 2242
Re: XMPlay Scream Tracker 2.xx plugin
« Reply #2 on: 28 Feb '18 - 10:52 »
Nice work!

Plugin 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

  • Posts: 12
Re: XMPlay Scream Tracker 2.xx plugin
« Reply #3 on: 28 Feb '18 - 22:45 »
Nice work!
Thanks. I have many ideas how to improve it, but I do not have enough spare time.  :(

Plugin 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

  • Posts: 12
Re: XMPlay Scream Tracker 2.xx plugin
« Reply #4 on: 2 Mar '18 - 07:10 »
Changes in v0.02:
  • experimental st23 engine
  • no more garbage in infotext
  • duration calculation  8)
  • set position handler
  • statically linked runtime
« Last Edit: 2 Mar '18 - 07:13 by ViRUS »

guest

  • Guest
Re: XMPlay Scream Tracker 2.xx plugin
« Reply #5 on: 2 Mar '18 - 11:10 »
Thanks for plugin.

Some remarks:

Plugin 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.

Ian @ un4seen

  • Administrator
  • Posts: 20851
Re: XMPlay Scream Tracker 2.xx plugin
« Reply #6 on: 2 Mar '18 - 14:35 »
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

  • Posts: 12
Re: XMPlay Scream Tracker 2.xx plugin
« Reply #7 on: 6 Mar '18 - 08:23 »
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.
Thank you, I have tried to link it, but unsuccessful. I will try it again later.

Plugin 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

  • Guest
Re: XMPlay Scream Tracker 2.xx plugin
« Reply #8 on: 6 Mar '18 - 10:22 »
Sample 7 text is displayed incompletly and the title "Georythmics-PM" is missing for:
ftp://modland.com/pub/modules/Screamtracker 2/Purple Motion/georythm.stm

ViRUS

  • Posts: 12
Re: XMPlay Scream Tracker 2.xx plugin
« Reply #9 on: 7 Mar '18 - 07:47 »
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.
I had successfully compiled the plugin, it became really small. Thanks.

guest

  • Guest
Re: XMPlay Scream Tracker 2.xx plugin
« Reply #10 on: 7 Mar '18 - 10:21 »
It seems doesn't work on Windows XP SP2 - "Unable to load function: _except_handler4_common (msvcrt.dll)".

Ian @ un4seen

  • Administrator
  • Posts: 20851
Re: XMPlay Scream Tracker 2.xx plugin
« Reply #11 on: 7 Mar '18 - 17:34 »
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

  • Posts: 12
Re: XMPlay Scream Tracker 2.xx plugin
« Reply #12 on: 12 Mar '18 - 08:20 »
Changes in v0.04:
  • fixed st23 tone portamento

It seems doesn't work on Windows XP SP2 - "Unable to load function: _except_handler4_common (msvcrt.dll)".
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.
It is linked with compatibility OBJ file now, please try it.

guest

  • Guest
Re: XMPlay Scream Tracker 2.xx plugin
« Reply #13 on: 12 Mar '18 - 10:38 »
Now it works.

There are clicks at the beginning of the playback:
ftp://modland.com/pub/modules/Screamtracker 2/- unknown/jam session.stm

ViRUS

  • Posts: 12
Re: XMPlay Scream Tracker 2.xx plugin
« Reply #14 on: 15 Mar '18 - 05:09 »
There 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

  • Guest
Re: XMPlay Scream Tracker 2.xx plugin
« Reply #15 on: 16 Mar '18 - 09:43 »
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

  • Posts: 12
Re: XMPlay Scream Tracker 2.xx plugin
« Reply #16 on: 4 Apr '18 - 09:47 »
Thank you for the feedback!

Scream 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.

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
I know, I am working on it.

ViRUS

  • Posts: 12
Re: XMPlay Scream Tracker 2.xx plugin
« Reply #17 on: 11 Apr '18 - 08:43 »
Changes in v0.05:
  • ST2.3 compatible mixer
  • arpeggio 'out of range' bug fixed

guest

  • Guest
Re: XMPlay Scream Tracker 2.xx plugin
« Reply #18 on: 2 May '18 - 09:54 »
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.)