(
SynthDef(\wtable_vosc_dual, {
	var env, sig, freq, buf, wtmod, wtpos;

	var wtbufnumRange = [ ~wtbufnums.minItem, ~wtbufnums.maxItem ];

	// Main controls
	var gate    = \gate.kr(1);
	freq        = \freq.kr(220);
	buf         = \bufn.kr(wtbufnumRange[0]);
	wtmod       = \wtmodbufn.kr(wtbufnumRange[1]);

	// Envelope
	env = EnvGen.kr(
		Env.perc(
			\attack.kr(0.1),
			\release.kr(1.0)
		),
		gate,
		doneAction: 2
	).lag(\envLag.kr(0.1));

	// Wavetable oscillator modulation
	wtpos = VOsc.ar(
		wtmod,
		\wtmodfreq.kr(2),
		\phase.kr(0),
		\wtmodamp.kr(1)
	)
	+ env.pow(1.4)
	+ buf;

	wtpos = wtpos.lag(1.8).mod(wtbufnumRange[1] - wtbufnumRange[0]) + wtbufnumRange[0];

	// Final signal
	sig = VOsc.ar(wtpos, freq, \phase.kr(0), 1) * env * \amp.kr(0.2);

	// Output
	Out.ar(\out.kr(0), sig ! 2);
}).add;
)
