‹ More Low Life Hamburg ›

hansm-bird

2010-11-30 03:56 supercollider

clean-up #15:

This birdcall synthesis tutorial by Andy Farnell I found very good when it was published. And as I wanted to learn more by synthetic bird songs I ported the Pure Data patches. So here is a version of hansm-bird-control.pd for SuperCollider.

/*
hansm-bird-control.pd
http://obiwannabe.co.uk/tutorials/html/tutorial_birds.html
SC port by redFrik 080430
*/
s.boot;

(
SynthDef(\birdCall, {|
  out= 0, pan= 0, gate= 1, freq= 0, amp= 0.5, atk= 0.5, dcy= 0.5,
  fmod1= 1, atkf1= 0.5, dcyf1= 0.5,
  fmod2= 1, atkf2= 0.5, dcyf2= 0.5,
  amod1= 1, atka1= 0.5, dcya1= 0.5,
  amod2= 1, atka2= 0.5, dcya2= 0.5|
  var env, freq1, freq2, amp1, amp2, fmod, amod, z;
  env= EnvGen.ar(Env([0, amp, 0], [atk, dcy], -4), gate, timeScale:0.9, doneAction:2);
  freq1= EnvGen.ar(Env([0, fmod1, 0], [atkf1, dcyf1], -4), 1, 3000, 0, 0.9);
  freq2= EnvGen.ar(Env([0, fmod2, 0], [atkf2, dcyf2], -4), 1, 3000, 0, 0.9);
  amp1= EnvGen.ar(Env([0, amod1, 0], [atka1, dcya1], -4), 1, 1, 0, 0.9);
  amp2= EnvGen.ar(Env([0, amod2, 0], [atka2, dcya2], -4), 1, 1, 0, 0.9);
  fmod= SinOsc.ar(freq1, 0, amp1, 1);
  amod= 1-SinOsc.ar(freq2, 0, amp2);
  z= SinOsc.ar(freq*7000+300*fmod, 0, amod);
  Out.ar(out, Pan2.ar(z, pan, env));
}).add;
f= {|freq, atk, dcy, fmod1, atkf1, dcyf1, fmod2, atkf2, dcyf2, amod1, atka1, dcya1, amod2, atka2, dcya2|
  Synth(\birdCall, [\freq, freq, \atk, atk, \dcy, dcy,
    \fmod1, fmod1, \atkf1, atkf1, \dcyf1, dcyf1,
    \fmod2, fmod2, \atkf2, atkf2, \dcyf2, dcyf2,
    \amod1, amod1, \atka1, atka1, \dcya1, dcya1,
    \amod2, amod2, \atka2, atka2, \dcya2, dcya2]);
};
)
(
//triple-tailed-tree-troubler
f.value(0.387755, 0.0204082, 0.204082,
  0.367347, 0.571429, 0.734694,
  0.918367, 1, 0.77551,
  0.571429, 0.367347, 0.22449,
  0.0204082, 0.183673, 0.44898);
)
(
//speckled-throated-spew
f.value(0.183673, 0.591837, 0.387755,
  0.0104082, 0.530612, 0.346939,
  0.244898, 0.55102, 0.122449,
  0.387755, 1, 0.612245,
  0.346939, 0.816327, 0.653061);
)
(
//lesser-spotted-grinchwarbler
f.value(0.55102, 0.591837, 0.387755,
  0.0716327, 0.0204082, 0.346939,
  0.0204082, 0.55102, 0.122449,
  0.632653, 1, 0.612245,
  0.346939, 0.816327, 0.653061);
)
(
//long-toed-mudhopper
f.value(0.163265, 0.22449, 0.183673,
  0.00306122, 0.122449, 1,
  0.0612245, 1, 0.77551,
  0.979592, 0.204082, 0.734694,
  1, 0.142857, 0.612245);
)
(
//yellow-yiffled-yaffle
f.value(0.0204082, 0.367347, 0.183673,
  0.0612245, 0, 1,
  0.285714, 0.22449, 0.489796,
  0.367347, 0.387755, 0.734694,
  0.204082, 0.428571, 0.142857);
)
(
//pointy-beaked-beetlefiend
f.value(0.428571, 0.204082, 0.489796,
  0.0204082, 0.795918, 0.591837,
  0.285714, 0.22449, 0.489796,
  0.204082, 0.836735, 0.734694,
  0.77551, 0.428571, 0.142857);
)
(
//african-boojuboolubala
f.value(0.306122, 0.959184, 0.0408163,
  1, 0, 0.591837,
  0.285714, 0.22449, 0.489796,
  0.204082, 0.836735, 0.734694,
  0.77551, 0.428571, 0.142857
);
)
(
//common-muckoink
f.value(0.0204082, 0.8, 0.0816327,
  0.0204082, 0.001, 0.99,
  0.0204082, 0.01, 1,
  1, 0.142857, 0.734694,
  1, 0.0612245, 0.530612);
)

‹ More Low Life Hamburg ›