An old post, but just spotted:
There are limitations to the length of the audio file that can be loaded into ram and played (90sec) in 32-bit Pd, that can be overcome with some difficulty...
SuperCollider also uses 32-bit floats for audio processing, and our documentation notes that BufRd (analogous to [tabread4~]) can go up to about 6 minutes at 44.1 kHz.
Possibly this is because SC provides a Phasor that is designed for buffer reading, where the default increment is 1.0. Pd's [phasor~] calculates the increment as frequency / sampleRate (the nearest analog in SC is LFSaw, not Phasor).
When accumulating 1's, the output value will be exact up to the 24-bit mantissa precision (23 mantissa bits are stored, plus one implicit "1" to the left of the binary point). Binary floating-point values are exact when the denominator of the fraction is a power of two. The denominator of an integer value is 1 == 2 ^ 0, so, no problem up to (2 ** 24) - 1.
Dividing by sample rate to get the increment will introduce inaccuracy, but it is not the only way to produce buffer indices.
I tested at 48 kHz with a 5'30" sine tone, written into a file. If I get the sample positions from [rpole~] accumulating 1.0, it sounds clean, even starting at around the 5 minute mark.