Volume - routine

Pan2, Balance2

You are using a 2‑channel signal together with Pan2:

...
sig = PlayBuf.ar(
		numChannels: 2,
...
sig = Pan2.ar(sig
...

but for stereo input Balance2 is usually the better choice.

See Quick stereo pan question


ir, kr, ar

...
rate: BufRateScale.ir(buf) * \rate.ir(10),
...
sig = Pan2.ar(sig, \pan.ir(0), \amp.ir(0.9));
...

Also, .ir is appropriate only when you do not need to control a parameter while the Synth is running. To control parameters of a running Synth, .kr is generally the better choice, and .ar is used when audio-rate modulation or very subtle, sample-accurate changes are required.

(
s.waitForBoot {
	SynthDef(\playa, {
		var buf = \buf.kr(0);
		var rate = BufRateScale.kr(buf) * \rate.kr(10);
		// var rate = BufRateScale.kr(buf) * \rate.ir(10);
		var env = Env([0,1, 1, 0], [\atk.kr(0.001), \sust.kr(1), \rel.kr(3)], -2);
		var sig = PlayBuf.ar(2, buf, rate, 1, \start.kr(0), \loop.kr(0));
		env = env.ar(Done.freeSelf);
		sig = sig * env;
		sig = Balance2.ar(sig[0], sig[1], \pan.kr(0), \amp.kr(0.9));
		// sig = Balance2.ar(sig[0], sig[1], \pan.ir(0), \amp.ir(0.9));
		Out.ar(\out.kr(0), sig);
	}).add;
	
	~buf = Buffer.read(s, ExampleFiles.sinedPink);
	~bufSwap = Buffer.readChannel(s, ExampleFiles.sinedPink, channels: [1, 0]);
	
	s.sync;
	
	fork { 
		100.do { |i|
			var duration = 0.2;
			Synth(\playa, [
				buf: ~buf, 
				rate: [1/2, 1, 1, 2].pyramid[i % 4] / 4, 
				loop: 1, 
				sust: duration * 0.1,
				rel: 0.1,
				pan: 1.0.rand2,
				amp: (-9, -10.5 .. -15).choose.dbamp
			]);
			duration.wait
		}
	};
	
	fork {
		var synth = Synth(\playa, [buf: ~bufSwap, loop: 1, sust: 20]);
		10.do { |i|
			synth.set(
				\rate, (24 - i).midiratio, // this only works when using .kr
				\amp, [-15, -27][i % 2].dbamp // this only works when using .kr
			);
			1.wait
		}
	}
}
)

Could you read the following draft, which I intend to include as a guide in the next version of SC? It is not final yet, so there may be many inaccuracies:
github.com/supercollider/supercollider

You can leave feedback here or there.