Skip to content

The script we tried with dakis+alex


/* (IZ 2007-10-27) {
Play a selected buffer with single - shot playbuf SynthDef, triggering it multiple times at random interval and random rates, random starting point and random duration, within controllable range parameters.
 
b = Buffer.read(Server.local, "./sounds/a11wlk01.wav");
 
(
a = SynthDef("playbuf_segment", { |
  out = 0,
  bufnum = 0,
  startPos = 0,
  duration = 1,
  rate = 1,
  amp = 1
  |
  var src, env;
  src = PlayBuf.ar(1, bufnum, rate * BufRateScale.kr(bufnum),
    1, startPos * BufFrames.kr(bufnum), 0);
  env = EnvGen.kr(Env([0, 1, 1, 0], [0.03, BufDur.kr(bufnum) / rate * duration - 0.06, 0.03]),
    timeScale: 1 / rate, doneAction: 2);
//  FreeSelfWhenDone.kr(src);
  Out.ar(out, amp * env * src);
}).play(Server.local, [\bufnum, b.bufnum, \startPos, 0.5, \duration, 0.03, \rate, 0.5]);
)
 
} */
 
var samples;
samples = Samples.all[~script.session.server];
 
~controlSpecs = [
[ 'out', 0, 4095, 'linear', 1, 0 ],
[ 'bufnum', 0, 1023, 'linear', 1, 0 ],
[ 'rateMin', 0.125, 8, 'exp', 0, 1 ],
[ 'rateRange', 0.0, 8, 'linear', 0, 1 ],
[ 'ampMin', 0, 1, 'amp', 0, 0.1 ],
[ 'ampRange', 0, 1, 'amp', 0, 0.5 ],
[ 'waitMin', 0.1, 120, 'exponential', 0, 0.5],
[ 'waitRange', 0.0000001, 120, 'exponential', 0, 1.5],
[ 'durMin', 0.001, 10, 'exponential', 0, 0.1],  // max 10 repetitions
[ 'durRange', 0, 10, 'linear', 0, 0.2],  // + max 10 repetitions random variation
 
];
 
~script.routine {
  var sample, sampleRate, sample_dur, play_dur, bufnum;
  loop {
    bufnum = ~bufnum;
    Synth("playbuf_segment", [
      'out', ~out,
      'bufnum', ~bufnum,
      'rate', ~rateMin.asFloat rrand: (~rateMin + ~rateRange),
      'startPos', 0.0 rrand: 1.0,
      'length', ~durMin rrand: (~durMin + ~durRange),
      'amp', ~ampMin rrand: (~ampMin + ~ampRange)
    ]);
    wait(~waitMin rrand: (~waitMin + ~waitRange));
  };  
};

Post a Comment

Your email is never published nor shared. Required fields are marked *
*
*