//time slot walks under mouse control //jrh 2000 ( var path, sf,sr, signal, funk, size, zoom, stream, dstream; var fstream, fpat, pat, dpat, blendpat, blendstream; var pstrange, strange; var arr, n; var w, sv; w = GUIWindow.new("(\\)", Rect.newBy(407, 199, 400, 251)); sv = SignalView.new( w, Rect.newBy(47, 40, 289, 150), nil, -1, 1); path = ":sounds:floating_1"; //replace. sf = SoundFile.new; sf.read(path); signal = sf.data; size = signal.at(0).size; sr = sf.sampleRate; sv.signal_(signal.at(0)); zoom = size / 300; sv.zoom = zoom; funk = { arg start, end, rate=1, sustain, blend; var env, env2, st, en; env = Env.linen(0.01, 0.8, 0.2); env2 = Env.linen(0.02, 0.1, 0.8); st = start*size; en = end*size; PlayBuf.ar(signal, sr, rate, st, st, en) * EnvGen2.kr(env, env2, blend, timeScale: sustain) }; //strange attractor pstrange = { arg inval; Prout({ i = rrand(0.0, 1); loop({ i= inval.poll*i*(1-i); (i).yield; }) }) }; a = [1, 1.3, 0.9, 2, 0.3, 0.9, 1]; pat = Pseq([0, 0.1, 0.2, 0.5, 0, 0.1], inf); dpat = Pseq([0.1, 0.1, 0.01], inf); fpat = Pseq(a, inf); blendpat = Pseq([0, 0, 0, 1, 0.5], inf); stream = pat.asStream; dstream = dpat.asStream; fstream = fpat.asStream; blendstream = blendpat.asStream; { arg synth; var my, mx; my = MouseY.kr(0, 1); mx = MouseX.kr(0, 0.05); strange = pstrange.value(3 + my).asStream; TSpawn.ar({ var st, en, mul; st = stream.next + my.poll; en = st + mx.poll; mul = strange.next; sv.setSelection((st*size).asInteger, (en*size).asInteger); funk.value(st, en, fstream.next, en-st * size / sr, blendstream.next) * mul }, 2, nil, Impulse.ar(8), 0.4) }.play; w.close; ) *****/* authors so far: jrh */ |