Download as txt, pdf, or txt
Download as txt, pdf, or txt
You are on page 1of 2

//make a SynthDef for a short slice of sound extracted from a buffer starting at

chosen position
(
SynthDef(\shortsample,{arg buffer, dur=0.05, pos = 0.0, amp= 0.5, pan= 0.0;
var env, source;

source = PlayBuf.ar(1,buffer,startPos:pos*BufFrames.ir(buffer));

env = EnvGen.ar(Env([0,1,1,0],[0.01,dur,0.01]),doneAction:2);

Out.ar(0,Pan2.ar(env*source*amp,pan))

}).add
)

//need a sound file to grab bits of sound from


b = Buffer.read(s,Platform.resourceDir +/+"sounds/a11wlk01.wav");

//test the SynthDef:


Synth(\shortsample, [\buffer,b,\pos,0.5,\dur,0.05])

//schedule Synths over time, increase duration with count


(
{
10.do{arg count;
Synth(\shortsample, [\buffer,b,\pos,0.5,\dur,0.1*count]);
0.05.wait;
}
}.fork
)

//another example, with random selection of durations, and envelope control of


starting pos
(
var grainspacing = 0.05;
var env = Env([0,1,0.3,1.0],[2.0,2.5,0.5]); //use a language side envelope to vary
position

{
100.do{arg count;
var time = count*grainspacing;

Synth(\shortsample, [\buffer,b,\pos,env.at(time),\dur,rrand(0.01,0.05)]);
grainspacing.wait;
}
}.fork
)

//load another buffer


c = Buffer.read(s,Platform.resourceDir +/+"sounds/SinedPink.aiff");

//granular cross fade; as increase density of grains from one, reduce from another
(done in a basic probabilistic way here). Doesn't sound great with these two
sounds, but could certainly be improved by exploring other sources and mixing
strategies
(
var grainspacing = 0.05;
var mixprobability = Env([0.0,1.0,0.0],[3.0,2.0]); //use a language side envelope
to vary position

{
100.do{arg count;
var time = count*grainspacing;

Synth(\shortsample, [\buffer,if(mixprobability.at(time).coin,c,b),\pos,time*0.1,\
dur,grainspacing*4.0,\amp, 0.25]);
grainspacing.wait;
}
}.fork
)

You might also like