A command line tool to downgrade (that being a very heavy keyword) Scream Tracker 3 modules to Scream Tracker 2 modules, written in C99.
./screamverter [-s] input.s3m output.stm
Important
These points are important for a decent conversion.
- 4 channels preferably (it only converts the first four channels.)
- Sample sizes cannot exceed 65535 (and no 16-bit samples.)
- No panning or Adlib, Scream Tracker 2/Scream Tracker Music Interface Kit is mono.
- Sample names are gonna truncated heavily to 12 characters if its file name field is blank.
- You can only use effects A - J, with some caveats with the table shown below.
Effect | Function in ST2/STMIK - in ST3/others | Notes/Quirks (Effect memory does not exist in Scream Tracker 2, so a parameter of 0 will act like a no-op for any effect that normally has it. (e.g. volume slide, portamento slides, vibrato, etc.)) |
---|---|---|
Axx | Set speed - Set ticks per row | It has a scaling factor (TODO: handle it) alongside setting ticks per row. |
Bxx | Set next order - Position jump | It does not perform an immediate pattern break unlike most other trackers, so it's best to place it alongside a Pattern break. |
Cxx | Pattern break | The parameter is ignored which is identical behavior to NoiseTracker. |
Dxy | Volume slide | There's no fine slides, and y will take priority if both x and y are specified (which is backwards from how it's usually handled). |
Exx | Portamento down | This effect can cause the note period to underflow, and there are no fine/extra-fine slides. |
Fxx | Portamento up | This effect can cause the note period to overflow, ditto for fine/extra-fine slides. |
Gxx | Tone portamento | It does not reset the sample volume unlike most other trackers. |
Hxy | Vibrato | The depth is doubled compared to other trackers, this converter will attempt to adjust the depth accordingly. |
Ixy | Tremor | A parameter of 0 will be a very fast tremor, like old Scream Tracker 3. |
Jxy | Arpeggio | The effect behaves strangely since it tends to skip to y halfway through a row if x was 0, it's not commonly implemented this way however. |
Kxx | (No-op) | This can be entered into the editor but it does not do anything, it also bugs out Scream Tracker 3 when importing so it's best to not use it! |
Lxx | (No-op) | Ditto. |
Mxx | (No-op) | Ditto. |
Nxx | (No-op) | Ditto. |
Oxx | (No-op) | Ditto. |
PRs accepted.
Small note: If editing the README, please conform to the standard-readme specification.
ISC © 2024 RepellantMold
- Future Crew: Scream Tracker 2 and 3 specifications
- Claudio Matsuoka: unofficial Scream Tracker Music Interface Kit format specifications