Advertisement
Guest User

Untitled

a guest
Oct 20th, 2015
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. (
  2. SynthDef(\gen, {
  3.   |freq=440, amp=0.2, range=10|
  4.   Out.ar(0, Gendy1.ar(minfreq: freq-range, maxfreq: freq+range,mul:amp))
  5. }).add;
  6.  
  7. SynthDef(\sine, {
  8.   |freq=440, amp=0.2, range=10|
  9.   Out.ar(0,
  10.     SinOsc.ar(
  11.       freq: freq + SinOsc.kr(
  12.         Rand(freq*0.5,freq*2),
  13.         mul:range),
  14.       mul:amp))
  15. }).add;
  16. )
  17.  
  18. (
  19. ~task_gen = {
  20.     |gC, spawnrate, spawnnum, length, type|
  21.  
  22.   var spawnMod = spawnrate / length;
  23.     Task.new({
  24.     var globCenter = gC;
  25.  
  26.         spawnnum.do {
  27.             var t = Task({
  28.                 var nuamp, center = globCenter + 10.rand2, range = 10;
  29.  
  30.                 length.do {
  31.                     var synth = Synth(type,
  32.             [\freq, center + range.rand2,
  33.               \amp, 0.0,
  34.               \range, 20.rand2
  35.           ]);
  36.  
  37.                     length.do {
  38.                         |i|
  39.                         nuamp = i.asFloat / (length.asFloat *10);
  40.  
  41.                         //nuamp.postln;
  42.                         synth.set("amp", nuamp);
  43.                         0.01.wait;
  44.                     };
  45.  
  46.                     Interval(length, 0, -1).do {
  47.                         |i|
  48.                         nuamp = i.asFloat / (length.asFloat*10);
  49.  
  50.                         //nuamp.postln;
  51.                         synth.set("amp", nuamp);
  52.                         0.01.wait;
  53.                     };
  54.  
  55.                     synth.free;
  56.                 };
  57.             });
  58.             t.play;
  59.  
  60.             spawnrate.wait;
  61.             globCenter = globCenter + 10.rand2;
  62.       length = length - 1;
  63.       spawnrate = spawnrate - spawnMod;
  64.         };
  65.     });
  66. };
  67. )
  68.  
  69. (
  70. ~gen_func = {
  71.   |step, start, range|
  72.   {
  73.     |i|
  74.     var rate = [3.0,4.0,5.0].choose;
  75.     var num = [10, 20].choose;
  76.     var len = Array.fill(20, {|i| 10 + i}).choose;
  77.     var center = Array.series(range / step, start, step).choose.midicps;
  78.     var type = [\sine,\gen].choose;
  79.     var task = ~task_gen.value(center, rate, num, len, type);
  80.  
  81.     task.play;
  82.     i.wait;
  83.   }
  84. };
  85. )
  86.  
  87. (
  88. ~task = {
  89.   |numtimes|
  90.   Task.new({
  91.     var step = 5, start = 60, range = 40;
  92.  
  93.     numtimes.do {
  94.       [1.0,2.0,3.0].do(~gen_func.value(step,start,range));
  95.     }
  96.   });
  97. }
  98. )
  99.  
  100. ~task.value(10).play;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement