The playback of the samples in PingPong loop mode seem to skip the last sample when looping.
It can be heard when moving the loop end marker. It makes no difference here if the last sample position is included or not. I’ve tried with both even and odd sample lengths. (And.. switching to PingPong would normally have raised the perceived pitch an octave which doesn’t quite happen).
It would be very good to have this feature working since it’s a nice way to handdraw chip samples (all harmonics then become 90 or 270° btw).
In previous versions it skipped the first sample,and it seems that this is still the case in 3.5
I guess this is because of the interpolation 0f the antialiasing , taking average of the samples .
Switch it off , and set interpolation to linear or OFF
Moving the end marker one step gives the same loop. However, it’s strange that changing the last sample value still has an effect when it’s outside the loop (with no AA/interpolation). This would suggest that there is some native interpolation going on under the hood that interacts with all of this as well..
Then I thought that it was just a matter of the loop end marker being visually placed at the wrong sample position, BUT enabling pingpong loop really should be perceived as an octave higher. So it’s something strange going on with the sample values and loop points.
Maybe something with a bug in the calculation of the “phase accumulator” in sample playback with pingpong? I guess the wizards will bring clarity.
1 sample at the end of the loop , it’s not skipped ( see scope )
Or draw two samples like this
Or draw just one sample before the last one like this , if you play higher up the keyboard you won’t even hear it
That might be expected though, during “sample-and-hold” resampling? It could theoretically miss information at high pitches or certain interferences with the master freq. (A-7 is only 12.5 samples per period at 44khz, for example)
Yes. I put 10 cents on some expression having an off-by-one error in relation to accumulating the playback position. Bets are open!
Ah, I get the issue now.. it’s quite simple. The last sample is only played once when looping. Is this logical/preferred?
I had a look at how milkytracker (xm) handles PingPong-loops. There, the last sample is played twice (forward and “back”) when looping, which I believe is more “correct”.
EDIT: I believe it plays the last sample once, when loop end is at the last waveform position. But it plays the last sample twice when the loop end is not at the last waveform position. A bit too unexpected imho. A quick workaround is to do some manual labour and pad your waveform with one extra sample after the loop.