Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (
- SynthDef(\gen, {
- |freq=440, amp=0.2, range=10|
- Out.ar(0, Gendy1.ar(minfreq: freq-range, maxfreq: freq+range,mul:amp))
- }).add;
- SynthDef(\sine, {
- |freq=440, amp=0.2, range=10|
- Out.ar(0,
- SinOsc.ar(
- freq: freq + SinOsc.kr(
- Rand(freq*0.5,freq*2),
- mul:range),
- mul:amp))
- }).add;
- )
- (
- ~task_gen = {
- |gC, spawnrate, spawnnum, length, type|
- var spawnMod = spawnrate / length;
- Task.new({
- var globCenter = gC;
- spawnnum.do {
- var t = Task({
- var nuamp, center = globCenter + 10.rand2, range = 10;
- length.do {
- var synth = Synth(type,
- [\freq, center + range.rand2,
- \amp, 0.0,
- \range, 20.rand2
- ]);
- length.do {
- |i|
- nuamp = i.asFloat / (length.asFloat *10);
- //nuamp.postln;
- synth.set("amp", nuamp);
- 0.01.wait;
- };
- Interval(length, 0, -1).do {
- |i|
- nuamp = i.asFloat / (length.asFloat*10);
- //nuamp.postln;
- synth.set("amp", nuamp);
- 0.01.wait;
- };
- synth.free;
- };
- });
- t.play;
- spawnrate.wait;
- globCenter = globCenter + 10.rand2;
- length = length - 1;
- spawnrate = spawnrate - spawnMod;
- };
- });
- };
- )
- (
- ~gen_func = {
- |step, start, range|
- {
- |i|
- var rate = [3.0,4.0,5.0].choose;
- var num = [10, 20].choose;
- var len = Array.fill(20, {|i| 10 + i}).choose;
- var center = Array.series(range / step, start, step).choose.midicps;
- var type = [\sine,\gen].choose;
- var task = ~task_gen.value(center, rate, num, len, type);
- task.play;
- i.wait;
- }
- };
- )
- (
- ~task = {
- |numtimes|
- Task.new({
- var step = 5, start = 60, range = 40;
- numtimes.do {
- [1.0,2.0,3.0].do(~gen_func.value(step,start,range));
- }
- });
- }
- )
- ~task.value(10).play;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement