Class Implementation Error Message

the code:

~numChannels = 2;
s.options.numOutputBusChannels_(~numChannels);
~filePath = "/Users/keenanmccracken/Desktop/07051161.wav";

s.waitForBoot{
	fork{
		// b = Buffer.read(s, "~/testsound/harmonica1.wav".asAbsolutePath).normalize;
		b = Buffer.read(s, ~filePath.asAbsolutePath).normalize;

		s.sync; "Done loading buffer".postln;
	}
}
)
(
Ndef(\cloud, {|gdur=0.1, buffer, density=1.0, rate=0.95, shape=0.5, ratespread=0.0, pos=0.25, posspread=0.0, rand=1.0, overlap=0.0, amp=0.5|
	var cloud;
	var numGrains=4;
	var numBufChans=2;

	// Normalize params
	density = density.linexp(0.0,1.0,0.0001,100.0);
	rate = rate.linexp(0.0,1.0,0.01,10.0);

	cloud = Array.fill(numGrains, {|gNum|
		var coef=gNum+1/numGrains;

		// Add tiny difference to each grain generator
		var weight = Rand(0.9999,1.0);

		var finalgdur = gdur * weight * overlap.linlin(0.0,1.0,1.0,4.0);

		// Deterministic
		var imp = Impulse.ar(density, phase: coef);

		// Random impulses
		var dust = Dust2.ar(density);

		// Crossfade between them
		var trig = XFade2.ar(imp, dust, rand.linlin(0.0,1.0,-1.0,1.0));

		// Grain envelope

		// Soft envelope
		var sineenv = EnvGen.ar(
			Env.sine,
			trig,
			timeScale: finalgdur
		);

		// Hard envelope
		var clickenv = EnvGen.ar(
			Env([0,1,1,0], [0,1,0]),
			trig,
			timeScale: finalgdur
		);

		// Faded
		var env = XFade2.ar(sineenv, clickenv, shape.linlin(0.0,1.0,-1.0,1.0));

		// Calculate position in buffer
		var position = (weight * pos + (posspread * coef)).wrap(0.0,1.0) * BufFrames.ir(buffer);

		// Calculate playback rate
		var playbackrate =  weight * rate * BufRateScale.ir(buffer);
		var sig = PlayBuf.ar(
			numBufChans,
			buffer,
			ratespread * (gNum + 1) + 1 * playbackrate,
			trig,
			position,
			loop: 0.0,
			doneAction: 0
		);

		LeakDC.ar(env * sig)
	});

	// Normalize sound levels a bit
	cloud = cloud / numGrains;
	cloud = cloud * amp;

	Splay.ar(cloud.flatten)
}).set(\buffer, b, \wet1, 0.35).play;

Ndef(\cloud)[1] = \filter -> {|in, verbtime=10, room=5|
	JPverb.ar(in, verbtime, 0, room);
};
)

// Gui
(
Spec.add(\pos, ControlSpec( minval: 0.0, maxval: 1.0, warp: \lin, step: 0.0, default: 0.5));
Spec.add(\density, ControlSpec( minval: 0.0, maxval: 1.0, warp: \lin, step: 0.0, default: 0.5));
Spec.add(\rate, ControlSpec( minval: 0.0, maxval: 1.0, warp: \lin, step: 0.0, default: 0.5));
Spec.add(\shape, ControlSpec( minval: 0.0, maxval: 1.0, warp: \lin, step: 0.0, default: 0.5));
Spec.add(\ratespread, ControlSpec( minval: 0.0, maxval: 1.0, warp: \lin, step: 0.0, default: 0.5));
Spec.add(\posspread, ControlSpec( minval: 0.0, maxval: 1.0, warp: \lin, step: 0.0, default: 0.5));
Spec.add(\rand, ControlSpec( minval: 0.0, maxval: 1.0, warp: \lin, step: 0.0, default: 0.5));
Spec.add(\overlap, ControlSpec( minval: 0.0, maxval: 1.0, warp: \lin, step: 0.0, default: 0.5));
Spec.add(\gdur, ControlSpec( minval: 0.001, maxval: 1.0, warp: \lin, step: 0.0, default: 0.1));
Spec.add(\wet1, ControlSpec( minval: 0.0, maxval: 1.0, warp: \lin, step: 0.0, default: 0.5));

Ndef(\cloud).gui;
)

// Add some modulation
(
Ndef(\saw, {|f=0.001| LFSaw.kr(f).unipolar}).copy(\saw2).set(\f, 0.001);
Ndef(\sine, {|f=0.0151| SinOsc.kr(f).unipolar}).copy(\sine2).set(\f, 0.093211);

Ndef(\cloud).map(\posspread, Ndef(\saw), \stochastic, Ndef(\saw2), \rand, Ndef(\sine), \density, Ndef(\sine2));

And the error message I get:

Instance of Buffer {    (0x11d947af8, gc=20, fmt=00, flg=00, set=03)
  instance variables [8]
    server : instance of Server (0x1189a1548, size=30, set=5)
    bufnum : Integer 0
    numFrames : Integer 3271044
    numChannels : Integer 2
    sampleRate : Float 44100.000000   00000000 40E58880
    path : "/Users/keenanmccracken/Desktop/07051161.wav"
    startFrame : Integer 0
    doOnInfo : nil
}
ARGS:
PATH: /Users/keenanmccracken/Desktop/madsgran.scd
CALL STACK:
	DoesNotUnderstandError:reportError
		arg this = <instance of DoesNotUnderstandError>
	Nil:handleError
		arg this = nil
		arg error = <instance of DoesNotUnderstandError>
	Thread:handleError
		arg this = <instance of Thread>
		arg error = <instance of DoesNotUnderstandError>
	Object:throw
		arg this = <instance of DoesNotUnderstandError>
	Object:doesNotUnderstand
		arg this = <instance of Buffer>
		arg selector = 'rate'
		arg args = [*0]
	< FunctionDef in Method ProxyNodeMap:controlNames >
		arg key = 'buffer'
		arg value = <instance of Buffer>
		var rate = nil
	Dictionary:keysValuesArrayDo
		arg this = <instance of ProxyNodeMap>
		arg argArray = [*32]
		arg function = <instance of Function>
		var i = 8
		var j = 2
		var key = nil
		var val = nil
		var arraySize = nil
	Dictionary:keysValuesDo
		arg this = <instance of ProxyNodeMap>
		arg function = <instance of Function>
	ProxyNodeMap:controlNames
		arg this = <instance of ProxyNodeMap>
		var res = [*1]
	NodeProxy:addNodeMapControlNames
		arg this = <instance of Ndef>
		arg objCtlNames = [*14]
		arg except = [*4]
	NodeProxy:controlKeys
		arg this = <instance of Ndef>
		arg except = [*4]
		arg noInternalKeys = true
		var list = [*0]
	NodeProxy:gui
		arg this = <instance of Ndef>
		arg numItems = nil
		arg bounds = nil
		arg preset = nil
	Interpreter:interpretPrintCmdLine
		arg this = <instance of Interpreter>
		var res = nil
		var func = <instance of Function>
		var code = "(
Spec.add(\pos, ControlSpec..."
		var doc = nil
		var ideClass = <instance of Meta_ScIDE>
	Process:interpretPrintCmdLine
		arg this = <instance of Main>
^^ The preceding error dump is for ERROR: Message 'rate' not understood.
RECEIVER: Buffer(0, 3271044, 2, 44100.0, /Users/keenanmccracken/Desktop/07051161.wav)

just needed a clean reinstall