/* Lessons learnt from this session. (a) instead of teaching a synth to handle both mono and stere buffers, you could write a function which loads sound into stereo, duplicating the mono if needed (b) it's not very convoluted to load all sounds in a folder into a dictionary, indexed by the filenames.. (filename:buffer-with-sound-from-that-file,...) (c) [["foo",12],["bar",42]].flat -> [ f, o, o, 12, b, a, r, 42 ] */ s.boot; ( SynthDef(\samp, { arg out = 0, amp, buf; Out.ar( out, amp * PlayBuf.ar(2, buf, BufRateScale.kr(buf)) ) }).add; ) ~loadStereo = {|file|Buffer.readChannel(s,file,channels:({|i|i}!SoundFile.openRead(file).numChannels).lace(2))} ~pads = Dictionary.newFrom("/Volumes/REASON/legowelt/simple/*.wav".pathMatch.collect{|f|[f.basename.splitext@0,~loadStereo.(f)]}.flatten) b=(amp:0.8,buf:~pads["kick"],instrument:\samp) b.play b=Pcollect({|e|e[\buf]=~pads[e[\pad]];e.postln;e}, Pbind(\amp,0.8,\instrument,\samp,\pad,Pseq(~pads.keys.asArray))) b.record("/tmp/2018-10-16.wav",headerFormat:"WAV") ~pads.keys.asArray // -> [ cymbal, snare, kick, chat ]