A Guide to Playroutines

This is meant as general guide to getting a Protracker song played perfectly in your demo, and what to do if it doesn't sound as it should.

What to expect

Perfection*, of course! Actually most of the stuff works quite well, but the asterisk there is what this article is about. ;)
I would like to create awareness that using unintended side effects audible in your favorite tracker and asking AnyReplay.S to replay it perfectly is asking for trouble. The side effects appear in the mystic realm between the 1-line specification of each effect command and the longer description from exact analysis of what the actual running code in the Protracker executable does to implement it!
Experienced tracker musicians already know there are differences in how Protracker versions, even ones just a subversion apart, handles the same effects. The reason is lots of people made their own Protracker versions, and unused effect commands were put to different uses. Even some used effects were replaced or tweaked, to allow a greater slide range or things like that. One example is the difference in sample offset handling between PT 2.3D and later versions, another is period slide speeds.
If you use these and the song is intended for an executable, musicdisk, etc, you must find a playroutine (replay source) that plays them correctly. Correct playroutines are not available for all Protracker versions, because they've been lost or not released. Even the playroutine inside the reference Protrackers is imperfect.
The point is, the playroutine available will never be exactly the same as in the tracker. Even if you rip it out of the disassembled tracker software, there is no way to guarantee no mistake was made during the process. You can systematically test out each effect with different contexts such as notedata or not, retrig or instrument trigger, different instrument settings, but it would be millions of combinations and you could still only say that it works very well, not that it's perfect. Yet if a combination that causes an error occurs, it's instantly heard and very distinct.
This is a point that must be understood and accepted, but also a real problem. Who will fix it?

How to check

The closest thing to ensuring that a playroutine is available is to play it in a reference Protracker version such as PT2.3D to hear that it sounds correctly. You can still use your favorite tracker, as long as you test it before sending your module to the coder. Re-save the module from the reference Protracker when it sounds correct. Later trackers may save the module file with small binary differences. The coder can also re-save the module to eliminate any such differences left in the file.
Choose the reference Protracker to check with, use whatever tracker you want. I suggest that if your music isn't reliant on the side effects PT 2.3D supports (whether by design or by accident), checking it in PT 3.15 pretty much guarantees that it works in "any" playroutine, although that of course has more to do with your style of tracking and PT 3.15 not using/supporting these exploitations than anything. If it sounds correct there, it's a rough conclusion that the song is "abuse-free", if you will.

How to choose the correct playroutine

Let's go with PT 2.3D. At bottom I've gathered some links on the subject, with a bunch of playroutines for Protracker. PT2.3a_replay_cia.s should be closest to PT 2.3D, which is based on PT1.2x, the last one by the original author, Lars Hamre. Yeah, tracker version history could be very confusing to a historian :)
One consideration is 680x0 compatibility. Often this has been the reason for choosing some of the later playroutines. It would be optimal to test out if the above playroutine is in fact the closest on 68000 and then spend a bit of time getting all the incompatibilities out. To my knowledge this is sort of what all playroutine authors have done, with varying degrees of success. There are more DMAWait fixes than Youtube cat videos, or so it seems! The first thing a coder should do with any replay source is to rip out the DMA wait and add a timer interrupt.
Some may have been adapted to play in a multi-tasking environment, while others require the OS to be off. I have no magical recipe for choosing the perfect playroutine; I don't think there is one such; some bug or feature will arise at some point for some release and it will have to be found and fixed.

What to do if it sounds wrong in the playroutine

Often, differences are not found until a musician gets an almost finished version of the demo, and hears that it "sounds wrong". If it doesn't sound correct but still doesn't sound completely wrong, the coder may not have noticed; after all, he doesn't know exactly what it should sound like!
To solve this, the musician should tell the coder what reference Protracker version it sounds correct in, and the coder should tell the musician what reference Protracker version his playroutine supports most closely. The latter is much harder to know for sure than the former.
Simply, agreement + knowledge + co-operation = success !

The Player Playroutine

There is an alternative that allows the musician to check the module before sending it to the coder.
The Player is a notedata compressor that converts a Protracker module to the P61 format. Coders like it because it saves bytes, works on all Amigas, and has good Protracker compatibility. It's become better over the years, but see the table below for which effects are not (fully) implemented (which the musician therefore can't use).
The musician can check regularly that he's not using effects that would sound incorrect in the demo.
One point that I think should appeal to musicians is that you don't have to fiddle around with loops and pattern breaks, but a pattern can be a pattern and you can copy and paste freely without the final compressed module size increasing.
The Player was made during 1992-1995, so it would have been made for one or more Protracker versions that were popular before and during that time. (This vague statement is intended; I have not found an official mention by the author which Protracker versions it handles, it's likely to handle small differences between Protracker module formats, and I know the converter has imperfections.)
Only the playroutine has been updated since this version from the 90s, so the P61 format and the converter is 100% original. This means that if the song doesn't sound correct in the converter, the only solution is to edit the Protracker module. (The only exceptions are two effect fixes: EDx, and Bxx in 1-pattern songs... the other fixes are for the coder's usage of the playroutine.)

Known unsupported effects in The Player 6.1

  • Dxx (D00 is supported, though!)
  • E5x/E6x is supported, but no nested loops
  • Any speed or tempo setting outside the pattern data, see Protracker Tempo

Overall, it stands up well, and if you test-convert your module, you know 100% that you can just plug it in the demo. No, for real. And that's a godsend for all involved when The Spectre of Deadlines Past starts tapping your shoulder..!


A history of .mod format descriptions
A history of Protracker replay sources on 16-bits.org
Protracker support archive on Aminet (mixed versions, sources, and info)
The Player 6.1A Guide
P6112: The latest The Player playroutine, containing detailed info and links to Youtube tutorials