Quick question: how often to apply tick effects per row in ProTracker player?

Started by mabersold, September 08, 2021, 02:20:39

Previous topic - Next topic

mabersold

Hi,

I'm working on a small side project to make a ProTracker player in Kotlin. So far, so good, but when I developed the slide-to-note effect (3xy) I noticed something odd: it was sliding to the note more quickly than I expected, and in some cases was overshooting where the note was supposed to go (such as when the effect was expected to stop at a certain row before it actually reaches the specified period).

I found that I was applying the effect six times per row, once at the end of each tick. When I changed this to only apply five times per row, it sounded correct. So, my question is basically, do per-tick effects in ProTracker only get applied n-1 ticks per row, where n is the number of ticks per row? Also, are they always applied at the end of a tick? So for example, if there were six ticks in a row the per-tick effects would be applied after ticks 0-4, but not tick 5?

Saga Musix

Traditionally, trackers distinguish between "fine" slides which are only applied on the first tick of a row, and "normal" slides which are the opposite - they are applied on each tick but the first. At speed 1, those are not applied at all because there is only a "first" tick but no other ticks. In other formats this may vary but in general, all effects in ProTracker fall in one of those two categories (including vibrato affects, which are not applied on the first tick).
» No support, bug reports, feature requests via private messages - they will not be answered. Use the forums and the issue tracker so that everyone can benefit from your post.

mabersold

Great - that's good to know. When you say that a fine slide is applied "on" the first tick, does that mean apply the effect before the rendering the sample for the first tick, or after?

e.g: Period at a row is 428 with fine pitch slide up effect E11. Does this mean the audio data should be resampled with like this:

Tick: Period at Tick
0: 428
1: 429
2: 429
3: 429
4: 429
5: 429

Or like this, with the effect applied before the first tick:

Tick: Period at Tick
0: 429
1: 429
2: 429
3: 429
4: 429
5: 429

Saga Musix

» No support, bug reports, feature requests via private messages - they will not be answered. Use the forums and the issue tracker so that everyone can benefit from your post.