Strange behavour of BufRd with Phasor and Select

Hi, I am encountering a strange behaviour of BufRd in combination with Select and Phasor that results in whining noise.

I use a sequence of filter frequencies for the left and right channels.
the sequence is driven by BufRd’s Phasor as an index for Select.ar.

With two channel WhiteNoise.ar and using the Phasor.ar for Select.ar everything works fine.

(
// actually i use an stereo file
~buf = Buffer.read(s, Platform.resourceDir +/+ "sounds/a11wlk01-44_1.aiff");

~frequencies = [[5000, 15000],[2000, 5000],[200, 2000],[20, 200]];

Ndef(\x).clear;
Ndef(\x,{
	var phasor, sig, src, segment, hi,lo;

	phasor = Phasor.ar(0,rate: BufRateScale.kr(~buf.bufnum) * 1, start: 0, end: BufFrames.kr(~buf.bufnum));

	// causes glitchy high whine with BufRd, ok with noise ugen
	segment = ((phasor/BufFrames.kr(~buf.bufnum)) * 4);

	//
	// segment = 3;

	// sig = BufRd.ar(2, ~buf.bufnum, phasor,loop: 1);
	sig = WhiteNoise.ar(0.7)!2;

	#hi,lo = Select.ar(segment, DC.ar(~frequencies) );
	sig[0] = HPF.ar(sig[0], hi );
	sig[0] = LPF.ar(sig[0], lo );

	#hi,lo = Select.ar(segment, DC.ar(~frequencies.reverse) );
	sig[1] = HPF.ar(sig[1], hi );
	sig[1] = LPF.ar(sig[1], lo );

	sig = sig.clip(-1,1);
	// sig = sig.clip(-0.3,0.3);
	Out.ar(0,sig);
}).play;
)

With a stereo wav file and a fixed number for Select.ar also.

(
// actually i use an stereo file
~buf = Buffer.read(s, Platform.resourceDir +/+ "sounds/a11wlk01-44_1.aiff");

~frequencies = [[5000, 15000],[2000, 5000],[200, 2000],[20, 200]];

Ndef(\x).clear;
Ndef(\x,{
	var phasor, sig, src, segment, hi,lo;

	phasor = Phasor.ar(0,rate: BufRateScale.kr(~buf.bufnum) * 1, start: 0, end: BufFrames.kr(~buf.bufnum));

	// causes glitchy high whine with BufRd, ok with noise ugen
	// segment = ((phasor/BufFrames.kr(~buf.bufnum)) * 4);

	//
	segment = 1;

	sig = BufRd.ar(2, ~buf.bufnum, phasor,loop: 1);
	// sig = WhiteNoise.ar(0.7)!2;

	#hi,lo = Select.ar(segment, DC.ar(~frequencies) );
	sig[0] = HPF.ar(sig[0], hi );
	sig[0] = LPF.ar(sig[0], lo );

	#hi,lo = Select.ar(segment, DC.ar(~frequencies.reverse) );
	sig[1] = HPF.ar(sig[1], hi );
	sig[1] = LPF.ar(sig[1], lo );

	sig = sig.clip(-1,1);
	// sig = sig.clip(-0.3,0.3);
	Out.ar(0,sig);
}).play;
)

But using Phasor.ar with Select.ar and BufRd.ar I get a high pitched whining noise.

(
// actually i use an stereo file
~buf = Buffer.read(s, Platform.resourceDir +/+ "sounds/a11wlk01-44_1.aiff");

~frequencies = [[5000, 15000],[2000, 5000],[200, 2000],[20, 200]];

Ndef(\x).clear;
Ndef(\x,{
	var phasor, sig, src, segment, hi,lo;

	phasor = Phasor.ar(0,rate: BufRateScale.kr(~buf.bufnum) * 1, start: 0, end: BufFrames.kr(~buf.bufnum));

	// causes glitchy high whine with BufRd, ok with noise ugen
	segment = ((phasor/BufFrames.kr(~buf.bufnum)) * 4);
	// segment = 1;

	sig = BufRd.ar(2, ~buf.bufnum, phasor,loop: 1);
	// sig = WhiteNoise.ar(0.7)!2;

	#hi,lo = Select.ar(segment, DC.ar(~frequencies) );
	sig[0] = HPF.ar(sig[0], hi );
	sig[0] = LPF.ar(sig[0], lo );

	#hi,lo = Select.ar(segment, DC.ar(~frequencies.reverse) );
	sig[1] = HPF.ar(sig[1], hi );
	sig[1] = LPF.ar(sig[1], lo );

	// sig = sig.clip(-1,1);
	sig = sig.clip(-0.06,0.06);
	Out.ar(0,sig);
}).play;
)

i just dont see why ?

ok. it dosent like

segment = ((phasor/BufFrames.kr(~buf.bufnum)) * 4);

nor

segment = ((phasor/~buf.numFrames) * 4);

but a fixed number would work

segment = ((phasor/107520) * 4);

a11wlk01-44_1.aiff = ~buf.numFrames = 107520

somehow it interfears with BufRd.ar. WhiteNoise.ar(0.7) would work ?!

(
// actually i use an stereo file
~buf = Buffer.read(s, Platform.resourceDir +/+ "sounds/a11wlk01-44_1.aiff");

~frequencies = [[5000, 15000],[2000, 5000],[200, 2000],[20, 200]];

Ndef(\x).clear;
Ndef(\x,{
	var phasor, sig, src, segment, hi,lo;

	phasor = Phasor.ar(0,rate: BufRateScale.kr(~buf.bufnum) * 1, start: 0, end: BufFrames.kr(~buf.bufnum));

	// causes glitchy high whine with BufRd, ok with noise ugen
	segment = ((phasor/107520) * 4);
	// segment = ((phasor/BufFrames.kr(~buf.bufnum)) * 4);
	// segment = 1;

	sig = BufRd.ar(2, ~buf.bufnum, phasor,loop: 1);
	// sig = WhiteNoise.ar(0.7)!2;

	#hi,lo = Select.ar(segment, DC.ar(~frequencies) );
	sig[0] = HPF.ar(sig[0], hi );
	sig[0] = LPF.ar(sig[0], lo );

	#hi,lo = Select.ar(segment, DC.ar(~frequencies.reverse) );
	sig[1] = HPF.ar(sig[1], hi );
	sig[1] = LPF.ar(sig[1], lo );

	// sig = sig.clip(-1,1);
	sig = sig.clip(-1,1);
	Out.ar(0,sig);
}).play;
)