Go to bottom

Currently used Amiga ProTracker replay code?

category: code [glöplog]
Just wondering what the most commonly used replay routines are these days...

We have the p61 player, which I guess is the most commonly used... but what other players are people using these days?
added on the 2020-07-05 21:20:18 by DanLemon DanLemon
You could give Dissident's ultimate tracker support package a try:
And there's another fairly recent (more game-centric) replayer from Frank Wille, ptplayer:
added on the 2020-07-05 21:35:10 by bifat bifat
Yeah, I used PTPlayer in Colombia, but stripped it down to save some bytes (master volume and sfx handling removed). P61 didn't get on too well with aklang :D

We want to benchmark some players, and show peak CPU time usage / memory footprint / module size with various commonly used module players on A500
added on the 2020-07-05 21:49:09 by DanLemon DanLemon
I'd be interested in the results too. For our upcoming demo we found ourselves stuck with p61a, which is not 100% perfect, but has excellent runtime characteristics (if used correctly), and we depend on its track compression (57 different tracks, which get compressed to < 12k in memory).
added on the 2020-07-05 21:58:23 by bifat bifat
Very interested too, was one of The Player "testers" back in the day with Yolk :-D
added on the 2020-07-05 22:54:45 by leGend leGend
I haven't released anything with Tracker modules in 20 years. But when I did, Trackerpacker 3.1 by Crazy Crack was sometimes more reliable than P61. I also started to like the excellent K-Player routine from Hippo Player which was released only a few years ago.
added on the 2020-07-05 23:23:52 by noname noname
Trick to using p61 with something like a klang is it add a pattern in the song data which uses every single sample then the converter doesn't optimise their positions. Just put it at the end of the track.
added on the 2020-07-06 01:31:37 by djh0ffman djh0ffman
DanLemon: You can use P61 with aklang. But you need to be aware that the P61 converter will cut the wasted bytes in your samples. That is, every sample will be trimmed to the bare minimum that actually sounds. So, you would need to take a program like Milkytracker and pass the optimizer to the samples. That way you can save a module with the sizes that P61 will like. Of course, you need to return to aklang and adjust the instruments to generate samples with these exact sizes. Take in count, for instance, that most if not all of the looped samples will surely have a couple of bytes more. I hope I've explained it clearly enough. I've managed to use P61 with aklang without problems using this trick and I'll put P61+aklang in my next 40/64K intro. I know this is a bit annoying though. :]
added on the 2020-07-06 01:36:15 by ham ham
djh0ffman: That's a good idea too and it's quite fast if you are doing the code and the music at the same time.

I forgot to say in my previous post that you cannot have unused instruments in your module because P61 will reorder the rest of the samples to put them together. I probably forgot this because it's quite obvious that P61 will do this.

However, I believe that your trick only works if that final pattern (or some of the previous) plays every sample to its full length. Not if, for instance, you have a long sample and make a sequence of notes that are so near to each other that the player never plays the full sample. P61 will detect this and trim that sample, if I am not mistaken. So, your trick may not work in some cases. Unless you make a final pattern with low bpm rate.
added on the 2020-07-06 01:55:53 by ham ham
I've used The Player for both intros and demos for such a long time now. All my sync is closely tied to the position/col/row and just can't can't be bothered to change replayer
If Hoffman's trick works with Aklang that would be super news!
added on the 2020-07-06 08:26:17 by Corial Corial
I'm using my own ptpack.
added on the 2020-07-06 10:12:28 by hitchhikr hitchhikr
So, your trick may not work in some cases. Unless you make a final pattern with low bpm rate.

As long as the sample is registered on the pattern as being played then its fine. Check the last pattern from Eon.


P61 convert doesn't estimate how long a sample has been played, just that it's been played. The sample optimisation is based on sample content, trimming tailing silence and sample data after a loop.

The additional point here is that I replace the sample pointers with a hook in the P61_Init phase. This means that even if the sample lengths are optimised, they get overwritten anyway. I "think" that if you select "No Sample" option it might negate this phase of the conversion, but I can't quite remember. There maybe a patch required here but I'd be happy to take a deeper dive into aklang with P61 in the next few days to iron this out.

I don't think there is a replayer which is faster than p61 with such a small memory foot print for the music data which is why I still use it.
added on the 2020-07-06 11:39:50 by djh0ffman djh0ffman
What's the typical CPU cost of those trackers on Amiga? Does the cost vary a lot?
added on the 2020-07-06 12:41:22 by keops keops
This is what we'll be benchmarking for various well known modules...

Module Size / Player Code Size / Min & Max CPU usage etc...
added on the 2020-07-06 13:48:32 by DanLemon DanLemon
You might want to consider the replay and format of cinter too. I think looking at the code it is by far the most optimised replayer but it requires a large chunk of fast ram due to the format of the music data. It has some restrictions too.
added on the 2020-07-06 14:23:57 by djh0ffman djh0ffman
Can cinter play regular modules too ?
added on the 2020-07-06 14:38:43 by DanLemon DanLemon
Can cinter play regular modules too ?

Just don't have any Cinter instruments in the module, and that is what it will do.

But take a good look at the documentation to see what the player currently does not support. Most effects aren't supported: https://github.com/askeksa/Cinter
added on the 2020-07-06 17:49:29 by lug00ber lug00ber
If most effects aren't supported then it will probably have a hard time with most modules in general, so probably won't include it in the benchmark TBH
added on the 2020-07-06 19:25:04 by DanLemon DanLemon
I’ve been using P61 for all mod-playback since forever, with the only exception being this music disk where we used ptreplay.library because we wanted to distribute the original mod-files. (Make sure you use the version patched by Stingray if you include ptreplay in your benchmark)
i know, Blitz2 is probably not for real coders, i guess, but just my 50cent from recent troubles:
Not knowing anything about anyting, first i used ptreplay.library in an obviously old and bugged state (not that i knew or bothered to inform myself about it, it was somehow "bundled" with Blitz2 or i had installed it 28 years ago..) and then switched to ptplay.libray, at first very happy that it had "more features".
ptplay.library for some reason really gave me extreme flickering with bobs for reasons that i also couldn't figure out (i didn't double-buffer anything at that time) and was near my internal mental breakpoint when also that one was obviously full of bugs and trouble - i didn't even know that that was "possible". I thought released library, must work fine, right?
So the flickering and really randomly broken replay nearly drove me insane, when i finally decided to google a bit and read forums and came across ciatracker.library.
That one had a really weird usage for me at first, but seems to work perfectly fine, unload without any leftover mem, a very nice pause-continue mechanism and was finally the one that made me implement a music/sfx toggle mode, because it was so reliable. That is why now on any level of the "game" i can toggle to sfx, toggle back and the correct song continues instead of always being restarted. It even works flawlessly when "silently" starting tracks so that i can go to sfx at any point, get to another "part of the game" where, when toggling back to music, now another song would actually be playing and got that working, too.
So maybe, if you're close to insanity because you made the terrible decision to do something in Blitz 2 , this one saved my life : CIATrkrLib
which i found through this forum entry.
added on the 2020-07-10 04:23:16 by wertstahl wertstahl
Make sure you use the version patched by Stingray

Which can be found here and will be updated soon as I got a bug report that some modules cause problems (this bug is also present in the previous versions of the library).
added on the 2020-07-10 11:20:38 by StingRay StingRay


Go to top