View this PageEdit this PageUploads to this PageHistory of this PageTop of the SwikiRecent ChangesSearch the SwikiHelp Guide

time slot walks under mouse control

//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
*/


Link to this Page