Oh, but we don't have to use Demand
at all do we 😃
(
// Buffers/Sound files loaded from dictionary
SynthDef(\samplePlaying, {
arg atk=0, sus=0, rel=3, c1=1, c2=(-1),
firstbuf=0, rate=1, spos=0, freq=440, rq=1, bpfmix=0,
pan=0, amp=1, out=0;
var sig, env, sound, sample;
var trig;
var buffersAvailable=(0..19).scramble;
var bufseq;
trig = DigitalIn.kr(0);
bufseq = Dseq( buffersAvailable, inf );
/////////////////////
sample = AnalogIn.ar(0).linlin(0.01, 1, 0, 19); // Pick the buffer, based on Analog sensor
/////////////////////
env = EnvGen.kr(Env([0,1,1,0], [atk, sus, rel], [c1,0,c2]), trig );
sig = PlayBuf.ar(1, sample, rate*BufRateScale.ir(sample), trig, startPos:spos);
sig = XFade2.ar(sig, BPF.ar(sig, freq, rq, 1/rq.sqrt), bpfmix*2-1);
sig = sig * amp;
sig = Pan2.ar(sig, pan, amp);
Out.ar(out, sig);
}).send(s);
);